ADN Open CIS
Сообщество программистов Autodesk в СНГ

25/06/2015

Получение постоянных атрибутов вставки блока при помощи VBA

Как можно получить имя блока, значения атрибутов, найти количество вставок блока и всё это внести в таблицу при помощи VBA? Получаем информацию о блоке из определения блока в таблице блоков.

Следующий пример показывает это, получая все атрибуты всех вставок блоков из пространства модели. Вам нужно создать простую форму содержащую listbox с именем ListBox1 и кнопку, запускающую следующую процедуру:

Код - VBA: [Выделить]
  1. Private Sub CommandButton1_Click()
  2.   Dim elem As Object
  3.   Dim block As AcadBlock
  4.   Dim item As Object
  5.   Dim Array1 As Variant
  6.   Dim count As Integer
  7.   Dim MBtest1 As String
  8.   Dim str As String
  9.   For Each elem In ThisDrawing.ModelSpace
  10.     If elem.EntityName = "AcDbBlockReference" Then
  11.     If elem.HasAttributes Then
  12.       Array1 = elem.GetAttributes
  13.       For count = LBound(Array1) To UBound(Array1)
  14.         If (Array1(count).EntityName) = "AcDbAttribute" Then
  15.         MBtest1 = Array1(count).TagString & _
  16.           " - " & Array1(count).TextString
  17.         ListBox1.AddItem MBtest1
  18.         End If
  19.       Next count
  20.       ' Получаем определение блока из таблицы блоков
  21.       str = elem.Name
  22.       Set block = ThisDrawing.Blocks.item(str)
  23.       For Each item In block
  24.         str = item.EntityName
  25.         ' Получаем постоянные атрибуты
  26.         If item.EntityName = "AcDbAttributeDefinition" Then
  27.         If item.Mode = acAttributeModeConstant Then
  28.         ListBox1.AddItem item.TagString & " - " _
  29.           & item.TextString
  30.         End If
  31.         End If
  32.       Next item
  33.     End If
  34.     End If
  35.    Next elem
  36. End Sub

Источник: http://adndevblog.typepad.com/autocad/2013/02/get-the-constant-attributes-of-a-blockref-through-vba.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=2818

Опубликовано 25.06.2015
Отредактировано 26.06.2015 в 00:15:18