StartMe 发表于 2007-5-21 22:22:00

如何在已有选择集中挑出某几种特定类型的实体?

或者说获得这几种特定类型的实体的选择集。不是整个图中筛选,而是在现有的选择集中挑出来。
例如现有选择集ss,包括很多类型实体对象,我就想建立一个包括其中所有文字--包括单行与多行文字的选择集,怎么筛选?
不用遍历,不知有没有简单的方法。

laoliu09 发表于 2007-5-21 23:48:00

object.Select acSelectionSetPrevious,FilterType,FilterData
可惜只能在最近的选择集里再次过滤!

StartMe 发表于 2007-5-22 22:37:00

最近的也可以吧,谢谢laoliu09。

StartMe 发表于 2007-5-23 22:53:00

再次请教一下,今天我想把它应用于先选择后操作方式,比如通过PickfirstSelectionSet获得了选择集ss,那我该如何从选择集ss中提取出只包含文字text、mtext的选择集呢?用acSelectionSetPrevious怎么获取不到?

laoliu09 发表于 2007-5-23 23:31:00

试试这样吧,因为acSelectionSetPrevious是从最近创建的选择集中再次过滤,那就先新建一个选择集ss1,然后把PickfirstSelectionSet获得的当前选择集赋给ss1,再从ss1里过滤试试可以不?因为ss1才是最近建立的选择集,具体没试过,希望你成功啦,成功后可要告诉我方法哦。

StartMe 发表于 2007-5-23 23:46:00

这个方法我试过了,但是不行。
Set ss1 = thisdrawing.PickfirstSelectionSet
ss.Select acSelectionSetPrevious, , , filtertype, filterdata
'这样的ss.Count会是0。

laoliu09 发表于 2007-5-24 07:20:00

不是啊,是将thisdrawing.PickfirstSelectionSet里的图元添加给ss1,不是将thisdrawing.PickfirstSelectionSet的地址赋给ss1,如果将地址赋给ss1的话,PickfirstSelectionSet和ss1还是指向同一个选择集的,再试试看!祝你成功!

StartMe 发表于 2007-5-25 22:02:00

添加图元给ss1不是还得要遍历一遍么?
不知按你的想法怎么写?能否写一下呢?谢谢。

laoliu09 发表于 2007-5-25 23:17:00

我是针对acSelectionSetPrevious的用法说的!呵呵!如果想实现先选择后操作,好像只能遍历了,如果不用先选择后操作应该就可以直接用acSelectionSetPrevious实现。鱼和熊掌不可兼得啊,不知道其他人有更好的方法不?有方法请告知!

StartMe 发表于 2007-5-26 00:08:00


是的。
用遍历我是能做到的,关键我操作的图元太多,遍历一遍很慢,所以非常想知道有没有通过选择集的过滤条件一句或几句就可解决的好办法。谢谢laoliu09一起陪我探讨这个问题以及给予的帮助,谢谢。
页: [1]
查看完整版本: 如何在已有选择集中挑出某几种特定类型的实体?