乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 49|回复: 2

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

[复制链接]

18

主题

34

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2010-7-19 15:43:00 | 显示全部楼层 |阅读模式
在CAD中用layer可以创建新组过滤器。但是如何通过VBA创建或者编辑这个图层过滤器呢?我看CAD的对象树里没有图层过滤器相关的。
谁能教教我啊?到底用VBA能不能做到呢?
回复

使用道具 举报

18

主题

34

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 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
回复

使用道具 举报

18

主题

34

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2010-7-20 19:18:00 | 显示全部楼层
经过一整天的不断尝试以及找资料,终于发现:如果图层过滤器要选中axis和axis-text图层,那么只需要将axis替换成axis,axis-text.
感觉坛子里大家都不愿意回答问题,帮助我这样的新手嘛。
另外,创建了这个图层过滤器,但是并没有激活啊,需要用layer进去激活,否则图层过滤器还是全部
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 08:26 , Processed in 0.245408 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表