프로그램
캐드 분류

문자 찾아 바꾸는 리습에서 attribute 문자가 안되는데 어디를 변경해야 할까요??

컨텐츠 정보

본문

아래 리습은 문자를 찾아 바꿔주는 리습입니다.

헌데 문제는 도면안에 있는 속성문자들은 바꿔 주지 못하는데…

속성문자까지도 바꿔 주려면 어느 부분을 수정해야 할까요??

또 지금은 대,소문자를 구분해서 정확히 입력해야만 명령이 수행되는데

대소문자 구분없이 내용만 같으면 인식하여 변경하도록 할 수 있을까요??

조언 부탁드립니다^^


(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)
)



 

관련자료

댓글 2

조용!!님의 댓글

(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 추가.. 하시면 됩니다.

여분필드1 여분필드2 여분필드3
전체 69 / 3 페이지
번호
제목
이름
알림 0