找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2202|回复: 19

[求助] [求助]:如何在已有的选择集内快速再过滤出一个新集?

[复制链接]
发表于 2008-1-10 10:33:53 | 显示全部楼层 |阅读模式

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

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

×
例如:用(setq A (ssget))建立了一个名为A的选择集,集内含有上千个HATCH、上千根LINE、上千个圆。。。。
现需要把A选择集中的HATCH筛选出来,再建立一个新集。
如果用下面的方法历遍每一个图元,通过0 . "HATCH"辨别,虽然也可以构成SS集,速度会很慢。

  1.   [FONT=courier new]
  2. (defun c:test ()
  3.   (princ "\n请选择物体:")
  4.   (setq A (ssget))
  5.   (setq i 0)
  6.   (setq ss (ssadd))
  7.   (repeat (sslength A)
  8.     (setq en   (ssname A i)
  9.           en_2 (cdr (assoc 0 (entget en)))
  10.     )
  11.     (if        (= en_2 "HATCH")
  12.       (setq ss (ssadd en ss))
  13.     )
  14.     (setq i (1+ i))
  15.   )
  16. )
  17.   [/FONT]


下面的方法虽然也可以,但要调用command。

  1.   [FONT=courier new]
  2. (defun c:test ()
  3.   (princ "\n请选择物体:")
  4.   (setq A (ssget))
  5.   (command "select" A "")
  6.   (setq ss (ssget "p" (list (cons '0 "HATCH"))))
  7. )
  8.   [/FONT]


请问有快速且不需调用command方法吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-1-10 10:44:59 | 显示全部楼层
楼主是高手,我能想到的,你一定也想到了。。。
你就是不想遍历每一个图元,command肯定慢的
提议:多一个getkword先判断的要选择的类型,
    再用(ssget '((0 . 类型)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-1-10 13:48:17 | 显示全部楼层
怕是沒辦法了!
http://www.xdcad.net/forum/showthread.php?s=&threadid=646479
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-10 15:52:50 | 显示全部楼层
最初由 carrot1983 发布
[B]楼主是高手,我能想到的,你一定也想到了。。。
你就是不想遍历每一个图元,command肯定慢的
提议:多一个getkword先判断的要选择的类型,
    再用(ssget '((0 . 类型))) [/B]


您太客气了,我离高手很远着呢。

由于实际应用中可能会先对选择集A进行处理,然后根据处理后的情况再对选择集A中的某类型的图元作另外的处理,所以使用getkword不大合用,而也会多作一次人工处理。

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

使用道具 举报

发表于 2008-1-23 17:34:28 | 显示全部楼层
(ssget "p" selectlist)
你查一下帮助,里面有的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-1-23 21:25:07 | 显示全部楼层

Re: [求助]:如何在已有的选择集内快速再过滤出一个新集?

最初由 Wildcat 发布
[B]例如:用(setq A (ssget))建立了一个名为A的选择集,集内含有上千个HATCH、上千根LINE、上千个圆。。。。
现需要把A选择集中的HATCH筛选出来,再建立一个新集。
如果用下面的方法历遍每一个图元,通过0 . "HATCH"?.. [/B]


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

使用道具 举报

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

使用道具 举报

发表于 2008-1-24 09:39:02 | 显示全部楼层
太感谢了。。。学习了。。。
一直以为ssget "P"只能选择一个图元。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2008-1-28 21:28:28 | 显示全部楼层
6楼的少了
(command "select" A "")
是不行的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-1-28 22:49:17 | 显示全部楼层
最初由 浪奔 发布
[B]6楼的少了
(command "select" A "")
是不行的 [/B]

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

使用道具 举报

发表于 2008-1-29 13:49:54 | 显示全部楼层
最初由 gysjy 发布
[B]
(ssget)
(setq ss (ssget "p" '((0 . "HATCH")))) [/B]


(defun c:test ()
  (princ "\n请选择物体:")
  (setq A (ssget))
.....
;;这里如果(setq B (ssget)),最后的结果会怎样??
.....
  (setq ss (ssget "p" (list (cons '0 "HATCH"))))
)



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

使用道具 举报

发表于 2008-1-30 08:26:26 | 显示全部楼层
呵呵
那就
(setq A (ssget))
(setq ss1 (ssget "p" (list (cons '0 "HATCH"))))
(setq B (ssget))
(setq ss2(ssget "p" (list (cons '0 "LINE"))))类似这样
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-1-30 18:31:46 | 显示全部楼层
最初由 浪奔 发布
[B]

(defun c:test ()
  (princ "\n请选择物体:")
  (setq A (ssget))
.....
;;这里如果(setq B (ssget)... [/B]

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

使用道具 举报

发表于 2008-2-12 15:40:59 | 显示全部楼层
中间不能有ssget或select的操作:
  1. [FONT=courier new](defun c:test (/ a ss)
  2.   (princ "\n请选择物体: ")
  3.   (setq a (ssget))
  4.   ;;...
  5.   ;;...
  6.   (setq ss (ssget "p" '((0 . "HATCH"))))
  7.   ;;...
  8.   ;;...
  9. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 21:46 , Processed in 0.202450 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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