乐筑天下

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

如何遍历cad的块

[复制链接]

2

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 2012-11-14 10:48:00 | 显示全部楼层 |阅读模式
然后修改块属性?
回复

使用道具 举报

9

主题

24

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2012-11-14 14:02:00 | 显示全部楼层
  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
回复

使用道具 举报

13

主题

113

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
166
发表于 2012-11-14 20:06:00 | 显示全部楼层
选择集是可以选择图中所有块的无论是COM的还是NET的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 23:14 , Processed in 1.476714 second(s), 59 queries .

© 2020-2025 乐筑天下

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