연결이 된 라인들을 선택해주는 리습입니다..
지금 이 리습은 선만 선택이 되는데요..
고수님들중에서 선하고 도형이 연결 된것도 같이 선택 해주실수 있게 수정 도움 부탁드립니다.. (”)(..)(”)
(defun c:lc( / sl-scr foo ss scr ens sel)
(vl-load-com)
(defun sl-scr ( / vwctr vwsz scsz)
(setq vwctr (getvar “viewctr”) vwsz (getvar “viewsize”) scsz (getvar “screensize”))
(list
(list (- (car vwctr) (* (/ vwsz (cadr scsz)) (car scsz) 0.5)) (- (cadr vwctr) (/ vwsz 2.0)))
(list (+ (car vwctr) (* (/ vwsz (cadr scsz)) (car scsz) 0.5)) (+ (cadr vwctr) (/ vwsz 2.0)))
)
)
(defun foo (sel / temp sp ep p1 p2 tol dis1 ob)
(setq sp (vlax-curve-getstartpoint sel) ep (vlax-curve-getendpoint sel))
(setq ob (vlax-ename->vla-object sel) dis1 (distance sp ep) tol 0.1)
(and
(setq temp
(vl-remove-if-not
‘(lambda (en)
(setq p1 (vlax-curve-getstartpoint en) p2 (vlax-curve-getendpoint en))
(setq dis2 (distance p1 p2))
(and
(not (ssmemb en ss))
(or
(vlax-invoke (vlax-ename->vla-object en) ‘intersectwith ob 0)
(equal sp p1 tol) (equal sp p2 tol) (equal ep p1 tol) (equal ep p2 tol)
)
)
)
ens
)
)
(mapcar ‘(lambda (en) (ssadd en ss)) temp)
(mapcar ‘foo temp)
)
)
(sssetfirst)
(setq ss (ssadd) acad (vlax-get-acad-object))
(and
(setq sel (ssget ‘((0 . “ARC,LINE”))))
(progn
(vla-ZoomExtents acad)
(setq scr (sl-scr) ens (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex (ssget “c” (car scr) (cadr scr) ‘((0 . “ARC,LINE”)))))))
(vla-ZoomPrevious acad)
ens
)
(mapcar ‘foo (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex sel))))
(sssetfirst nil ss)
)
(princ)
)
공유