캐드 분류
폴리선으로 묶이던 리습이 적용이 안되네요..
컨텐츠 정보
- 507 조회
- 0 추천
- 0 비추천
-
목록
본문
겹치는 선을 자른 후 폴리선으로 만들어 주는 리습인데요, 디바이드까지는 아주 잘되는데
폴리선으로 만들어지지 않아 따로 JOIN을 해야 되는게 아주 불편하더라고요ㅜㅜ
리습 내용을 건들지 않았는데 뭐가 잘못된걸까요? 되던게 건들지도 않았는데 안되니까 답답해요,,
–
(defun c:tun nil (_ApplyBooleOperation "_.UNION"))
(defun c:tint nil (_ApplyBooleOperation "_.INTERSECT"))
(defun c:tsu nil (_ApplyBooleOperation "_.SUBTRACT"))
(defun _ApplyBooleOperation ( method / chk ss sss ssss qaf _entsels _makeregion doc lst obj1 obj2 reg1 reg11 reg11ss reg2 reg22 reg22ss k )
(defun _entsels ( msg filter / sel k entlst )
(princ msg)
(setvar 'NOMUTT 1)
(setq sel (vl-catch-all-apply 'ssget (list filter)))
(setvar 'NOMUTT 0)
(if (and sel (not (vl-catch-all-error-p sel)))
(repeat (setq k (sslength sel))
(setq entlst (cons (ssname sel (setq k (1- k))) entlst))
)
)
entlst
)
(defun _makeregion ( doc obj / result )
(if
(null
(vl-catch-all-error-p
(setq result
(vl-catch-all-apply 'vlax-invoke
(list (vla-objectidtoobject doc (vla-get-ownerid obj)) 'addregion (list obj))
)
)
)
)
(car result)
(prompt (strcat "n" (vl-catch-all-error-message result)))
)
)
(setq lst '((-4 . "") (-4 . "OR>"))
doc (vla-get-activedocument (vlax-get-acad-object))
)
(setq obj1 (_entsels "nSelect First Set of Objects: " lst))
(setq obj2 (_entsels (strcat "nSelect Objects to perform " method ": ") lst))
(foreach obj obj1
(setq reg1 (_makeregion doc (vlax-ename->vla-object obj)))
(setq reg11 (cons (vlax-vla-object->ename reg1) reg11))
)
(setq reg11ss (ssadd))
(repeat (setq k (length reg11))
(ssadd (nth (setq k (1- k)) reg11) reg11ss)
)
(vl-cmdf "_.UNION" reg11ss "")
(setq reg11 (entlast))
(foreach obj obj2
(setq reg2 (_makeregion doc (vlax-ename->vla-object obj)))
(setq reg22 (cons (vlax-vla-object->ename reg2) reg22))
)
(setq reg22ss (ssadd))
(repeat (setq k (length reg22))
(ssadd (nth (setq k (1- k)) reg22) reg22ss)
)
(vl-cmdf "_.UNION" reg22ss "")
(setq reg22 (entlast))
(setq ss (ssadd))
(ssadd reg11 ss)
(ssadd reg22 ss)
(setq sss (ssget "_X"))
(ssdel reg11 sss)
(ssdel reg22 sss)
(if (eq method "_.SUBTRACT")
(vl-catch-all-apply 'vl-cmdf (list method reg11 "" reg22 ""))
(vl-catch-all-apply 'vl-cmdf (list method ss ""))
)
(setq ssss (ssget "_X"))
(repeat (setq k (sslength sss))
(ssdel (ssname sss (setq k (1- k))) ssss)
)
(repeat (setq k (length obj1))
(if (or (eq (cdr (assoc 0 (entget (nth (setq k (1- k)) obj1)))) "ELLIPSE") (eq (cdr (assoc 0 (entget (nth k obj1)))) "SPLINE")) (setq chk (cons T chk)) (setq chk (cons nil chk)))
)
(repeat (setq k (length obj2))
(if (or (eq (cdr (assoc 0 (entget (nth (setq k (1- k)) obj2)))) "ELLIPSE") (eq (cdr (assoc 0 (entget (nth k obj2)))) "SPLINE")) (setq chk (cons T chk)) (setq chk (cons nil chk)))
)
(if (vl-remove nil chk)
(progn
(prompt "nOne or more objects is/are ELLIPSE or SPLINE – creating REGIONS instead")
(getstring "nEnter to continue")
)
(progn
(setq qaf (getvar 'qaflags))
(setvar 'qaflags 1)
(vl-cmdf "_.EXPLODE" ssss "")
(if (eq (cdr (assoc 0 (entget (ssname (ssget "_P") 0)))) "REGION") (vl-cmdf "_.EXPLODE" (ssget "_P") ""))
(vl-cmdf "_.PEDIT" "M" (ssget "_P") "" "" "j" "" "")
(setvar 'qaflags qaf)
)
)
(foreach obj obj1
(entdel obj)
)
(foreach obj obj2
(entdel obj)
)
(princ)
)
(vl-load-com) (princ)
관련자료
댓글 0
/ 1 페이지
등록된 댓글이 없습니다.