Lee Mac 发表于 2022-7-6 10:00:21

 
将UCS设置为“世界”,然后尝试:
 
(ST:Geo-Linear '(1.0 1.0 1.0) '(2.0 2.0 4.0) '(3.0 3.0 3.0))
 
 
如果你仔细研究我的函数,你会注意到,如果任何三个点不共线,递归调用将无法实现。

devitg 发表于 2022-7-6 10:03:04

其他剥猫皮的方法
 
(defun c:point@line (/AUX-PT E E-OBJ ENT PT PT-XYZ   )
;; Tharwat 13. 07. 2011
;; add by DEVITG

(VL-LOAD-COM)
(if
   (and
   (setq e (car (entsel "\n Select a Line :")))
   (eq (cdr (assoc 0 (setq ent (entget e)))) "LINE")
    (setq pt (car (entsel "\n Select a point :")))
    (eq (cdr (assoc 0 (setq ent (entget pt)))) "POINT")
   );_and
(progn
(setq e-obj (vlax-ename->vla-object e))
(setq pt-xyz (cdr (assoc 10 (setq ent (entget pt)))))

(setq aux-pt (vlax-curve-getclosestpointto e-obj pt-xyz t))

(if (equal aux-pt pt-xyz)
(alert "point belong to line")
   (alert "point is out theline")
)
   
);_ progn
   );_ if
   
);_ end defun

ketxu 发表于 2022-7-6 10:08:46

哦,现在我明白了^它看起来不在Z坐标内^,所以我将返回距离。。
在您的ListCollinar中,它使用“递归”,而我在这种情况下并不擅长。嗨。。
我还得学习越来越多。非常感谢你。祝您今天过得愉快

Lee Mac 发表于 2022-7-6 10:13:42

 
不客气,你也是
页: 1 [2]
查看完整版本: 检查点是否为直线