明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3420|回复: 6

[基础] 求助:怎么修改活动选择集?

[复制链接]
发表于 2011-5-27 12:54 | 显示全部楼层 |阅读模式
(vla-get-activeselectionset   
  (vla-get-activedocument (vlax-get-acad-object))
    )
以上代码可以获得当前活动的选择集,
但如何修改当前活动的选择集,比如,想把未选中的选择集置为当前(即:反选)
vla-put-activeselectionset  没这个函数.

语法 object.ActiveSelectionSet
object
Document
使用该属性的对象。
ActiveSelectionSet
SelectionSet 对象; 可读写
图形的活动选择集。


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-5-27 13:30 | 显示全部楼层
(sssetfirst gripset ss);;;将选择集设置为当前
(setq  ss  (cadr (ssgetfirst)));;;;获得当前活动选择集

点评

(sssetfirst gripset ss);;;将选择集设置为选中状态 (setq ss (ssget "i"));;;;获得当前选中的选择集  发表于 2011-5-28 02:41
发表于 2011-5-28 02:28 | 显示全部楼层
本帖最后由 caoyin 于 2011-5-28 02:39 编辑

;;你只要把ActiveSelectionSet的选集内容理解为(ssget "p")就好了
(if (setq ss (ssget))
  (setq axss (vla-get-activeselectionset   
             (vla-get-activedocument (vlax-get-acad-object))
    )
  )
);;这时候ss和axss包含的对象完全一致,只不过ss用alisp访问,axss则要用vlax访问:
;;例1:查看长度
(sslength ss)
(vla-get-count axss)
;;例2:转换为图元列表:

(defun c:tt1 ()
(vl-remove-if-not '(lambda(x)(eq (type x)'ENAME))(mapcar 'cadr (ssnamex ss)))
)
(defun c:tt2 (/ lst)
(vlax-for x axss (setq lst (cons (vlax-vla-object->ename x) lst)))
)
 楼主| 发表于 2011-5-28 10:03 | 显示全部楼层
非常感谢,
提这个问题的原因是想做一个部分显示的程序.
现在我程序的做法是根据从全部数据中减去所选的对象,然后处理的减去后的对象,
把它们的可见性设为,:vla-false(单词可能不对)
程序是可以用了,但老感觉这样去计算反选的对象效率不高,就考虑了当前活动的对象.
发表于 2011-5-28 18:02 | 显示全部楼层
回复 jicqj 的帖子

感谢caoyin版主指导。我把当前选择集 和选择集设为选中状态理解成一个事情了 哈
发表于 2011-6-2 00:35 | 显示全部楼层
真是高!深!啊!
发表于 2013-7-19 13:18 | 显示全部楼层
跟高手学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 22:52 , Processed in 0.211994 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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