求救:计算n条线段的交点
(vl-load-com);(setq ss (ssget "x" '(0 . "line")))
(defun c:tet()
(setq segments (ssget "x" ))
(setq i 0 n (sslength segments))
(setq n (1- n))
(while (< i n)
(setq seg1 (ssname segments i))
(setq seg11 (vlax-ename->vla-object seg1))
(setq j (1+ i))
(setq jj (1+ i))
(setq k (- n j))
(repeat k
(setq seg2 (ssname segments jj))
(setq seg22 (vlax-ename->vla-object seg2))
(setq intpoints (vla-intersectwith seg11 seg22 acextendnone))
(setq intpoints (vlax-variant-value intpoints))
(vlax-safearray->list intpoints)
;(command "point" intpoints)
;(setq pts (cons intpoints pts))
;;; (setq points (append points (list (list
;;; (vlax-safearray-get-element intpoints 0)
;;; (vlax-safearray-get-element intpoints 1)
;;; (vlax-safearray-get-element intpoints 2)
;;; ))))
(setq jj (1+ jj))
)
(setq i (1+ i))
)
)
上面的代码想计算n条线段的交点的,但是没得到想要的结果,是怎么回事?谢谢!
(defun c:tt ()
(if (setq ss (ssget '((0 . "line"))))
(progn
(setq i -1
tmp '()
)
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq o1 (vlax-ename->vla-object s1))
(setq j i)
(while (setq s2 (ssname ss (setq j (1+ j))))
(setq o2 (vlax-ename->vla-object s2))
(if (setq pt (vlax-invoke o1 'intersectwith o2 0))
(setq tmp (cons pt tmp))
)
)
)
(princ tmp)
)
)
(princ)
)
xyp1964 发表于 2022-5-15 23:24
昨晚调试一下也成功了,你的代码更简洁,优美!:handshake :lol围观 一脸懵逼!!!!!! xyp1964 发表于 2022-5-15 23:24
记得加一行:(vl-load-com)
页:
[1]