GetAttributes Пример |
Sub Example_GetAttributes() ' Этот пример создает блок. Затем добавляет атрибуты к этому блоку. Блок ' вставляется в рисунок, чтобы создать вхождение блока. ' Создайте блок 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") ' Определите определение атрибута 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" ' Создайте объект определения атрибута в пространстве модели 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, "TESTBLOCK", 1#, 1#, 1#, 0) ZoomAll ' Получите атрибуты для вхождения блока Dim varAttributes As Variant varAttributes = blockRefObj.GetAttributes ' Переместите тэгы атрибута и значения в строку, которая будет показана в 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 "Атрибуты для blockReference " & blockRefObj.name & " : " & strAttributes, , "GetAttributes Пример" ' Измените значение атрибута ' Обратите внимание: нет никакого SetAttributes. Как только Вы сделали массив variant, Вы имеете объекты. ' Изменение их изменяет объекты в рисунке. varAttributes(0).textString = "NEW VALUE!" ' Получите атрибуты Dim newvarAttributes As Variant newvarAttributes = blockRefObj.GetAttributes ' Снова, покажите тэгы и значения strAttributes = "" For I = LBound(varAttributes) To UBound(varAttributes) strAttributes = strAttributes & " Tag: " & varAttributes(I).TagString & _ " Value: " & varAttributes(I).textString & " " Next MsgBox "Атрибуты для blockReference " & blockRefObj.name & " : " & strAttributes, , "GetAttributes Пример" End Sub