提供一个用ax的方法,对所有曲线均有效
 - (defun c:GIP ()
- (c:getinterpoint)
- )
- (defun C:GetInterPoint (/ ent1 ent2 ent_1 ent_2
- ax_ent_1 ax_ent_2 intpoints i
- j k disp
- )
- (setq ent1 (entsel "\n选择第一条曲线:"))
- (setq ent2 (entsel "\n选择第二条曲线:"))
- (setq ent_1 (car ent1)
- ent_2 (car ent2)
- )
- (setq ax_ent_1 (vlax-ename->vla-object ent_1)
- ax_ent_2 (vlax-ename->vla-object ent_2)
- )
- (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
- (setq intpoints (vlax-variant-value intpoints))
- (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
- (progn
- (setq i 0)
- (setq j 0)
- (setq k 0)
- (setq disp "")
- (repeat
- (/ (+ 1
- (- (vlax-safearray-get-u-bound intpoints 1)
- (vlax-safearray-get-l-bound intpoints 1)
- )
- )
- 3
- )
- (setq
- disp (strcat
- disp
- "\n交点"
- (itoa (+ k 1))
- "坐标为:"
- (rtos (vlax-safearray-get-element intpoints j))
- " , "
- (rtos (vlax-safearray-get-element intpoints (+ 1 j)))
- " , "
- (rtos (vlax-safearray-get-element intpoints (+ 2 j)))
- )
- )
- (setq i (+ 2 i)
- j (+ 3 j)
- k (+ 1 k)
- )
- )
- (princ disp)
- )
- (princ "\n两曲线没有交点")
- )
- (princ "\n明经通道LISP示例-求两曲线交点")
- (princ)
- )
|