明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 542|回复: 6

[函数] 计算选择集外围矩形框的函数

  [复制链接]
发表于 2023-12-24 14:57 | 显示全部楼层 |阅读模式
近日写了一个计算选择集外围矩形框的函数,觉得有点意思,所以发上来让大家看看,如果大家有兴趣,再发源码

函数调用方式: (get-ss-side)
运行后,提示输入两点框选实体
返回值为一列表: (选择集  外框左下角坐标   外框右上角坐标)
使用条件:
1.需要ET工具支持
2.选择为单选模式,并且要选择的实体必须全部在两点拉出的矩形框内部,不能有交叉的情况
3.该函数在计算大选择集时有优势,比如成千上万个实体
4.目前只考虑了在世界坐标系下进行计算
5.计算时间与实体的分布有关系

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-12-24 18:08 | 显示全部楼层
guosheyang 发表于 2023-12-24 15:26
选择集包围框哈  leemac 也有类似函数
  1. ;; Selection Set Bounding Box  -  Lee Mac
  2. ;; Returns a list of the lower-left and upper-right WCS coordinates of a
  3. ;; rectangular frame bounding all objects in a supplied selection set.
  4. ;; sel - [sel] Selection set for which to return bounding box

  5. (defun LM:ssboundingbox ( sel / idx llp ls1 ls2 obj urp )
  6.     (repeat (setq idx (sslength sel))
  7.         (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))))
  8.         (if (and (vlax-method-applicable-p obj 'getboundingbox)
  9.                  (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp))))
  10.             )
  11.             (setq ls1 (cons (vlax-safearray->list llp) ls1)
  12.                   ls2 (cons (vlax-safearray->list urp) ls2)
  13.             )
  14.         )
  15.     )
  16.     (if (and ls1 ls2)
  17.         (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list ls1 ls2))
  18.     )
  19. )

回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-24 15:26 | 显示全部楼层
选择集包围框哈  leemac 也有类似函数
发表于 2023-12-24 15:42 | 显示全部楼层
建议自己写一个四叉树,然后就知道其中原理了,如果懒得写,可以来ifox
 楼主| 发表于 2023-12-24 17:54 | 显示全部楼层
这个函数主要用在选择集中实体数量比较大的情况,数量越大,优势越大.
 楼主| 发表于 2023-12-25 12:29 | 显示全部楼层

这个函数也见过,但效率有点低,如果有10万个实体,估计要等上好一会才能出结果,一楼的函数估计不会超过2秒
发表于 2023-12-25 14:38 | 显示全部楼层
本帖最后由 bonny 于 2023-12-25 14:40 编辑
lijiao 发表于 2023-12-25 12:29
这个函数也见过,但效率有点低,如果有10万个实体,估计要等上好一会才能出结果,一楼的函数估计不会超过2秒

前提剧情强制设定:选择范围2点,如果是空集添加的选集或角点区域无分布的情况下,那就oyymd了,使用场景有限。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 16:47 , Processed in 0.245647 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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