성심 성의껏 질문을 작성하여 주세요, 대충하시면 답변도 대충작성합니다.^^
① CAD 종류 : 오토캐드
② VERSION : 2017
③ 운영 체제 :win7
④ 질문내용 및 스크린샷(이미지 및동영상)
안녕하세요 ^^
필터관련된 리습을 만들고 있던중에 예상치못한 동작을 하는 부분이 있어서
질문글을 올립니다 ㅎㅎ ;
만들고있는 리습은 객체를 선택할 경우 위처럼 레이어 ,color, 객체타입을 선택 할수 있도록 해서
그것과 같은 속성을 가진 객체를 필터 하려는 것입니다 .ㅎ
근데 캐드의 기능중 dynamic input 기능(F12)을 키면 객체 선택시 위의 스샷처럼 저런 선택지(?)가 나오는데
저기에서 예를들어 레이어입력 (3) << 을 클릭하면 Invalid option keyword. 라고 나옵니다 ㅠ.ㅠ.....
레이어이름 :3 이 인식되도록 하고싶은데 말이죵 ㅜㅜ
initget 에서 미리 정의해놓은 것중의 하나가 아니라는 뜻인것 같은데 ...
dynamic input 이 아니라 캐드명령행에서 클릭을 하거나 , 또는 3을 입력할경우는 정상작동을 하는데
왜 위와같은 경우에선 그렇지 않은지가 궁금합니다 ..
ㅎㅎㅎ
아래는 제가 만든 리습입니다. 읽어주셔서 감사드립니다 ^^
(defun c:FT ( / col colo lyr ent a ss ss1)
(vl-load-com)
(setvar 'cmdecho 0)
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(setq s1(nentsel "\n객체선택 또는 엔터입력시 현재 활성된 레이어로 필터"))
(if s1
(progn
(setq s1 (car s1) k 0)
(setq lyr (cdr(assoc 8 (entget s1))))
(setq col (cdr(assoc 62 (entget s1))))
(setq ent (cdr(assoc 0 (entget s1))))
(if (not col) (setq colo "ByLayer")(setq colo (rtos col 2 0)))
(initget (strcat lyr " " colo " " ent) )
(setq a (getkword (strcat "\n엔터입력시 레이어 필터적용 : [레이어 입력 (" lyr ") / 컬러 입력 (" colo ") / 객체명 입력 (" ent ")] " ) ))
(if (= a nil)(setq a lyr))
)
(progn(setq lyr (getvar 'clayer) a lyr) (prompt (strcat"\n현재 활성된 레이어 <" lyr "> 으로 필터됩니다.")))
)
(setq ss(ssget))
(cond
((= a lyr)
(setq ss (ssget "P" (list(cons 8 lyr)) ) )
)
((= a colo)
(if (= colo "ByLayer")
(progn
(setq ss1 ss ss (ssadd) )
(repeat (sslength ss1)
(if (= nil (assoc 62(entget(ssname ss1 k))))
(ssadd (ssname ss1 k) ss)
)
(setq k (1+ k))
)
)
(setq ss (ssget "P" (list(cons 62 col)) ))
)
)
((= a ent)
(setq ss (ssget "P" (list(cons 0 ent)) ) )
)
)
(command "delay" 0)
(sssetfirst nil ss)
(princ)
)
⑤ 파일첨부 (LISP/DWG) - DWG 첨부시 보다 정확한 답변을 얻을수 있습니다.
※ 유의사항
- ①말머리 : 말머리를 달아야 구분이 쉽겠죠^^(필수 선택)
- ②Screenshot : 이해를 돕기위해 삽입요망.
- ③파일 첨부 : 상위버전에서 테스트할 파일이 아니면 가급적 하위버전으로 저장후 첨부.
해당리습/해당파일(DWG) 도 같이 첨부하여 주세요.
- ④제 목 : 질문 내용 반영(개략적인 내용), 예) 해치를 만들고 싶어요, pline을 연결할려면?
금지어(만들어주세요? 해주세요? 안되는데 이렇게 변경해주세요? 등등)
- ⑤질문글 삭제금지 : 질문후 댓글이 달린글은 삭제금지.
여러 리플러들이 소중한 시간을 내어서 고민한후 댓글을 작성한 이상 "강력조치" 토록 하겠음.
※ 정답만이 댓글은 아닙니다. 그 답이 맞던 틀리던 그건 그 댓글로서 존중되어야 합니다.
회원님들이 글을 읽었다는것과 댓글을 달았다는건 그만큼 관심을 가지고 있고 또 그 답을 해주기 위해
검색도 해보고 도움말도 보고 고민도 하는 일련의 과정을 거치면서 나오기 때문이죠.
이에 대한 고마움과 감사함을 모르는 테러행위(?)는 없었으면 합니다.