james3785 发表于 2022-7-6 07:26:10

实体交点

你好
 
我正在寻找一种方法来自动(无需用户交互)确定实体是否接触。我已经找到了一种使用“fastsel”命令执行此操作的方法,但这需要用户在图形中选择一个实体。是否已经存在这样的东西,但用户不必选择实体?我在这里找到了一些代码,但这又需要用户做些什么,最好修改fastsel LISP代码吗?
 
干杯

Lee Mac 发表于 2022-7-6 08:15:37

使用实体的等效VLA对象的IntersectWith方法,例如:
 
(vlax-invoke <VLA-Object 1> 'intersectwith <VLA-Object 2> acextendnone)
 
测试VLA对象的位置/位置。由于您不希望任何用户交互,因此需要使用ssget和模式字符串(例如X模式字符串)检索这些对象。
 
上面将返回一个表示交点的双精度列表,如果对象不相交,则返回零。

james3785 发表于 2022-7-6 08:47:59

谢谢,我试过使用这种方法,但这并不完全是我想要的。应该在我最初的帖子中给出更多细节。实体是3D的,我想确定两个实体是否“接触”,即一个实体是否在左侧、右侧、上方或下方接触另一个实体。
 
附上了一个相当粗糙的例子,第一(1)(其中第一个实体接触右侧的第二个实体)和第二(2)确实相互接触,而最后(3)没有。“intersectwith”方法表示第二个实体接触,但不是第一个。此外,当上面的一个实体接触下面的另一个实体时,它似乎不起作用。
 
正如我所提到的,fastsel确实可以工作,我只需要它,所以没有提示,并且会自动扫描图形,我可以编辑fastsel代码,但我不擅长使用LISP,代码看起来确实很复杂。
 
有什么建议吗?
页: [1]
查看完整版本: 实体交点