qflut 发表于 2010-7-19 15:43:00

VBA能控制图层的新组过滤器吗?

<p>在CAD中用layer可以创建新组过滤器。但是如何通过VBA创建或者编辑这个图层过滤器呢?我看CAD的对象树里没有图层过滤器相关的。</p>
<p>谁能教教我啊?到底用VBA能不能做到呢?</p>

qflut 发表于 2010-7-19 23:24:00

折腾了半天,囫囵吞枣的拷贝到如下一点点咚咚,期待高人指点,这里面的xtype及xvalue的意思,为什么xtype多个值是1呢?如果我需要把axis及axis-text等图层都加进来又该如何设置xtype及xvalue呢?

    Dim xRec As AcadXRecord
    Dim oDict1 As AcadDictionary, oDict2 As AcadDictionary
    Dim xtype(0 To 6) As Integer
    Dim xvalue(0 To 6) As Variant
    Dim name As String
    name = "结构图层" 'Filter name
    xtype(0) = 1: xvalue(0) = name 'Filter Name:
    xtype(1) = 1: xvalue(1) = "AXIS" 'Layer Name
    xtype(2) = 1: xvalue(2) = "*" 'Color
    xtype(3) = 1: xvalue(3) = "*" 'Lineyype
    xtype(4) = 70: xvalue(4) = 0 'DXF (0 Both (On/Off) + 0 Both (Frz/Thaw) = 0)
    xtype(5) = 1: xvalue(5) = "*" 'Lineweight
    xtype(6) = 1: xvalue(6) = "*" 'PlotStyle
    'xtype(7) = 1: xvalue(7) = "AXIS-TEXT" 'Layer Name
    Set oDict1 = acaddoc.Layers.GetExtensionDictionary
    Set oDict2 = oDict1.AddObject("ACAD_LAYERFILTERS", "AcDbDictionary")
    Set xRec = oDict2.AddXRecord(name)
    xRec.SetXRecordData xtype, xvalue
    acaddoc.Utility.Prompt xRec.Item(0).name

qflut 发表于 2010-7-20 19:18:00

<p>经过一整天的不断尝试以及找资料,终于发现:如果图层过滤器要选中axis和axis-text图层,那么只需要将axis替换成axis,axis-text.</p>
<p>感觉坛子里大家都不愿意回答问题,帮助我这样的新手嘛。</p>
<p>另外,创建了这个图层过滤器,但是并没有激活啊,需要用layer进去激活,否则图层过滤器还是全部</p>
页: [1]
查看完整版本: VBA能控制图层的新组过滤器吗?