a_way 发表于 2012-11-14 10:48:46

如何遍历cad的块

然后修改块属性?

Flyingdancing 发表于 2012-11-14 14:02:44

Sub s()
Dim b As AcadBlockReference
On Error Resume Next
'手选确定某块
选择:
ThisDrawing.Utility.GetEntity b, p, "请选择需要搜索的块"
If Err Then
    Err.Clear
    'Exit Sub '或者用GOTO重复
    GoTo 选择 '若此处用GOTO,则导致ESC无效,直到选择到某个块为止或强行退出CAD
End If
If b.ObjectName <> "AcDbBlockReference" Then
    GoTo 选择
End If
'建立上面选择的块的选择集遍历
Dim data(1) As Integer
Dim datatype(1) As Variant
Dim sel As AcadSelectionSet

data(0) = 100: datatype(0) = "AcDbBlockReference"
data(1) = 2: datatype(1) = b.Name '块名
Set sel = ThisDrawing.SelectionSets("rrr")
sel.Clear
If Err Then
    Err.Clear
    Set sel = ThisDrawing.SelectionSets.Add("rrr")
End If
输入:
Select Case ThisDrawing.Utility.GetInteger("1.全图;2.手动选择" & vbCrLf)
Case 1
    sel.Select acSelectionSetAll, , , data, datatype
Case 2
    sel.SelectOnScreen data, datatype
Case Else
    MsgBox "输入不正确,请重新输入"
    GoTo 输入
End Select
'遍历选择集
For Each b In sel
    '你的命令
    ThisDrawing.Utility.Prompt ii + 1 & "个" & vbCrLf
    ii = ii + 1
Next
End Sub

齐天大圣3386 发表于 2012-11-14 20:06:25

选择集是可以选择图中所有块的无论是COM的还是NET的。
页: [1]
查看完整版本: 如何遍历cad的块