(setq ss nil ss (ssget "_X" '((0 . "LINE")))); набор всех отрезков на чертеже
(if (not ss) (setq ss (ssadd)))
(setq all_lines_list (vl-remove-if-not (function (lambda (x) (= (type x) 'ename))) (mapcar 'cadr (ssnamex ss)))); список всех отрезков
(setq ss nil vla_line_list nil)
(foreach item all_lines_list (setq vla_line_list (append vla_line_list (list (vlax-ename->vla-object item))))); список всех vla-объектов-отрезков
(setq all_inters_points nil all_inters_points (LM:intersectionsinobjlist vla_line_list)); поиск всех точек пересечения
(defun LM:intersectionsinobjlist (lst / ob1 rtn )
(while (setq ob1 (car lst))
(foreach ob2 (setq lst (cdr lst))
(setq rtn (cons (LM:intersections ob1 ob2) rtn))
)
)
(apply 'append (reverse rtn))
);defun
(defun LM:intersections (ob1 ob2 / lst rtn )
(setq lst (inters (vlax-curve-getStartPoint ob1) (vlax-curve-getEndPoint ob1) (vlax-curve-getStartPoint ob2) (vlax-curve-getEndPoint ob2)))
(repeat (/ (length lst) 3)
(setq rtn (cons (list (car lst) (cadr lst) (caddr lst)) rtn) lst (cdddr lst))
)
(reverse rtn)
);defun