1. 컴퓨터 사양 (간략히) : Intel Core2 Duo 3.06GHz, 2.72GB RAM, NVIDIA GeForce9400
2. 캐드버전 과 종류 : 오토캐드2007
3. 운영체제(윈도우)버전과 비트수 : WindowsXP 32비트
4. 보조프로그램 사용유무 : 드림(DREAM)
——————————————————————————–
어떤 영역안에 있는 텍스트만 SeleltionSet으로 지정하고 싶은데요…
(defun c:AT( / sl_Region ptList sl_All sl_Text)
(setq sl_Region (car (entsel “n행정구역 리/동구역 선택:”)))
(seqt ptList ………) ;; <= 1번 : 여기서 위에 선택한 폴리라인 엔티티중 좌표(10번)들을 순환하면서
좌표리스트 지정
(setq sl_All (ssget “wp” ptList) ;; <= 2번 : 영역안의 모든 엔티티 지정
(setq sl_Text(ssget “X” (assoc (0 . “TEXT”))) ;; <= 3번 : 영역안의 모든 엔티티중 TEXT만 지정
);;defun end
이렇게 하면 될것 같은데요
1. 1번처럼 선택한 폴리라인의 전체 좌표들을 리스트로 만들수 는 없나요?
2. 2번처럼 “WP”옵션에 전체좌표리스트를 적용해도 상관없나요. 문제는 지역에 따라 좌표갯수가
아주 많을수 도 있거든요
3. 선택된 엔티티중 텍스트만을 다시 잡을려고 할때 3번과 같이 하면 되나요?
공유
(defun c:ff(/ e ptlst ss)
(setq e(entget(car(entsel ))) ptlst ‘())
(foreach k e
(if (= (car k) 10)
(setq ptlst (append ptlst (list (cdr k))))
)
)
(setq ss (ssget “_WP” ptlst ‘((0 . “TEXT”))))
(sssetfirst ss ss)
)
한번 해보세요 ^^;;
수야12님 고맙습니다. 이렇게 몇줄로 표현가능하디니 놀랍습니다.
수작업으로 며칠해야 될 일을 몇초만에 해내는 기능이 놀랍습니다.
그런데 수야님
실행시키고 나면 해당텍스트가 선택되고 selection set이름이 표출되는데 저는 selection set을 읽어들여 각 텍스트의 문자에 어떤 문자를 추가할려고 하는거거든요. 여하튼 selection set을 조정해야 되는데 잘안되어서 이게 selection set이 맞는지 보려구
(sslength ss)하면 왜 에러가 뜨는지 모르겠어요..산넘어 산이네요
아 문자추가군요 그럼이걸..
(defun c:ff(/ e ptlst ss ent n ntx ctx)
(setq ntx(getstring “n추가할 문자입력:”))
(setq e(entget(car(entsel ))) ptlst ‘())
(foreach k e
(if (= (car k) 10)
(setq ptlst (append ptlst (list (cdr k))))
)
)
(setq ss (ssget “_WP” ptlst ‘((0 . “TEXT”))) n 0)
(repeat (sslength ss)
(setq ent (entget(ssname ss n))
otx(cdr(assoc 1 ent))
ctx(cons 1 (strcat ntx otx)) ; 문자앞쪽추가 제 느낌에 이정도는 아실듯..
)
(entmod (subst ctx(assoc 1 ent)ent))
(setq n (1+ n))
)
(princ)
)
고맙습니다. 글구 실수를 했네요
(alert (itoa (sslength ss))) 요렇게 했어야 했는데..
암튼 님때문에 많은걸 얻고 갑니다.