giskumar 发表于 2022-7-6 07:06:42

查找三维线的交点

大家好,
 
我想找到以下3D线之间的交点
第1行:(5.0,5.0,8.0)(10.0,10.0,5.0)
第2行:(5.0,5.0,4.0)(10.0,10.0,6.0)
 
请任何人告诉我如何找到这些线之间的交点(3D)。
 
当做
库马尔。

Stefan BMR 发表于 2022-7-6 07:16:15

(setq l1 (entmakex '((0 . "LINE") (10 5.0 5.0 8.0) (11 10.0 10.0 5.0)))
   l2 (entmakex '((0 . "LINE") (10 5.0 5.0 4.0) (11 10.0 10.0 6.0)))
   )

(vlax-invoke
(vlax-ename->vla-object l1)
'IntersectWith
(vlax-ename->vla-object l2)
acExtendBoth ;or acExtendNone
)

hmsilva 发表于 2022-7-6 07:23:18

另一种方式:
 

(setq p1 '(5.0 5.0 8.0)
   p2 '(10.0 10.0 5.0)
   p3 '(5.0 5.0 4.0)
   p4 '(10.0 10.0 6.0)
)
(setq intpoint (inters p1 p2 p3 p4 nil))

 
亨里克

giskumar 发表于 2022-7-6 07:36:27

谢谢你的回复。
 
我认为这些函数只适用于2D,在这里也适用于3D线条很好。

hmsilva 发表于 2022-7-6 07:38:52

不客气,吉斯库马尔
 
亨里克

BIGAL 发表于 2022-7-6 07:47:10

还有一点,Inters是原始的或普通的jane lisp交叉命令,intesectwith是较新的Vl版本,我将从Vl版本开始,intersectwith有4个选项,可以作为交叉点测试的一部分,Inters有1个true或false。Intesectwith可以计算交点,即使直线不相交,也可以计算新pt。

gS7 发表于 2022-7-6 07:54:18

检查这个
我相信你会从这个网站上学到东西
 
http://www.lee-mac.com/intersectionfunctions.html

BIGAL 发表于 2022-7-6 08:03:22

这可能有点不成文,但在键入时可以节省时间。您可以用0 1 2 3替换相交模式

Lee Mac 发表于 2022-7-6 08:06:54

 
所有枚举的计算结果要么是整数,要么是其他常数数据类型——因此得名;受保护符号仅用于赋予其他“幻数”一些含义,例如(eval acbylayer)=256。
 
我强烈反对您建议的“省时器”,因为它将使代码无法阅读,并完全违背枚举符号的自文档目的。
页: [1]
查看完整版本: 查找三维线的交点