;;================Lwpolyline의 교차점찾기===========
(defun c:xxxx (/ #ad #as #a #index #count #b #index0 #c #d #e #g #i #j #k #pl)
(vl-load-com)
(setq #g 0.01);;=정도설정
(setq #ad(vla-get-activedocument(vlax-get-acad-object)))
(setq #as
(if(> (vla-get-activespace #ad) 0)
(vla-get-modelspace #ad)
(vla-get-paperspace #ad)
);;if
);;setq
(setq #a(ssget ‘((0 . “LWPOLYLINE”))))
(setq #index 0 #count 0 #tcount 0)
(repeat (sslength #a)
(setq #b(vlax-ename->vla-object(ssname #a #index)))
(setq #pl nil #i -1)
(setq #j(vlax-safearray->list(vlax-variant-value(vla-get-coordinates #b))))
(repeat (/ (length #j)2)
(setq #pl(cons(list(nth(setq #i(1+ #i))#j)(nth(setq #i(1+ #i))#j))#pl))
);;repeat
(setq #k(ssdel(ssname #a #index)(ssget “f” #pl ‘((0 . “LWPOLYLINE”)))))
(setq #index0 0)
(repeat (sslength #k)
(setq #c(vlax-ename->vla-object(ssname #k #index0)))
(if(setq #d(vlax-invoke #b “intersectwith” #c acextendnone))
(progn
(setq #f -1)
(repeat (/ (length #d) 3)
(setq #e(list (nth (setq #f(1+ #f)) #d)(nth(setq #f(1+ #f))#d)(nth(setq #f(1+ #f))#d)))
(if(not(or(apply ‘and (mapcar ‘equal (vlax-curve-getstartpoint #b)#e(list #g #g #g)))
(apply ‘and (mapcar ‘equal (vlax-curve-getendpoint #b)#e(list #g #g #g)))
);;or
);;not
(progn
(vla-addcircle #as (vlax-3d-point #e)10)
(setq #count(1+ #count))
);;progn
);;if
);;repeat
);;progn
);;if
(setq #index0(1+ #index0))
);;repeat
(setq #index(1+ #index))
(grtext -1 (strcat “「” (itoa #index) “/” (itoa(sslength #a)) “」실행중…”))
);;repeat
(grtext -1 “”)
(princ (strcat “n≫≫≫「” (itoa #count) “」개소 찾았다!”))
(princ)
);;defun
공유