Jump to content

Recommended Posts

Posted
17 minutes ago, PGia said:

Hi @GLAVCVS

 

I'm testing your code. But when I zoom in/out during the command, the switch from crosshair to pickbox doesn't work as expected.

Is there a way to fix this?

Hello PGia
I improvised this code and didn't do enough testing.
That problem is easily solved. Just move the line of code '(setq tam...)' immediately below the beginning of the '(while (and (setq l...)' loop.

Posted

I'll update all of this to also allow you to enter the initial reference number from the keyboard, as @Nikon wanted.
I'll post it soon.

  • Like 1
  • Thanks 1
Posted
On 4/17/2025 at 3:08 AM, GLAVCVS said:

I'll update all of this to also allow you to enter the initial reference number from the keyboard, as @Nikon wanted.
I'll post it soon.

YOUR CODE IS GREAT,It's more than I needed, Please modify it so that it numbers "ATTDEF" please

Posted

Hi

In this new version, it's possible to enter the text before the first text you want to insert from the keyboard or, as before, select it on the screen.
Additionally, it will now increment numeric, alphabetic, or alphanumeric text strings without any restrictions (except for non-alphanumeric characters, of course).
@leonucadomi As for your suggestion to extend the code's functionality to block attributes, I may do something about this in the future.
However, I'm sure there must be simpler routines that would do the job just as well.
There are several block experts on this forum who will probably have something to say about this.
But if not, I'll try to do it myself.

 

;************************ G L A V C V S *************************
;************************** F E C I T ***************************
(defun c:txtIncrem  (/ tam    capa   ind    para   a	  c	 cl
		       txsel  le     l	    s	   dameTexto
		       obtcad ent    loc    tipC   nC	  ps	 add
		       errores	     error0
		      )
  (defun errores (mens)
    (setq *error* error0)
    (prin1)
  )

  (defun dameTexto (cad / v r l daleVuelta)
    ;;; WRITE HERE THE CODE YOU NEED TO CUSTOMIZE THE TEXT YOU WANT TO ENTER OR CREATE
    (defun daleVuelta (a)
      (cond
        ((and (> a 64) (< a 91)) (if (> (setq a (+ a 1)) 90) (setq a -65) a))
        ((and (> a 96) (< a 123)) (if (> (setq a (+ a 1)) 122) (setq a -97) a))
        ((and (> a 47) (< a 58)) (if (> (setq a (+ a 1)) 57) (setq a -48) a))
      )
    )
    (foreach v (reverse (vl-string->list cad))
      (if (or (not r) (minusp r))
        (setq l (cons (abs (setq r (daleVuelta v))) l))
        (setq l (cons v l))
      )
    )
    (vl-list->string (if (minusp r) (cons (if (= r -48) 49 (car l)) l) l))
  )
    
  (setq	error0	*error*
	*error*	errores
  )

  (princ (setq s "Select PREVIOUS number text or type it... "))
  (while (not para)
    (setq l (grread T 13 2))
    (if (not (listp (cadr l)))
      (if (member (car l) '(2 3 11 25))
	(cond
	  ((or (= (cadr l) 13) (= (car l) 25))
	    (if (and c (not (wcmatch c "*.*")))
	      (setq ind c para T)
	      (if (not c) (setq para T))
	    )
	  )
	  ((> (cadr l) 31)
            (setq c (if c (strcat c (chr (cadr l))) (chr (cadr l))))
	    (prompt (strcat "\r" s c))
	  )
	  ((= (cadr l) 8)
            (if (setq c (if c (substr c 1 (- (strlen c) 1))))
	      (prompt (strcat "\r" s c))
	    )
	  )
	)
      )
      (if (= (car l) 3)
	(if (and (setq e (nentselp (cadr l))) (= (cdr (assoc 0 (setq le (entget (setq e (car e)))))) "TEXT"))
	  (if (not (wcmatch (setq ind (cdr (assoc 1 le))) "*.*"))
	    (setq capa (cdr (assoc 8 le)) a (cdr (assoc 40 le)) cl (cdr (assoc 62 le)) para T)
	    (princ "\n*** The selected object is not valid. Please, try again... ***")
	  )
	)
      )
    )
  )
  (setq para nil)
  (if (not capa)
    (while (not para)
      (if (and (setq e (car (entsel "\nLAYER/HEIGHT: Select a sample text object (ENTER or RIGHT CLICK to type it)... ")))
	       (setq l (entget e))
	  )
	(if (= (cdr (assoc 0 l)) "TEXT")
	  (setq	capa (cdr (assoc 8 l)) a (cdr (assoc 40 l)) para T)
	  (princ "\n*** The selected object is not a TEXT. Please, try again... ***")
	)
	(if (not capa)
	  (if (setq capa (getstring "\nType Layer name: "))
	    (if (tblsearch "layer" capa)  
	      (if (not (setq a (getreal "\nType Height: ")))
		(setq capa (princ "\n*** A valid height has not been specified. Please, type it again... ***") capa nil)
		(setq para T)
	      )	      
	      (setq capa (princ "\n*** Specified layer does not exist. Please, type it again... ***") capa nil)
	    )
	  )
	)	  
      )
    )
  )
  (setq tx (dameTexto ind))
  (while (and (setq l (grread T (if s 4 13) (if s 2 0))) (member (car l) '(5 3)))
    (prompt (strcat "\rSelect text to modify or insert new text  \"" tx "\"  (RIGHT CLICK for exit)"))
    (setq tam (* (getvar "pickbox") (/ (GETVAR "VIEWSIZE") (CADR (GETVAR "SCREENSIZE")))) para nil)
    (if (setq s (ssget "_C" (list (- (car (setq p (cadr l))) tam) (- (cadr p) tam))
			    (list (+ (car p) tam) (+ (cadr p) tam))
		            (list (cons 0 "TEXT"))
		)
	)
      (cond
	((= (car l) 3)
	 (entmod (subst (cons 1 tx) (assoc 1 (setq le (entget (ssname s 0)))) le))
	 (setq tx (dameTexto tx))
	)
;;;	HERE MORE CASES ?...
      )
      (cond
	((= (car l) 3)
	 (entmake (list	'(0 . "TEXT")
			(cons 8 capa)
			(cons 62 (if cl cl 256))
			(cons 40 a)
			(cons 1 tx)
			(cons 10 (list (car p) (cadr p) 0.0))
		  )
	 )
	 (setq tx (dameTexto tx))
	)
;;;	HERE MORE CASES ?...
      )
    )
  )
  (princ)
)

 

  • Like 1
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...