Matt__W 发表于 2008-9-30 11:15:27

删除具有匹配属性/图层/VisState的动态块选择集

我有一些我一直在研究的代码(见下文),它允许用户选择一个动态块。然后程序获取块的有效名称、可见性状态、属性(如果有的话)和层。从那里我希望创建一个具有相同特征的块选择集。现在,我到目前为止得到的将创建一个具有相同层名称的块选择集。我想知道是否有一种方法可以使用过滤器(类似于下面的方法)来设置可见性状态、有效名称和属性,而不是遍历选择集中的所有对象并测试它们是否具有这些特征中的任何一个。
FilterType(0) = 0
FilterData(0) = "Insert"
FilterType(1) = 8
FilterData(1) = strBlkLayerName
                        
Set sset = vbdPowerSet("BlockCountBySelection")
sset.Select acSelectionSetAll, , , FilterType, FilterData
完整的代码...
**** Hidden Message *****

Jeff_M 发表于 2008-9-30 13:06:13

关于精简SS的唯一方法是过滤BlockName和“*UXXX”命名块。这将消除所有其他非动态块和动态特性未被改变的动态块。

Matt__W 发表于 2008-9-30 13:14:02

我有点担心我的选择会很有限。谢谢,杰夫。

Matt__W 发表于 2008-9-30 13:42:50


好的…一个简单的问题。代码2将给我一个注释性的块名,我将使用什么来获得有效的块名?有号码吗?如果是,是什么?
(2 . "*U256")

Jeff_M 发表于 2008-9-30 14:34:50

不,有效名称没有DXF代码。因此,您的过滤器必须获取所有匿名块,然后在遍历SS时检查有效名称。
因此过滤器的一部分将是:
2
strDynBlkName & ",'*U*"
注意第一个*之前的单引号。

Matt__W 发表于 2008-9-30 14:38:22

正是我所想的...只是需要确认。*
踢在地上
*
页: [1]
查看完整版本: 删除具有匹配属性/图层/VisState的动态块选择集