创建属性定义和属性参照

AutoCAD ActiveX/VBA

 
创建属性定义和属性参照
 
 
 

要创建属性参照,首先必须使用 AddAttribute 方法在块上创建属性定义。此方法的输入值有六个:属性文字的高度、属性模式、提示字符串、插入点、标记字符串和默认属性值。

模式值是可选的。可以输入五个常量来指定属性模式:

acAttributeModeNormal

指定保留每个属性的当前模式。

acAttributeModeInvisible

指定在用户插入块时不显示属性值。ATTDISP 命令将替代“不可见”模式。

acAttributeModeConstant

在插入块时赋予属性固定值。

acAttributeModeVerify

在插入块时,提示验证属性值是否正确。

acAttributeModePreset

当用户插入包含当前属性的块时,将属性设置为其默认值。在此模式下不能编辑该值。

可以输入无、任意组合或全部选项。要指定选项组合,请将各个常量相加。例如,用户可以输入 acAttributeModeInvisible + acAttributeModeConstant。

插入包含属性的块时,将显示提示字符串。此字符串的默认值是 Tag 字符串。在模式中输入 acAttributeModeConstant 可以禁用提示。

标记字符串可以标识每个属性引用。用户可以使用任何字符,但空格与叹号除外。AutoCAD 会将小写字符转换为大写。

在块中定义属性定义之后,每当用户使用 InsertBlock 方法插入块时,都可以为属性参照指定不同的值。

属性定义将与创建此属性定义的块关联。在模型空间或图纸空间中创建的属性定义不会附着到任何给定的块。

定义属性定义

本例创建一个块,然后向块中添加属性。接着将块插入到图形中。

Sub Ch10_CreatingAnAttribute()
    ' 定义块
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPnt, "BlockWithAttribute")
      
    ' 向块添加属性
    Dim attributeObj As AcadAttribute
    Dim height As Double
    Dim mode As Long
    Dim prompt As String
    Dim insertionPoint(0 To 2) As Double
    Dim tag As String
    Dim value As String
    height = 1
    mode = acAttributeModeVerify
    prompt = "New Prompt"
    insertionPoint(0) = 5
    insertionPoint(1) = 5
    insertionPoint(2) = 0
    tag = "New Tag"
    value = "New Value"
    Set attributeObj = blockObj.AddAttribute(height, mode, _
                          prompt, insertionPoint, tag, value)
    ' 插入块,创建块参照
    ' 和属性参照
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2
    insertionPnt(1) = 2
    insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0)
End Sub