查看单个帖子
旧 2009-04-27, 01:01 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 请教:如何把选择集设为激活的选择集

请教:如何把选择集设为激活的选择集
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)
)
)
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)