明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1688|回复: 4

求助,如何在cad图上快速得到块参考对象?

[复制链接]
发表于 2003-12-3 13:58:00 | 显示全部楼层 |阅读模式
在图形中如何快速得到块参考对象的列表?
我用modelspace.item()遍历,感觉速度太慢,是否还有别的好办法?
发表于 2003-12-3 13:59:00 | 显示全部楼层
用选择集,只先把块参照对象。
 楼主| 发表于 2003-12-3 14:24:00 | 显示全部楼层
谢谢!
选择集无法选到被冻结的层上的对象。
发表于 2003-12-3 15:06:00 | 显示全部楼层
没有试过怎么会知道不能选取呢?
选择集中对于全图的那个选项(acSelectionSetAll)与图层的状态无关。
看看示例吧:
  1. Sub GetBlkRef()
  2.     Dim ss As AcadSelectionSet
  3.     Set ss = CreateSelectionSet
  4.     Dim tFilter As Variant
  5.     Dim dFilter As Variant
  6.     BuildFilter tFilter, dFilter, 0, "Insert"
  7.     ss.Select acSelectionSetAll, , , tFilter, dFilter
  8.     Debug.Print ss.Count
  9. End Sub

  10. Public Function CreateSelectionSet(Optional ssName As String = "ss") As AcadSelectionSet

  11.     Dim ss As AcadSelectionSet
  12.    
  13.     On Error Resume Next
  14.     Set ss = ThisDrawing.SelectionSets(ssName)
  15.     If Err Then Set ss = ThisDrawing.SelectionSets.Add(ssName)
  16.     ss.Clear
  17.     Set CreateSelectionSet = ss

  18. End Function

  19. Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
  20.     Dim fType() As Integer, fData()
  21.     Dim index As Long, i As Long
  22.    
  23.     index = LBound(gCodes) - 1
  24.         
  25.     For i = LBound(gCodes) To UBound(gCodes) Step 2
  26.         index = index + 1
  27.         ReDim Preserve fType(0 To index)
  28.         ReDim Preserve fData(0 To index)
  29.         fType(index) = CInt(gCodes(i))
  30.         fData(index) = gCodes(i + 1)
  31.     Next
  32.     typeArray = fType: dataArray = fData
  33. End Sub

 楼主| 发表于 2003-12-3 16:36:00 | 显示全部楼层
解决了。
小弟非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 10:48 , Processed in 0.182079 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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