这段程序可以求任意两实体的交点。 (defun c:get_int (/ ent1 ent2 ps) (setq ent1 (car (entsel "选择第一实体:"))) (setq ent2 (car (entsel "选择第二实体:"))) (print) (setq ps (obj_int ent1 ent2)) ) (defun obj_int(ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i) (setq ax_ent_1 (vlax-ename->vla-object ent1) ax_ent_2 (vlax-ename->vla-object ent2) ) (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone)) (setq intpoints (vlax-variant-value intpoints)) (setq i 0) (if (>(vlax-safearray-get-u-bound intpoints 1)0) (repeat (/(+ 1 (-(vlax-safearray-get-u-bound intpoints 1) (vlax-safearray-get-l-bound intpoints 1) ) ) 3 ) (setq points (append points (list(list (vlax-safearray-get-element intpoints i) (vlax-safearray-get-element intpoints (+ i 1)) (vlax-safearray-get-element intpoints (+ i 2)) ))) ) (setq i (+ 3 i)) ) ) points ) |