GetConstantAttributes Method (ActiveX)

Gets the constant attributes in the block or external reference.

Supported platforms: Windows only

Signature

VBA:

RetVal = object.GetConstantAttributes
object

Type: BlockReference, ExternalReference, MInsertBlock

The objects this method applies to.

Return Value (RetVal)

Type: Variant (array of Attribute objects)

The array of Attribute objects that are constant for the block reference.

Remarks

This method returns an array of constant attributes attached to the block or external reference. The attributes returned are the constant attribute definitions, not attribute references.

Examples

VBA:

Sub Example_GetConstantAttributes()
    ' This example creates a constant attribute definition on a block.
    ' It then queries the block to return the attribute.
    
    ' Create the block to hold the attribute
    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, "New_Block")
    
    ' Define the attribute definition
    Dim attributeObj As AcadAttribute
    Dim height As Double
    Dim mode As Long
    Dim prompt As String
    Dim tag As String
    Dim value As String
    height = 1#
    mode = acAttributeModeConstant
    prompt = "Constant Prompt"
    insertionPnt(0) = 5#: insertionPnt(1) = 5#: insertionPnt(2) = 0#
    tag = "Constant_Tag"
    value = "Constant Value"
    
    ' Create the attribute definition object on the block
    Set attributeObj = blockObj.AddAttribute(height, mode, prompt, insertionPnt, tag, value)
    ZoomAll
    
    ' Insert the block into the drawing
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "New_Block", 1#, 1#, 1#, 0)
    
    ' Get the constant attribute definition from the block
    Dim queryAttribute As Variant
    queryAttribute = blockRefObj.GetConstantAttributes
    
    Dim count As Integer
    count = UBound(queryAttribute) - LBound(queryAttribute)
    MsgBox "The block reference has " & count & " constant attributes."
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_GetConstantAttributes()
    ;; This example creates a constant attribute definition on a block.
    ;; It then queries the block to return the attribute.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
  
    ;; Create the block to hold the attribute
    (setq insertionPnt (vlax-3d-point 0 0 0))
    (setq blockObj (vla-Add (vla-get-Blocks doc) insertionPnt "New_Block"))
    
    ;; Define the attribute definition
    (setq insertionPnt (vlax-3d-point 5 5 0)
          attHeight 1
          attMode acAttributeModeConstant
          attPrompt "Constant Prompt"
          attTag "Constant_Tag"
          attValue "Constant Value")
    
    ;; Create the attribute definition object on the block
    (setq attributeObj (vla-AddAttribute blockObj attHeight attMode attPrompt insertionPnt attTag attValue))
    
    ;; Insert the block into the drawing
    (setq insertionPnt (vlax-3d-point 2 2 0))
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq blockRefObj (vla-InsertBlock modelSpace insertionPnt "New_Block" 1 1 1 0))
    (vla-ZoomAll acadObj)

    ;; Get the constant attribute definition from the block
    (setq queryAttribute (vlax-variant-value (vla-GetConstantAttributes blockRefObj)))
    
    (setq count (1+ (vlax-safearray-get-u-bound queryAttribute 1)))
    (alert (strcat "The block reference has " (itoa count) " constant attributes."))
)