创建属性定义和属性参照
From AutoCAD ActiveX/VBA
要创建属性参照,首先必须使用 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 AcadAttributeDim height As DoubleDim mode As LongDim prompt As StringDim insertionPoint(0 To 2) As DoubleDim tag As StringDim value As Stringheight = 1mode = acAttributeModeVerifyprompt = "New Prompt"insertionPoint(0) = 5insertionPoint(1) = 5insertionPoint(2) = 0tag = "New Tag"value = "New Value"Set attributeObj = blockObj.AddAttribute(height, mode, _prompt, insertionPoint, tag, value)' 插入块,创建块参照' 和属性参照Dim blockRefObj As AcadBlockReferenceinsertionPnt(0) = 2insertionPnt(1) = 2insertionPnt(2) = 0Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _(insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0)End Sub