找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 884|回复: 13

[讨论]:如何最简洁的求两个选择集的交集

[复制链接]
发表于 2003-12-22 22:07:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
(setq ss1 (ssget)    ss2 (ssget))
问:如何最简洁的求两个选择集的交集
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-12-23 00:02:23 | 显示全部楼层

Re: [讨论]:如何最简洁的求两个选择集的交集

最初由 陌生人 发布
[B](setq ss1 (ssget)    ss2 (ssget))
问:如何最简洁的求两个选择集的交集 [/B]

  1. (defun test (s1 s2 / e n)
  2.   (setq n -1)
  3.   (repeat (sslength s1)
  4.     (setq e (ssname s1 (setq n (1+ n))))
  5.     (if        (not (ssmemb e s2))
  6.       (ssdel e s1)
  7.     )
  8.   )
  9.   s1
  10. )

在 Repeat 中应该选择 sslength 短的选择集提高效率
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-23 21:33:11 | 显示全部楼层
;;;S&S
a+b和b+c,求b:得到a或c就行
(command".select" ss1 "r"ss2 "") ; a
(command".select" ss1"r""p""") ;b
(ssget "p")

;;;S+S
求a+b+c
(command".select" ss1 ss2 "")
(ssget "p")


;;;S-S
求a
(command".select" ss1 "R"ss2 "")
(ssget "p")


;;;SxS
a+b和b+c,求a+c
(command".select" ss1 "R"ss2 "")  ;a
(command".select" ss2 "R"ss1"a""p" "") ;c+a
(ssget "p")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2003-12-24 14:53:02 | 显示全部楼层
aeo 的方法真有独到之处,不知在处理大选择集时速度怎样?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-24 15:53:24 | 显示全部楼层
我想肯定比那个2楼的要慢,用COMMAND如果对象多了之后光显示就半天了,而且还要选好几次
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-24 23:35:34 | 显示全部楼层
最初由 luoyaya 发布
[B]我想肯定比那个2楼的要慢,用COMMAND如果对象多了之后光显示就半天了,而且还要选好几次 [/B]


你不防试试.
弄个10000个实体,哪个快?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2003-12-25 08:43:47 | 显示全部楼层
我试了一下,aeo的方法速度很快,因为只用了两次command 命令,比自己用循环处理还要快。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-25 08:58:37 | 显示全部楼层

Re: Re: [讨论]:如何最简洁的求两个选择集的交集

最初由 eachy 发布
[B]
[CODE]
(defun test (s1 s2 / e n)
  (setq n -1)
  (repeat (sslength s1)
    (... [/B]


我感觉中间应该改成:
(if        (not (ssmemb e s2))
   (progn
      (ssdel e s1)
      (setq n (1- n))
   )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-25 09:01:45 | 显示全部楼层
再參考下以前的貼子
http://www.xdcad.net/forum/showt ... d=362605#post362605
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-26 10:26:15 | 显示全部楼层

Re: [讨论]:如何最简洁的求两个选择集的交集

最初由 陌生人 发布
[B](setq ss1 (ssget)    ss2 (ssget))
问:如何最简洁的求两个选择集的交集 [/B]


最简洁的办法恐怕非ET的内部函数模属了:
(acet-ss-intersection SS1 SS2)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-2-26 15:06:55 | 显示全部楼层
et不也是写出来的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-26 16:25:38 | 显示全部楼层
最初由 陌生人 发布
[B]et不也是写出来的? [/B]


什么意思? 一般来说内部函数运算比你再编程要来得快, 你试试!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-22 21:59:04 | 显示全部楼层
3楼的方法不知道对“其中的一个选择集是空的”这种情况适用不?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-23 11:47:16 | 显示全部楼层
为什么不用晓东API呢?
(xdrx_PickSet_Intersect ss1 ss2)

xdrx_PickSet_Intersect

功  能:得到两个选择集的交集(同时在两个选择集的实体构成的选择集)

返回值:选择集ss1*ss2

说  明:上面三个关于选择集函数,得到的选择集都保存在内部数据库NO1位置。
        换句话说,就是这之后若有对NO1的操作,那么,保存的选择集将释放。
        可能的操作有:
        (setq ss (ssget))
        (xdrx_setsstodb ss 0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 11:53 , Processed in 0.229953 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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