Já tentaram descobrir os pontos de interseção de duas entidades? eu já… inclusive já vi artifícios usando as funções OSNAP e INTERS… mas não são tão eficientes quanto o método usado por esta rotina:
(defun get-intersectpoints (e1 e2 / tmp lst n)
(setq tmp (vlax-variant-value
(vla-IntersectWith
(vlax-ename->vla-object (ename-of e1))
(vlax-ename->vla-object (ename-of e2)) acExtendNone))
n 0)
(repeat (/ (1+ (vlax-safearray-get-u-bound tmp 1)) 3)
(setq lst (append lst (list (mapcar
‘(lambda (x)
(vlax-safearray-get-element tmp x))
(list n (1+ n) (+ 2 n)))))
n (+ n 3)))
lst)
como podem perceber, “e1” e “e2” podem ser HANDLE (string, o dxf 5), ENAME e VLA-OBJECT, uso assim sempre, aí não preciso me preocupar na rotina principal com qual tipo de referência estou usando