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