通过 objBlockRef.GetAttributes获取的属性对象,是不包含PromptString的,虽然有TagString和TextString。这个是由于PromptString只保存在块中,而不保存在块参照中。因此只需要再遍历一遍块,获取即可。

Private Sub GetBlockAttributePrompts()
Dim elem As Object
For Each elem In ThisDrawing.ModelSpace
    If elem.EntityName = "AcDbBlockReference" Then
        If elem.HasAttributes Then

            'Get The Block Definition
            Dim block As AcadBlock
            Set block = ThisDrawing.Blocks.item(elem.Name)
            
            Dim prompt As String
            prompt = ""
            
            Dim item As Object
            For Each item In block
                If item.EntityName = "AcDbAttributeDefinition" Then
                    prompt = prompt + Chr(13) + item.PromptString
                End If
            Next item
            Debug.Print prompt
        End If
    End If
Next elem
End Sub
最后修改:2025 年 09 月 03 日
如果觉得我的文章对你有用,可以点一下赞赏