明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2519|回复: 10

请问是否有判断3Dsolid实体是否相交的函数呢?

  [复制链接]
发表于 2009-6-1 16:22:00 | 显示全部楼层 |阅读模式

我现在需要判断两个3Dsolid实体是否相交,请问是否有直接判断的函数?或者可以求出两个实体相交部分的体积再和较小原实体比较,若相等则认为相交,但这样需要用到求实体体积的函数和比较实体体积大小的函数,请问是否有这样的函数呢?

我这两天把学校图书馆的AUTOLISP的书都看了,对于实体和选择集的操作函数只有一些获得实体名称,返回实体信息,向选择集中添加删除实体这样的操作,并没有我想要的函数,现在很急,请高手指点。万分感谢!

发表于 2009-6-1 23:35:00 | 显示全部楼层
autocad自带有个命令 interfere 就能检查是否干涉。你用command调用就行了。
 楼主| 发表于 2009-6-1 23:56:00 | 显示全部楼层

这个我用过,但它需要手动指定检查对象。我要检查的对象很多,能不能通过输入实体名的方式选择实体?

发表于 2009-6-2 19:51:00 | 显示全部楼层
2楼这个应该是个好办法,学习了。
发表于 2009-6-2 20:21:00 | 显示全部楼层

我的思路如下:

首先创建一个选择集,选中实体:(setq sall (ssget '((0 . "3DSOLID"))))

然后记录选择集的长度(setq num (SSLENGTH sall))

接下来就是用以前学C语言里一组数比较大小的原理,让选择集中的第一个实体依次和第二个、第三个、······最后一个比较是否干涉;然后让第二个实体依次和第三个、第四个······最后一个比较是否干涉;以此类推比较倒数第二个和最后一个是否干涉。最后汇总检查的结果。

现在的问题是我也不知道如何取得command调用interfere后的结果,等待高手回答。还有我这个比较的算法比较笨,选择实体多的话执行起来会比较慢。

发表于 2009-6-2 20:34:00 | 显示全部楼层

如何取得command调用interfere后的结果:

可以在执行命令后,调用COPYHIST取得命令行信息,再进行分析。

发表于 2009-6-3 09:26:00 | 显示全部楼层
本帖最后由 作者 于 2009-6-3 11:51:51 编辑

今天看了帮助发现:如果定义了单个选择集,CAD将对比检查集合中的全部实体。我自己检查一边完全没必要,犯了“重新发明轮子”的错误。
 楼主| 发表于 2009-6-4 20:02:00 | 显示全部楼层

谢谢yucpp和mmmmmm的帮助,我需要做的是判断第一个选择集的整体和第二个选择集中每一个实体是否干涉,所以比较的次数不会和实体数的平方成正比。

不过我现在还是不会怎么把实体输给interfere函数

 楼主| 发表于 2009-6-4 20:10:00 | 显示全部楼层
就是不通过手动选择输入的方式
发表于 2009-6-4 21:14:00 | 显示全部楼层
每份copy一个出来,用vla-*测试布尔交集...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-24 23:20 , Processed in 0.182420 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表