Para crear una referencia de atributo, es preciso crear antes una definición de atributo en un bloque mediante el método AddAttribute. Este método requiere seis valores de entrada: la altura del texto de atributo, el modo de atributo, la cadena de mensaje, el punto de inserción, la cadena de identificación y el valor por defecto del atributo.
El valor del modo es opcional. Se pueden introducir cinco constantes para especificar el modo de atributo:
- acAttributeModeNormal
- acAttributeModeInvisible
- acAttributeModeConstant
- acAttributeModeVerify
- acAttributeModePreset
Puede introducir cualquier combinación de opciones, todas ellas o ninguna. Si desea especificar una combinación de opciones, añada las constantes juntas. Por ejemplo, podrá introducir acAttributeModeInvisible + acAttributeModeConstant.
La cadena de mensaje aparece al insertar un bloque que contiene el atributo. El valor por defecto de esta cadena es la cadena Tag. Introduzca el modo acAttributeModeConstant para desactivar el mensaje.
El identificador reconoce cada aparición del atributo. Puede utilizar cualquier carácter salvo espacios o signos de admiración. AutoCAD convierte las letras minúsculas en mayúsculas.
Una vez que la definición de atributo se ha incorporado al bloque, siempre que inserte el bloque con el método InsertBlock podrá especificar un valor distinto para la referencia de atributo.
La definición de atributo está asociada al bloque sobre el que se crea. Las definiciones de atributo que se crean en espacio modelo o espacio papel no se consideran enlazadas a ningún bloque determinado.
Creación de una definición de atributo
Este ejemplo crea un bloque y le añade un atributo. Después se inserta el bloque en el dibujo.
Sub Ch10_CreatingAnAttribute()
' Define the block
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")
' Add an attribute to the block
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)
' Insert the block, creating a block reference
' and an attribute reference
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