В помощь для написания приложений был разработан модуль получения свойств любого примитива в форматах (DFX) и (VLX) + поддерживаемые методы в (VLX).
Пользователи AutoCAD и ZWCAD, которые занимаются написанием приложений, скорей всего имеют свои средства и модули получения данных с примитивов и блоков. Все равно кому то возможно понадобиться данное приложение. Мне оно необходимо для сравнения координат построения примитива и получения методов и свойств.
Приложение запускается командой c:vld интерфейс приложения очень простой, вид Диалогового окна:
Вид диалогового окна запроса типа данных в САПР AutoCAD
Вид диалогового окна запроса типа данных в САПР ZWCAD
Выбираем, какой тип данных нам необходим с примитива или объекта на листе(Модель), нажатием на необходимую кнопку.
После нажатия на кнопку приложение ожидает выбора объекта.
Если объект выбран, в командную строку выдает данные об объекте нужного нам типа.
Если объект не выбран, в командную строку выдает сообщение о том, что объект не выбран.
Возможные получения данных
Рассмотрим пример данных, которые можно получить с примитива. Для примера нарисуем примитив "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
В лучших традициях желаем Вам удачной работы! По вопросам, ждем пользователей на форуме.
При использование обратите внимание есть небольшая разница в данных VLX получаемые из-под AutoCAD и ZWCAD.