求助:怎么修改活动选择集?
(vla-get-activeselectionset(vla-get-activedocument (vlax-get-acad-object))
)
以上代码可以获得当前活动的选择集,
但如何修改当前活动的选择集,比如,想把未选中的选择集置为当前(即:反选)
vla-put-activeselectionset没这个函数.
语法 object.ActiveSelectionSet objectDocument
使用该属性的对象。 ActiveSelectionSetSelectionSet 对象; 可读写
图形的活动选择集。
(sssetfirst gripset ss);;;将选择集设置为当前
(setqss(cadr (ssgetfirst)));;;;获得当前活动选择集 本帖最后由 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)))
)
非常感谢,
提这个问题的原因是想做一个部分显示的程序.
现在我程序的做法是根据从全部数据中减去所选的对象,然后处理的减去后的对象,
把它们的可见性设为,:vla-false(单词可能不对)
程序是可以用了,但老感觉这样去计算反选的对象效率不高,就考虑了当前活动的对象. 回复 jicqj 的帖子
感谢caoyin版主指导。我把当前选择集 和选择集设为选中状态理解成一个事情了 哈 真是高!深!啊! 跟高手学习
页:
[1]