GetAttributes Example

Using Programming Languages other than VBA

Sub Example_GetAttributes()
	' This example creates a block. It then adds attributes to that
	' block. The block is then inserted into the drawing to create
	' a block reference.

	' Create 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, "TESTBLOCK")

	' Define the attribute definition
	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 = "Attribute Prompt"
	insertionPoint(0) = 5#: insertionPoint(1) = 5#: insertionPoint(2) = 0
	tag = "Attribute Tag"
	value = "Attribute Value"

	' Create the attribute definition object in model space
	Set attributeObj = blockObj.AddAttribute(height, mode, prompt, insertionPoint, tag, value)

   
	' Insert the block
	Dim blockRefObj As AcadBlockReference
	insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0
	Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "TESTBLOCK", 1#, 1#, 1#, 0)
	ZoomAll

	' Get the attributes for the block reference
	Dim varAttributes As Variant
	varAttributes = blockRefObj.GetAttributes

	' Move the attribute tags and values into a string to be displayed in a Msgbox
	Dim strAttributes As String
	Dim I As Integer
	For I = LBound(varAttributes) To UBound(varAttributes)
		strAttributes = strAttributes & "  Tag: " & varAttributes(I).TagString & _
						"   Value: " & varAttributes(I).textString & "	"
	Next
	MsgBox "The attributes for blockReference " & blockRefObj.name & " are: " & strAttributes, , "GetAttributes Example"

	' Change the value of the attribute
	' Note: There is no SetAttributes. Once you have the variant array, you have the objects.
	' Changing them changes the objects in the drawing.
	varAttributes(0).textString = "NEW VALUE!"

	' Get the attributes
	Dim newvarAttributes As Variant
	newvarAttributes = blockRefObj.GetAttributes

	' Again, display the tags and values
	strAttributes = ""
	For I = LBound(varAttributes) To UBound(varAttributes)
		strAttributes = strAttributes & "  Tag: " & varAttributes(I).TagString & _
						"   Value: " & varAttributes(I).textString & "	"
	Next
	MsgBox "The attributes for blockReference " & blockRefObj.name & " are: " & strAttributes, , "GetAttributes Example"

End Sub

 

   Comments?