明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1386|回复: 2

如何遍历cad的块

[复制链接]
发表于 2012-11-14 10:48:46 | 显示全部楼层 |阅读模式
然后修改块属性?
发表于 2012-11-14 14:02:44 | 显示全部楼层
  1. Sub s()
  2. Dim b As AcadBlockReference
  3. On Error Resume Next
  4. '手选确定某块
  5. 选择:
  6. ThisDrawing.Utility.GetEntity b, p, "请选择需要搜索的块"
  7. If Err Then
  8.     Err.Clear
  9.     'Exit Sub '或者用GOTO重复
  10.     GoTo 选择 '若此处用GOTO,则导致ESC无效,直到选择到某个块为止或强行退出CAD
  11. End If
  12. If b.ObjectName <> "AcDbBlockReference" Then
  13.     GoTo 选择
  14. End If
  15. '建立上面选择的块的选择集遍历
  16. Dim data(1) As Integer
  17. Dim datatype(1) As Variant
  18. Dim sel As AcadSelectionSet

  19. data(0) = 100: datatype(0) = "AcDbBlockReference"
  20. data(1) = 2: datatype(1) = b.Name '块名
  21. Set sel = ThisDrawing.SelectionSets("rrr")
  22. sel.Clear
  23. If Err Then
  24.     Err.Clear
  25.     Set sel = ThisDrawing.SelectionSets.Add("rrr")
  26. End If
  27. 输入:
  28. Select Case ThisDrawing.Utility.GetInteger("1.全图;2.手动选择" & vbCrLf)
  29. Case 1
  30.     sel.Select acSelectionSetAll, , , data, datatype
  31. Case 2
  32.     sel.SelectOnScreen data, datatype
  33. Case Else
  34.     MsgBox "输入不正确,请重新输入"
  35.     GoTo 输入
  36. End Select
  37. '遍历选择集
  38. For Each b In sel
  39.     '你的命令
  40.     ThisDrawing.Utility.Prompt ii + 1 & "个" & vbCrLf
  41.     ii = ii + 1
  42. Next
  43. End Sub
发表于 2012-11-14 20:06:25 | 显示全部楼层
选择集是可以选择图中所有块的无论是COM的还是NET的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 14:45 , Processed in 0.182081 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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