문자 찾아 바꾸는 리습에서 attribute 문자가 안되는데 어디를 변경해야 할까요??
컨텐츠 정보
- 133 조회
- 2 댓글
- 0 추천
- 0 비추천
- 목록
본문
아래 리습은 문자를 찾아 바꿔주는 리습입니다.
헌데 문제는 도면안에 있는 속성문자들은 바꿔 주지 못하는데…
속성문자까지도 바꿔 주려면 어느 부분을 수정해야 할까요??
또 지금은 대,소문자를 구분해서 정확히 입력해야만 명령이 수행되는데
대소문자 구분없이 내용만 같으면 인식하여 변경하도록 할 수 있을까요??
조언 부탁드립니다^^
(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 추가.. 하시면 됩니다.