아래 리습은 문자를 찾아 바꿔주는 리습입니다.
헌데 문제는 도면안에 있는 속성문자들은 바꿔 주지 못하는데…
속성문자까지도 바꿔 주려면 어느 부분을 수정해야 할까요??
또 지금은 대,소문자를 구분해서 정확히 입력해야만 명령이 수행되는데
대소문자 구분없이 내용만 같으면 인식하여 변경하도록 할 수 있을까요??
조언 부탁드립니다^^
(defun c:fr()
(setq OldTxt (getstring T “nEnter the old text: “)
NewTxt (getstring T “nEnter the new text: “))
(setq ss (ssget “x” ‘((0 . “TEXT,MTEXT”))))
(vl-load-com)
(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)
)
(vl-load-com)
(defun c:fr()
(setq OldTxt (getstring T “nEnter the old text: “)
NewTxt (getstring T “nEnter the new text: “))
(setq ss (ssget “x” ‘((0 . “TEXT,MTEXT”)))); “x” 도면 전체 검색.
;(setq ss (ssget ‘((0 . “TEXT,MTEXT,ATTDEF”)))); ATTDEF 선택가능.
(setq i (sslength ss))
(while (not (minusp (setq i (1- i)))) ;nil 까지. 무한반복.
(setq oText (vlax-ename->vla-object (ssname ss i)))
(setq Txt (vlax-get-property oText ‘TextString))
(setq Txt (strcase Txt));대문자로 변경.
(setq oldTxt (strcase oldTxt))
;(setq Txt (strcase Txt T));소문자로 변경.
;(setq oldTxt (strcase oldTxt t))
(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)
)
;맘에 안드실듯 하네요..
;Today is Sunday
;new Monday
;old sunday
;-> TODAY IS Monday
;설명이 어렵네요..
;new는 new그대로.. 나옵니다.
;바꾸실려면… newTxt 를 (strcase newTxt) or T 추가.. 하시면 됩니다.
감사합니다~^^
근데 속성 문자는 안되네용^^;;