明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2105|回复: 2

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

[复制链接]
发表于 2010-7-19 15:43:00 | 显示全部楼层 |阅读模式

在CAD中用layer可以创建新组过滤器。但是如何通过VBA创建或者编辑这个图层过滤器呢?我看CAD的对象树里没有图层过滤器相关的。

谁能教教我啊?到底用VBA能不能做到呢?

 楼主| 发表于 2010-7-19 23:24:00 | 显示全部楼层
折腾了半天,囫囵吞枣的拷贝到如下一点点咚咚,期待高人指点,这里面的xtype及xvalue的意思,为什么xtype多个值是1呢?如果我需要把axis及axis-text等图层都加进来又该如何设置xtype及xvalue呢?
  1.   
  2.     Dim xRec As AcadXRecord
  3.     Dim oDict1 As AcadDictionary, oDict2 As AcadDictionary
  4.     Dim xtype(0 To 6) As Integer
  5.     Dim xvalue(0 To 6) As Variant
  6.     Dim name As String
  7.     name = "结构图层" 'Filter name
  8.     xtype(0) = 1: xvalue(0) = name 'Filter Name:
  9.     xtype(1) = 1: xvalue(1) = "AXIS" 'Layer Name
  10.     xtype(2) = 1: xvalue(2) = "*" 'Color
  11.     xtype(3) = 1: xvalue(3) = "*" 'Lineyype
  12.     xtype(4) = 70: xvalue(4) = 0 'DXF (0 Both (On/Off) + 0 Both (Frz/Thaw) = 0)
  13.     xtype(5) = 1: xvalue(5) = "*" 'Lineweight
  14.     xtype(6) = 1: xvalue(6) = "*" 'PlotStyle
  15.     'xtype(7) = 1: xvalue(7) = "AXIS-TEXT" 'Layer Name
  16.     Set oDict1 = acaddoc.Layers.GetExtensionDictionary
  17.     Set oDict2 = oDict1.AddObject("ACAD_LAYERFILTERS", "AcDbDictionary")
  18.     Set xRec = oDict2.AddXRecord(name)
  19.     xRec.SetXRecordData xtype, xvalue
  20.     acaddoc.Utility.Prompt xRec.Item(0).name
 楼主| 发表于 2010-7-20 19:18:00 | 显示全部楼层

经过一整天的不断尝试以及找资料,终于发现:如果图层过滤器要选中axis和axis-text图层,那么只需要将axis替换成axis,axis-text.

感觉坛子里大家都不愿意回答问题,帮助我这样的新手嘛。

另外,创建了这个图层过滤器,但是并没有激活啊,需要用layer进去激活,否则图层过滤器还是全部

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-30 12:03 , Processed in 0.156761 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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