QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1509|回复: 3
收起左侧

[讨论] 请教:如何把VBA的SelectionSet置为当前?

[复制链接]
发表于 2013-3-20 16:17:02 | 显示全部楼层 |阅读模式 来自: 中国北京

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
  我有个程序,要把筛选后的图元(数比较大,可能达几千个)置为当前选中状态,现在用的方法是:先用ssadd创建一个空选择集,再一个一个地加入其中,然后用sssetfirst实现。若图元数量少(几百以内)没什么问题,数量大时就会很慢。
; C; D0 I; Q1 E3 I: j2 l, `3 W  我的优化方案是:用VBA的SelectionSet来创建选择集,再用AddItems方法可一次性加入全部需要的图元(我认为这样可能会快很多),然后SelectionSet置为当前。
& K3 z; B) ]- Q; _. d5 F% S  现在的问题就是:有没有办法将VBA的SelectionSet置为当前?根据资料ActiveSelectionSet属性是可读写的,但没有vla-put-ActiveSelectionSet函数。还有就是有没有办法将VBA的SelectionSet直接转换为LISP对象,然后用sssetfirst来实现?
9 ]" h4 N7 c( g& |  @/ p( T; b- @  不知道论坛中有没有高手能指点一下,谢谢啦!
- ?" z) E8 `+ Q: x% F% m$ n+ p
 楼主| 发表于 2013-3-20 19:30:54 | 显示全部楼层 来自: 中国北京
本帖最后由 tengteb 于 2013-3-20 19:34 编辑
) J  s6 e$ w1 p. w3 a+ a& h' n, [* E8 {" J5 g0 ~5 Y9 Y
我以前看到的中文版资料不准确,ActiveSelectionSet属性不是可读写的,而是只读的。
& y4 W7 I# c) K* N/ A8 b* z英文原版如下:' Z4 G; U* L6 b! f/ S
ActiveSelectionSet! E5 a, V8 y# w# I" j6 V* R
SelectionSet object; read-only
: Q' J- h0 V0 ?1 @# j1 GThe active selection set for the drawing.
 楼主| 发表于 2013-3-21 09:23:05 | 显示全部楼层 来自: 中国北京
  我后来又计时测试了一下,发现速度慢不是由于用ssadd一个一个地加入选择集,而时间主要是消耗在(sssetfirst nil nil)和(sssetfirst nil SS)两处。当之前选择的对象很多时,前一句消耗大量的时间;若筛选后要选中的对象很多时,后一句会消耗大量的时间。
4 C1 t5 X+ Y! \* }" ^" ?+ Q  可能有人会说只要(sssetfirst nil SS)如何?经我的简单测试,不加(sssetfirst nil nil)时速度更慢。, A- b5 n0 Z% [3 Y. w4 d
  不知道论坛有没有人对这个函数有过深入的研究?
发表于 2013-3-21 16:02:26 | 显示全部楼层 来自: 中国辽宁营口
基本上死路一条
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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