В помощь для написания приложений был разработан модуль получения свойств любого примитива в форматах (DFX) и (VLX) + поддерживаемые методы в (VLX).

Пользователи AutoCAD, которые занимаются написанием приложений, скорей всего имеют свои средства и модули получения данных с примитивов и блоков. Все равно кому то возможно понадобиться данное приложение. Мне оно необходимо для сравнения координат построения примитива и получения методов и свойств. 

Приложение запускается командой c:vld интерфейс приложения очень простой, вид Диалогового окна: 

Вид диалогового окна запроса типа данных

Выбираем, какой тип данных нам необходим с примитива или объекта на листе(Модель), нажатием на необходимую кнопку.

После нажатия на кнопку приложение ожидает выбора объекта.

Если объект выбран, в командную строку выдает данные об объекте нужного нам типа.

Если объект не выбран, в командную строку выдает сообщение о том, что объект не выбран.

Возможные получения данных

Рассмотрим пример данных, которые можно получить с примитива. Для примера нарисуем примитив "LWPOLYLINE".

Нашем приложением получим данные DFX, возможный список для примитива на картинке выше:

  • Команда: vld
  • Укажите объект на листе:
  • Удачный выбор: ((-1 . <Имя объекта: 7ffff82d620>) (0 . LWPOLYLINE) (330 . <Имя
  • объекта: 7ffff812ec0>) (5 . DA) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 .
  • 0) (100 . AcDbPolyline) (90 . 10) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10
  • -860.68 637.084) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -777.278
  • 679.217) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -720.648 626.807) (40 .
  • 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -646.513 661.747) (40 . 0.0) (41 . 0.0)
  • (42 . 0.0) (91 . 0) (10 -646.513 530.209) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91
  • . 0) (10 -874.065 530.209) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10
  • -860.68 637.084) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -814.346
  • 583.646) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -720.648 626.807) (40 .
  • 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -760.289 530.209) (40 . 0.0) (41 . 0.0)
  • (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))

Нашем приложением получим данные VLX, возможный список для примитива на картинке выше:

  • Команда: vld
  • Укажите объект на листе:
  • Удачный выбор:
  • ; IAcadLWPolyline2: Интерфейс AutoCAD для работы с компактными полилиниями.
  • ; Значения свойств:
  • ; Application (RO) = #
  • ; Area (RO) = 26796.6
  • ; Closed = 0
  • ; ConstantWidth = 0.0
  • ; Coordinate = ...Индексированное содержимое не выводится...
  • ; Coordinates = (-860.68 637.084 -777.278 679.217 -720.648 626.807 ... )
  • ; Document (RO) = #
  • ; Elevation = 0.0
  • ; EntityTransparency = "Послою"
  • ; Handle (RO) = "DA"
  • ; HasExtensionDictionary (RO) = 0
  • ; Hyperlinks (RO) = #
  • ; Layer = "0"
  • ; Length (RO) = 997.66
  • ; Linetype = "ByLayer"
  • ; LinetypeGeneration = 0
  • ; LinetypeScale = 1.0
  • ; Lineweight = -1
  • ; Material = "ByLayer"
  • ; Normal = (0.0 0.0 1.0)
  • ; ObjectID (RO) = 42
  • ; ObjectID32 (RO) = 42
  • ; ObjectName (RO) = "AcDbPolyline"
  • ; OwnerID (RO) = 43
  • ; OwnerID32 (RO) = 43
  • ; PlotStyleName = "ByLayer"
  • ; Thickness = 0.0
  • ; TrueColor = #
  • ; Visible = -1
  • ; Поддерживаемые методы:
  • ; AddVertex (2)
  • ; ArrayPolar (3)
  • ; ArrayRectangular (6)
  • ; Copy ()
  • ; Delete ()
  • ; Explode ()
  • ; GetBoundingBox (2)
  • ; GetBulge (1)
  • ; GetExtensionDictionary ()
  • ; GetWidth (3)
  • ; GetXData (3)
  • ; Highlight (1)
  • ; IntersectWith (2)
  • ; Mirror (2)
  • ; Mirror3D (3)
  • ; Move (2)
  • ; Offset (1)
  • ; Rotate (2)
  • ; Rotate3D (3)
  • ; ScaleEntity (2)
  • ; SetBulge (2)
  • ; SetWidth (3)
  • ; SetXData (2)
  • ; TransformBy (1)
  • ; Update ()
  • T

В лучших традициях желаем Вам удачной работы! По вопросам, ждем пользователей на форуме.