![]() |
请教:如何把选择集设为激活的选择集
请教:如何把选择集设为激活的选择集
www.dimcax.com 请教:如何把选择集设为激活的选择集 请教各位: 大家知道,用 vla-get-activeselectionset 可以获取当前激活的选择集,我用如下代码 试图实现删除选择集操作,但只能删除被激活的选择集,而不一定是我所要的选择集: (vlax-for x (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) (vla-delete x)) 问题1:怎样将选择集(pickset)设为激活的选择集 问题2:怎样将 vla-get-activeselectionset 获取的激活选择集转换为 pickset d vla-get-activeselectionset 好象是得到最近一次的(ssget)的选择集,你的问题不知我是否理解的对不对? (defun active->pickset ( / #ss ) (setq #ss (ssadd)) (vlax-for x (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) (ssadd (vlax-vla-object->ename x) #ss)) ) (defun pickset->active (ss ) (sssetfirst nil ss) (ssget) ) d 你没理解我的意思。 vla-get-activeselectionset 是得到最近一次的(ssget)的选择集 这句话没错 假如我在操作之前,已知变量 ss 为一个选择集,但最后一次 (ssget)得到的是选择集 ss2 这时候我想对 ss 操作,而不是 ss2 --------------------------- 1. active->pickset 只是把激活选择集加入到新的选择集 #ss,而非把 #ss 设为激活的选择集 2. pickset->active 中的sssetfirst 只是把已知 ss 设置为被选取,而非激活的 pickset d 1. active->pickset 只是把激活选择集加入到新的选择集 #ss,而非把 #ss 设为激活的选择集 这名话不知道怎么理解,#ss已经是激活的选择集,还要…… 2. pickset->active把已知 ss 设置为被选取,(ssget)已经把ss转为激活的 pickset d 你的意思我完全明白, 但是 vla-get-activeselectionset 的激活是 activex 的概念,和 sssetfirst 是两种含义 (defun ss_del (ss / x) ;...这里应该加上一段代码,要求把参数 ss 转换为 activex 的激活选择集,而替代红色部分 (vlax-for x (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) (vla-delete x) ) ) d 多谢 byghbcx 的热心帮助!程序修改如下 (defun ss_del (ss / x) (sssetfirst nil ss) (ssget) (vlax-for x (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) (vla-delete x) ) ) |
所有的时间均为北京时间。 现在的时间是 09:53 PM. |