clint0577 发表于 2022-7-6 07:17:34

Find & Replace in current layo

I have 2 things I'm trying to accomplish here. I need to find the the exact text to replace and only in the current layout. For example. Let's say I need to find "Date" but on the same layout I have "date", "Date" and "Date:". So it needs to be case sensitive also. I was using this but it's not case sensitive and also replaces "date" and "Date:" in all layouts. I just need "Date" in the current layout.
 

;Find And Replace(defun C:FAR ()(setq OldTxt (getstring T "\nEnter the old text: ")          NewTxt (getstring T "\nEnter the new text: "))(setq ss (ssget "x" '((0 . "TEXT,MTEXT"))))        (setq i (sslength ss))(while (not (minusp (setq i (1- i))))        (setq oText (vlax-ename->vla-object (ssname ss i)))        (setq Txt (vlax-get-property oText 'TextString))                (if (vl-string-search OldTxt txt)                (progn                        (setq newChg (vl-string-subst NewTxt OldTxt txt))                        (vlax-put-property oText 'TextString newchg)                        (vlax-invoke-method oText 'Update)                )        ))(princ))

Tharwat 发表于 2022-7-6 07:45:19

Hope that your texts are not Annotative ..
 

(defun c:test (/ oldTxt NewTxt ss in en) (if   (and (not          (eq (setq OldTxt (getstring T "\nEnter the old text: ")) "")      )      (not          (eq (setq NewTxt (getstring T "\nEnter the new text: ")) "")      )   )    (if (setq ss (ssget "x"                        (list '(0 . "TEXT,MTEXT")                              (cons 1 OldTxt)                              (cons 410 (getvar 'ctab))                        )               )      )      (repeat (setq in (sslength ss))      (setq en (entget (ssname ss (setq in (1- in)))))      (entmod (subst (cons 1 Newtxt) (assoc 1 en) en))      )    ) ) (princ))

clint0577 发表于 2022-7-6 08:00:26

You Rock!! Thanks!!!

Tharwat 发表于 2022-7-6 08:19:08

 
You're welcome .
页: [1]
查看完整版本: Find & Replace in current layo