明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1108|回复: 7

[提问] 如何分割一个选择集

[复制链接]
发表于 2022-7-27 21:56:04 | 显示全部楼层 |阅读模式
本帖最后由 mituzhe 于 2022-7-27 23:28 编辑

写了一个管道穿墙位置标记的程序
为了找到所有穿墙位置,就只能一个管道图元遍历所有墙体,判断是否相交。
如果有10000个管道图元和10000个墙体图元,那时间复杂度得10000*10000,一晚上都遍历不完。
所以为了降低时间复杂度,希望能将选择集自动切分
每个小选择集内只有比如管道和墙体图元各两个,这样时间复杂度就只有2*2×5000,大大降低了时间复杂度。
不知道有没有大佬能提供一下思路

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-7-27 22:23:44 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-7-27 22:26 编辑

不管怎么搞,遍历每个管道图元是必须的
个人意见,先只针对管道搞一个选择集,
对它的每个图元取出坐标进行ssget"F"对墙体进行选择,正常情况下可以直接得到管道穿越墙体的顺序及穿越位置
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-7-27 23:25:35 | 显示全部楼层
本帖最后由 mituzhe 于 2022-7-27 23:26 编辑
llsheng_73 发表于 2022-7-27 22:23
不管怎么搞,遍历每个管道图元是必须的
个人意见,先只针对管道搞一个选择集,
对它的每个图元取出坐标进 ...

哦,对哦。用F关键字可以求相交选择集。是一个很好的思路。
遍历每个管道图元确实是必须的,但某个管道图元跟某个墙体图元隔得特别远就没有必要去判断相交了。所以希望切分成一小块一小块的选择集,这样管道和墙体都在一个较小区域内,相交可能性更高。可以减少不必要的计算。可能还是很难实现吧。
谢谢你提供的思路,也可以解决很大的问题
发表于 2022-7-28 15:21:51 来自手机 | 显示全部楼层
一个根管道作一次ssget f,选择集里面就有交点坐标(管道首先碰到那个墙体的坐标)
 楼主| 发表于 2022-7-28 17:23:06 | 显示全部楼层
wzg356 发表于 2022-7-28 15:21
一个根管道作一次ssget f,选择集里面就有交点坐标(管道首先碰到那个墙体的坐标)

对于我这个问题,F关键字确实是最优解。但还是想知道能不鞥你实现选择集分割
发表于 2022-7-28 18:32:04 | 显示全部楼层
(setq ss管 (ssget filters管)));filters管,管过滤条件
(repeat (setq n(sslength ss管));管数量
        (setq e管(ssname ss管(setq n(1- n))));单根管图元
        (setq ps管。。);单根管坐标       
        (setq ss墙(ssget "f" ps管 filters墙));filters墙,墙过滤条件
         ;得与这根管子相交的墙的选择集
         (ssnamex ss墙);可以看到相交的墙的图元名及管子与之相交的坐标, 自己提出来
         ;选中的相交墙及交点 是按管子前进方向依次排列的        
)
发表于 2022-7-29 11:13:13 | 显示全部楼层
选择集分组当然可以实现
无非定义坐标区域后
执行n*m次ssget
或者对选择集里的图元
进行坐标测试分组

然而
重点在于
这样做难道就不是提高“复杂度”?
更何况
实现了你想要的分组以后
接下来又要怎么做呢

73已经给了远超你的思路
还陷在自己给自己划的圈子里跳不出来
 楼主| 发表于 2022-8-1 10:15:27 | 显示全部楼层
masterlong 发表于 2022-7-29 11:13
选择集分组当然可以实现
无非定义坐标区域后
执行n*m次ssget

已经采用他们的思路改进了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 21:25 , Processed in 0.158064 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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