乐筑天下

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

VBA能不能实现遍历指定图层内所有实体

[复制链接]

2

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
14
发表于 2018-3-2 07:58:00 | 显示全部楼层 |阅读模式
如题,能不能用类似如下格式遍历图层内所有实体?    Dim k, l As Integer
    Dim temp_entity As AcadEntity
    Dim Temp_Layer As AcadLayer
    k = 0
    l = 0
    For Each Temp_Layer In ThisDrawing.Layers
        Layer_Name(k) = Temp_Layer.Name
        For Each temp_entity In Temp_Layer  ‘此处报错
            l = l + 1
        Next
        MsgBox("该图层有"&Cstr(l)&“个实体”)
   Next
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2018-3-4 11:24:00 | 显示全部楼层
  1. Private Sub SelectLots(ByVal Ssetname As String, ByVal strLayerName As String)
  2.    
  3.     Dim sSetObj As AcadSelectionSet, flag As Boolean
  4.     If ThisDrawing.GetVariable("cmdactive") Then ThisDrawing.SendCommand "(command)"
  5.    
  6.     For Each sSetObj In ThisDrawing.SelectionSets
  7.         
  8.         If sSetObj.Name = Ssetname Then
  9.             flag = True
  10.             Exit For
  11.         End If
  12.         
  13.     Next
  14.    
  15.     If flag Then sSetObj.Delete                                                 '创建集合,如集存在,则删除,新建
  16.     Set sSetObj = ThisDrawing.SelectionSets.Add(Ssetname)
  17.    
  18.     Dim gpCode(0)    As Integer
  19.    
  20.     Dim dataValue(0) As Variant
  21.    
  22.     gpCode(0) = 8
  23.     dataValue(0) = strLayerName                                                 ' 图层名
  24.    
  25.     Dim groupCode As Variant, dataCode As Variant
  26.    
  27.     groupCode = gpCode
  28.     dataCode = dataValue
  29.    
  30.     sSetObj.Select acSelectionSetAll, , , groupCode, dataCode
  31. End Sub
  32. Public Sub test()
  33.     Dim objSset As AcadSelectionSet
  34.     SelectLots "z1111", "0" '选0层的所有对象
  35.     Set objSset = ThisDrawing.SelectionSets("z1111")
  36.     If objSset.Count = 0 Then Exit Sub
  37.     Dim objEnt As AcadEntity
  38.     For Each objEnt In objSset
  39.         Debug.Print objEnt.ObjectName
  40.     Next objEnt
  41. End Sub
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2018-3-2 09:26:00 | 显示全部楼层
按图层选择,创建选择集,遍历。。。
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2018-3-2 13:16:00 | 显示全部楼层
对象不是属于图层的,是属于document的。要实现这个效果可以遍历对象,然后看对象的图层是不是满足你需要的。
回复

使用道具 举报

2

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
14
发表于 2018-3-4 11:08:00 | 显示全部楼层

哦,谢谢了,这对对象很多的图会不会拖慢速度?
回复

使用道具 举报

3

主题

103

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2018-3-5 16:32:00 | 显示全部楼层
选择集处理不了块内图形对象,要处理全部,可以从块集合来遍历,或从模型空间开始,遇到参照再递归处理对应的块
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 08:42 , Processed in 0.224624 second(s), 64 queries .

© 2020-2024 乐筑天下

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