성심 성의껏 질문을 작성하여 주세요, 대충하시면 답변도 대충작성합니다.^^
- 제목 작성시 금지어
만들어주세요? 해주세요? 안되는데 이렇게 변경해주세요? 등등
- 특정분과 질문은 제목에 분과삽입 [건축]
좋은예) [분과]무엇에 대해 문의합니다. /[분과]B로 바꾸는 방법을 알고싶습니다.
- 말머리 필수
① CAD 종류 : autocad
② VERSION : 2008
③ 운영 체제 :xp-pro
항상 도움주셔서 감사합니다. 리습방에서 다운받은 같은객체 선택하는 리습인데요! 일반 같은 객체는 잘 선택되는데 같은 블록선택시 일정영역을 드래그해서 선택 했는데도 그중에 일부만 선택되어집니다.일반객체에 블록은 포함이 안되는건지요? 드래그 방법에 따라 틀리나요? 예를 들면 "왼쪽위에서 오른쪽아래로 드래그"등등
그리고 객체를 선택하면 "몇개가 선택되었습니다"라고 command창에 구문이 표시되었으면 합니다.
숫자에 민감한 직업이다보니 눈으로 확인돼야 안심이 되거든요^^* 답답한 맘에 도움 부탁드립니다.
(defun c:sss ( / s:boundcenter on ob flst bp filter ss elst lst o p filter sss sp ep)
(defun *error* (msg)
(if (/= msg "function cancelled")
(if (member msg '("quit / exit abort" "함수가 취소되었습니다."))
(princ)
(princ (strcat "\nerror: " msg))
)
(princ)
)
(setvar "nomutt" 0)
(if ds
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ds)))
(vla-highlight (vlax-ename->vla-object e) :vlax-false)
)
)
(if os (setvar "osmode" os))
(setq *error* nil ds nil os nil)
(princ)
)
(defun s:boundcenter (ob / minpt maxpt)
(vla-getboundingbox ob 'minpt 'maxpt)
(setq minpt (vlax-safearray->list minpt))
(setq maxpt (vlax-safearray->list maxpt))
(mapcar '(lambda (a b) (* 0.5 (+ a b))) minpt maxpt)
)
(vl-load-com)
(setvar "cmdecho" 0)
(sssetfirst nil nil)
(setq os (getvar "osmode"))
(princ "\n기준 객체들 선택:")
(setvar "nomutt" 1)
(if (not (setq ds (ssget))) (exit))
(setvar "nomutt" 0)
(princ "\n영역지정 또는 [도면 전체(엔터)]:")
(if (setq sp (getpoint "\n첫 번째 구석점 지정:"))
(setq ep (getcorner sp "\n다른 구석점 지정:"))
)
(foreach en (vl-remove-if 'listp (mapcar 'cadr (ssnamex ds)))
(vla-highlight (vlax-ename->vla-object en) :vlax-true)
(setq on (cdr (assoc 0 (entget en))) lst (mapcar 'car (entget en)))
(setq ob (vlax-ename->vla-object en) bp (s:boundcenter ob))
(setq flst '(-1 1 5 10 11 13 14 43 44 330))
(if (= on "DIMENSION") (setq flst (cons 2 flst)))
(setq filter (vl-remove-if '(lambda (x) (member (car x) flst)) (entget en)))
(setvar "osmode" 0)(setq ss (if ep (ssget "c" sp ep filter) (ssget "x" filter)))(setvar "osmode" os)
(if ss
(progn
(vla-highlight (vlax-ename->vla-object en) :vlax-false)
(setq elst (vl-remove en (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
(setq elst (vl-remove-if '(lambda (x) (not (equal lst (mapcar 'car (entget x))))) elst))
(vl-cmdf "undo" "be")
(foreach x elst
(setq o (vlax-ename->vla-object x) p (s:boundcenter o))
(vla-move o (vlax-3d-Point p) (vlax-3d-Point bp))
)
(setq flst '(-1 5 13 14 330))
(if (= on "DIMENSION") (setq flst (cons 2 flst)))
(setq filter (vl-remove-if '(lambda (x) (member (car x) flst)) (entget en)))
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "P" filter))))
(setq sss (if (not sss) (ssadd e) (ssadd e sss)))
)
(vl-cmdf "undo" "e" "undo" "")
)
)
)
(sssetfirst nil sss)
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ds)))
(vla-highlight (vlax-ename->vla-object e) :vlax-false)
)
(setq *error* nil ds nil os nil)
(princ)
)
⑤ 파일첨부 (LISP/DWG) - DWG 첨부시 보다 정확한 답변을 얻을수 있습니다.
※ 유의사항
- ①말머리 : 말머리를 달아야 구분이 쉽겠죠^^
- ②Screenshot : 이해를 돕기위해 삽입요망.
- ③파일 첨부 : 상위버전에서 테스트할 파일이 아니면 가급적 하위버전으로 저장후 첨부.
해당리습/해당파일(DWG) 도 같이 첨부하여 주세요.
- ④제 목 : 질문 내용 반영(개략적인 내용), 예) 해치를 만들고 싶어요, pline을 연결할려면?
- ⑤질문글 삭제금지 : 질문후 댓글이 달린글은 삭제금지.
여러 리플러들이 소중한 시간을 내어서 고민한후 댓글을 작성한 이상 "강력조치" 토록 하겠음.
※ 정답만이 댓글은 아닙니다. 그 답이 맞던 틀리던 그건 그 댓글로서 존중되어야 합니다.
회원님들이 글을 읽었다는것과 댓글을 달았다는건 그만큼 관심을 가지고 있고 또 그 답을 해주기 위해
검색도 해보고 도움말도 보고 고민도 하는 일련의 과정을 거치면서 나오기 때문이죠.
이에 대한 고마움과 감사함을 모르는 테러행위(?)는 없었으면 합니다.
댓글
댓글 리스트-
작성자3:16 작성시간 10.05.06 혹시...업어 업어 얻으신 리습이라도...이렇게 많은 분들과 공유해야 되는 곳에 올리실 때는
제작자가 누군진 모르지만..잘 쓰고 있다...감사하다.... <- 머..대강 이런 내용과 함께 질문을 올린다면... 제작자분들이...기분 상하시는 일 또한 없을거라 생각됩니다... -
작성자3:16 작성시간 10.05.06 카페 운영방침 입니다.. 유의바랍니다^^;
-
답댓글 작성자bms0310 작성자 본인 여부 작성자 작성시간 10.05.06 넵~ 앞으로 유의해서 올리도록 할께요.미안합니다.
-
답댓글 작성자3:16 작성시간 10.05.06 이해해 주셔서 감사합니당^^*
-
작성자달수 작성시간 10.05.06 ■ 분과 . 기타|기타 리습 & 별도의 분과리습 <= 이곳에 146번 신속선택에서 다운받으시고 ssbn명령으로 처리가능합니다.