sample.dwg보시면 block이 폴리선 끝점에 붙어야하는데 미세하게 떨어저 있습니다
아마도 圖化당시의 자릿수 문제인것 같습니다.
올려드린 LISP은 블록이 폴리선에 직각방향으로 붙는 LISP입니다
이 리습을 가장 가까운 end point로 붙을수있게 수정 가능할까요?
고수님들 부탁드립니다
Sharp4Lv.2
poly선에 심볼 붙이는 Lisp입니다. 수정 부탁드립니다
공유
; 폴리선에 블럭붙이기 – cadori
(defun c:ccbb ( / doc index ss plobjlist blobjlist basept tmpt tmptlist tmpdstlist mindst position targetpt )
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq index 0 plobjlist nil)
(prompt “n폴리라인을 선택하세요 …”)
(if (setq ss (ssget (list (cons 0 “LWPOLYLINE”))))
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss index)))
(setq plobjlist (cons obj plobjlist))
(setq index (1+ index))
)
)
(setq index 0 blobjlist nil)
(prompt “n폴리라인에 붙일 블럭을 선택하세요 …”)
(if (setq ss (ssget (list (cons 0 “INSERT”))))
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss index)))
(setq blobjlist (cons obj blobjlist))
(setq index (1+ index))
)
)
(vla-startundomark doc)
(setq count 0)
(foreach blobj blobjlist
(setq basept (vlax-get blobj ‘insertionpoint))
(setq tmptlist nil tmpdstlist nil)
(foreach plobj plobjlist
(setq tmpt (Vlax-Curve-GetPointAtParam plobj (fix (+ (Vlax-Curve-GetParamAtPoint plobj (vlax-curve-getclosestpointto plobj basept) ) 0.5))))
(setq tmptlist (cons tmpt tmptlist))
(setq tmpdstlist (cons (distance basept tmpt) tmpdstlist))
)
(setq mindst (apply ‘min tmpdstlist))
(setq position (vl-position mindst tmpdstlist))
(setq targetpt (nth position tmptlist))
(vla-move blobj (vlax-3d-point basept) (vlax-3d-point targetpt))
(setq count (1+ count))
(grtext -1 (strcat “작업중 … ” (rtos (* (/ (float count) (length blobjlist)) 100) 2 0) ” % | 남은블럭 ” (itoa (- (length blobjlist) count)) ” 개”))
)
(grtext -1 “”)
(vla-endundomark doc)
(princ)
)
(vl-load-com)
(prompt “n[ ccbb ]”)
(princ)
잘 쓰겠습니다
편안한 주말 되세요~~