Vlax ename vla object что это
Здесь вы можете скачать документацию и программы для САПР AutoCAD, PCAD, 3DS, Inventor, Pro/E, Solidworks и других CAD CAM CAE EDA GIS
Четрые правила для работы с ActiveX в Visual Lisp
Размышления о объектах, свойствах и методах не свойственно для традиционного программиста AutoLISP. Недостаток доступной в изложении документации по по vla- функциям заставляет многих избегать интерфейса ActiveX. Так где же документация? Прежде чем я сообщу вам об этом давайте сначала рассмотрим некоторые базовые понятия.
Объекты, свойства и методы
Объект, это “ что-то воображаемое или физическое к которому направлено действие” В AutoCAD, объект может быть видимым, как линии, дуги и текст. Он так же может быть не видимым, как слой или стиль текста. Другой, связаный термин, коллекция, просто ссылка к совокупности схожих объектов, к примеру коллекция слоев.
Очевидно, что объекты имеют свойства. К примеру, вы интуитивно знаете, что линия имеет начальную и конечную точку. Она так же имеет другие свойства в AutoCAD, к примеру, слой. Некоторые свойства доступны для изменения (TrueColor) а другие доступны только для чтения (управляемые объектом).
Объекты так же имеют методы. Методы это действия, которые поддерживают объекты. К примеру, линия поддерживает методы перемещения, копирования и вращения. Различные объекты поддерживат различные методы.
Теперь вы понимаете базовые термины, которые используются в интерфейсе ActiveX. Пришло время показать документацию на функции vla- и мои 4 простых правила.
4 Простых правила
Докупентация по функциям vla- всегда расположена в руководстве по ActiveX и VBA. Проблема в том, что она была написана для программистов на VBA, а не для программистов Visual LISP. Однако, Autodesk знает что “перевод” VBA-документации в Visual LISP был бы настолько прост, что нет реальной необходимости ее дублировать.
рис. 1
Потратьте одну минуту, чтобы посмотреть на карту объектной модели в руководстве (рис. 1). Эта карта — лучьший способ начать ознакомление с документацией. Вы можете кликнуть на любой из объектов или коллекций, чтобы напрямую перейти в описание этого объекта или коллекции. Это так же даст вам понимание иерархии объектов в интерфейсе ActiveX. Обратите внимание, что объект Application — начало для большинства объектных моделей.

рис. 2
Когда вы видите карту объектной модели на экране, выберите объект Line. Отобразится список всех методов и свойств (так же событий, мы еще не говорили о них), доступных для этого объекта (рис. 2). Это говорит вам о том, что объекты могут содержать линию. Мы не видим ничего о Visual LISP здесь. Однако, перевод “VBA-языка” в функции vla- требует только эти четыре правила:
1. Вы должны всегда описывать объект как первый аргумент.
Помните, свойства и методы не могут существовать без объектов. Каждая vla-функция будет требовать объект. Поэтому, первый параметр каждой функции vla- будет объектом непосредственно.
2. Ваш запрос значения значения свойства должен осуществляться добавлением имени свойства к vla-Get-
Все свойства запрашиваеются в Visual LISP потем добавления имени свойства к vla-Get-, к примеру, vla-Get-Layer. Поскольку вы только запрашиваете свойство, здесь только один аргумент — объект.
3. Модификация значение свойства осуществляется добавлением имени свойства к vla-Put-
Все свойства, которые доступны не только для чтения, модифицируются в Visual LISP добавлением имени свойства к vla-Put-, к примеру, v l a — P u t — L a y e r . Так как вы модифицируете свойство, вам необходимо два аргумента: объект, и данные для изменения свойства. Тип данных, необходимый для изменения свойства описан в разделе Signature.
4. Выполнение метода осуществляется добавлением имени метода к vla-
Все методы доступны в Visual LISP путем добавления имени метода к vla-, к примеру, vla-Delete. Количество аргументов будет зависеть от конкретного метода и будет включать объект как первый аргумент, наряду с описанными в документации параметрами. Типы данных, необходимый для аргументов методов описаны в разделе Signature.
Запрос свойства
Как вы увидели, задача «перевода» руководства ActiveX тривиальна. Теперь рассмотрим несколько примеров.

Начертим единичную линию в AutoCAD. Мы будем использовать эту линию для примера кода, размещенного ниже. Сохраним объект line в переменной AutoLISP. (vl-Load-Com загружает интерфейс ActiveX и vlax-EName- >vla-Object переводит имя примитива в объект.)
Command: (vl-Load-Com) Command: (setq myLine (vlax-EName->vla-Object (entlast))) #
Посмотрим что руководство по ActiveX и VBA говорит нам о том, что мы можем сделать с нашим объектом. Выберем объект Line в карте объектной модели. Это вызовет переход к документации по объекту line. Предположим, что мы хотим узнать, на каком слое находится линия, используя при этом средства ActiveX. Выберем свойство Layer в документации. Теперь применим наши четыре правила.
Мы работаем с методом или со свойством? Это свойство, используем правило 2. Значить нам нужно добавить имя свойства Layer к vla-Get-, т.е., используем функцию vla-Get-Layer. Так как мы только запрашиваем свойство Layer мы можем пропустить правила 3 (модификация свойства) и 4 (префикс метода). Правило 1 гофорит нам, что первым аргументом является непосредственно сам объект. Таким образом выражение AutoLISP, которое будет возвращать имя слоя, на котором расположена линия будет:
Command: (vla-Get-Layer myLine) "0"
Какой тип данных мы ожидаем, когда запрашиваем свойство? Обратите внимание, что документация в разделе Signature указывает что свойство layer имеет тип string. Различные своства будут иметь различные типы данных. К примеру, свойство StartPoint имеет тип variant, и будет содержать массив чисел. В Visual LISP массив называется SafeArray.
Command: (vla-Get-StartPoint myLine) #
Однако, тип variant, который содержит SafeArray необходимо обследовать глубже, чтобы получить актулаьные для нас числа. Две функции используются для того чтобы получить данные, сохраненные в типе variant и SafeArray, это: vlax-Variant-Value и vlax-SafeArray->List. Большинство программистов на Visual LISP предпочитают объединять эти две функции в одну и использовать простую функцию, типа показаной ниже.
(defun i:Array->List (variant) (vl-Load-Com) (vlax-SafeArray->List (vlax-Variant- Value variant)))
Теперь мы можем использовать эту функцию чт обы получить список чисел, которые нам нужны:
Command: (i:Array->List (vla-Get- StartPoint myLine)) (15.4375 16.1814 0.0)
Модификация свойства
В этом примере мы будем изменить свойство, в данном случае слой, на котором расположена линия. Теперь мы применим правила 1 и 3. Правило 3 говорит, что нам нужно добавить перфикс — имя свойства (Layer в нашем случае) к vla-Put-, таким образом вызываем функцию vla-Put-Layer. У нее будут два аргумента. Не забудьте правило 1! Первый агрумент всегда является сам объект. Так как мы изменяем свойство, имеет смысл что бы второй параметр был бы значением непосредственно. В документации написано, что его тип string, т.о. мы должны предоставить строку. Перед тем как мы введем код, показанный ниже, создайте слой с именем “Test” который бы визуально отстоял от текущего слоя, на котором расположена линия.
Command: (vla-Put-Layer myLine "Test") nil

Обратите внимание на то, что после успешного выполнения данное выражение возвращает nil. Если выражение завершается с ошибкой (к примеру, слой не существует) возвращается сообщение “Automation Error”. Строки и простые числа, такие как типы integer и double (выражаясь в терминах AutoLISP) легко обеспечить. Но некоторые свойства требуют тип variant, в обльшинстве случае это точки для объектов, к примеру линий и полилиний. В этом случае, многие программисты на Visual LISP пишут функцию подобную показанной ниже для быстрой конвертации списка вещественных чисел в SafeArray.
(defun i:Points (ptList) (vl-Load-Com) (vlax-SafeArray-Fill (vlax-Make-SafeArray vlax-vbDouble (cons 0 (1- (length ptList)))) ptList))
Мы используем эту функцию чтобы изменить свойств линии StartPoint на 0,0,0.
Command: (vla-Put-StartPoint myLine (i:Points '(0.0 0.0 0.0))) nil
Выполнение метода объекта
И наконец, используем метод для того чтобы переместить линию. Перейдем к методу Move в руководстве по ActiveX и VBA. Обратите внимание, что этот метод содержит два аргумента, Point1 и Point2. Не забывайте правило 1. Объект — всегда первый аргумент. Т.о. в Visual LISP мы будем иметь три аргумента: объект, первую точку и вторую точку. Правило 4 говорит что имя метода будет идти за префиксом vla-, т.о., мы будем использовать функцию vla-Move.

Используем то, что мы изучили, чтобы переместить линию.
Command: (vla-Move myLine (i:Points '(0.0 0.0 0.0)) (i:Points '(12.0 0.0 0.0))) nil
Если выражение отработало верно, возвращается nil.
Особенности vla-функций и их применения, часть 2
В предыдущей части уже были рассмотрены некоторые особенности работы vla-функций применительно к графической составляющей dwg-файла. Но были рассмотрены далеко не все вопросы. В частности, не было освещено «создание примитива через ActiveX без явного указания необязательных настроек». И никак не был затронут вопрос о модификации созданного примитива (точнее, удобства и очевидности изменения).
Начнем, пожалуй, с «настроек по умолчанию». Если в DXF Reference напрямую указываются необязательные параметры (то есть принимаемые текущими), то при работе через ActiveX ситуация иная: указываются только необходимые для создания примитива параметры. Все остальное необходимо задавать отдельными вызовами соответствующих функций. К таким параметрам можно отнести, например, цвет примитива (принимается текущий); тип линии примитива; слой примитива и т.п.
Создадим и активируем пользовательскую систему координат, ось Z которой непараллельна мировой и запустим следующие коды:
( entmakex ‘ ( ( 0 . «CIRCLE» )
( 10 100 . 10 . 20 . )
( 40 . 10 . )
)
) ;_ end of entmakex
( vla — addcircle
( vla — get — modelspace
( vla — get — activedocument ( vlax-get-acad-object ) )
) ;_ end of vla-get-modelspace
( vlax-3d-point ‘ ( 100 . 10 . 20 . ) )
10 .
) ;_ end of vla-addcircle
Обратите внимание, что в первом случае окружность создается в мировой системе координат, а вторая — в текущей. При этом координаты центра у них не совпадают. Поигравшись с trans, можно добиться полного соответствия результатов vla- и ent-функций. Но пока разговор немного не об этом.
Разберемся с модификацией примитивов.
Как правило, текущие настройки мало кого устраивают, и создаваемые примитивы (это касается не только графических элементов) приходится менять. Иногда при создании, иногда — уже готовые, но пришедшие из других файлов.
Сначала разберем вариант внесения изменений в ename-представление примитива:
_$ ( setq ent ( entlast ) )
< Entity name: - 401519e8 >
Преобразуем его в список:
_$ ( entget ent )
( ( 0 . «CIRCLE» ) ( 100 . «AcDbEntity» ) ( 8 . «0» ) ( 100 . «AcDbCircle» ) ( 10 100.0 20.0 — 10.0 ) ( 40 . 10.0 ) ( 210 0.0 — 1.0 0.0 ) )
Ненужные и некритичные элементы списка удалены.
Последовательность изменения такова: сначала надо изменить список; потом — модифицировать примитив; потом — обновить его графическое представление. Для этого обычно используются соответственно subst, entmod, entupd. Допустим, мы хотим изменить значение 210 группы на ‘(-1.0 0.0 0.0). Сначала проверим работу subst:
_$ ( subst ‘ ( 210 — 1.0 0.0 0.0 )
( assoc 210 ( entget ent ) )
( entget ent )
) ;_ end of subst
( ( 0 . «CIRCLE» ) ( 100 . «AcDbEntity» ) ( 8 . «0» ) ( 100 . «AcDbCircle» ) ( 10 100.0 20.0 — 10.0 ) ( 40 . 10.0 ) ( 210 — 1.0 0.0 0.0 ) )
Получилось? Получилось (еще бы!). Теперь обновляем примитив:
_$ ( entmod ( subst ‘ ( 210 — 1 . 0 . 0 . )
( assoc 210 ( entget ent ) )
( entget ent )
) ;_ end of subst
) ;_ end of entmod
; <. >
_$ ( entupd ent )
Активируем AutoCAD и наблюдаем за изменениями примитива. Казалось бы, достаточно просто. Но не без некоторых подводных камней.
Например, в примитиве могут повторяться ключи точечных пар (пример можно посмотреть чуть выше — в частности, это группы 100), и использованный assoc вернет «не то». Можете попробовать, используя представленный механизм, заменить координаты второй (или n-дцатой) вершины обычной полилинии. Кроме того, некоторые точечные пары могут вообще отсутствовать при создании примитива (например, пара 370 — вес линии; или группа 3 в многосточном тексте), и в таком случае приходится ее принудительно добавлять. Внесение же изменений, например, в трехмерную полилинию для неподготовленного человека сродни шаманству.
Теперь возьмемся за изменение vla-представления.
Отменим только что сделанные изменения и вернемся в VLIDE:
_$ ( setq ent ( vlax — ename -> vla — object ( entlast ) ) )
# < VLA - OBJECT IAcadCircle 01f43c0c >
Результат немногим более информативен, чем показанный ранее (entget (entlast)). Посмотрим свойства и методы vla-примитива:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
_$ ( vlax-dump-object ent t )
; IAcadCircle: AutoCAD Circle Interface
; Property values:
; Application (RO) = #
; Area = 314.159
; Center = (100.0 10.0 20.0)
; Circumference = 62.8319
; Diameter = 20.0
; Document (RO) = #
; Handle (RO) = «1FB»
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #
; Layer = «0»
; Linetype = «ByLayer»
; LinetypeScale = 1.0
; Lineweight = -1
; Material = «ByLayer»
; Normal = (0.0 -1.0 0.0)
; ObjectID (RO) = -1075124712
; ObjectName (RO) = «AcDbCircle»
; OwnerID (RO) = -1075131144
; PlotStyleName = «ByLayer»
; Radius = 10.0
; Thickness = 0.0
; TrueColor = #
; Visible = -1
; Methods supported:
; ArrayPolar (3)
; ArrayRectangular (6)
; Copy ()
; Delete ()
; GetBoundingBox (2)
; GetExtensionDictionary ()
; GetXData (3)
; Highlight (1)
; IntersectWith (2)
; Mirror (2)
; Mirror3D (3)
; Move (2)
; Offset (1)
; Rotate (2)
; Rotate3D (3)
; ScaleEntity (2)
; SetXData (2)
; TransformBy (1)
; Update ()
T
_$
Здесь сначала показываются доступные свойства примитива; следом идут его методы. Мы пока будем работать именно со свойствами, а методы оставим «на потом, если руки дойдут. И если кому-то понадобится».
Внесение изменений в vla-представления отличается от изменений ename-представлений. И отличия тут достаточно серьезные.
Прежде чем мы продолжим, следует напомнить, что при работе через ActiveX есть непреложное правило: первым аргументом функции обязательно идет указатель на объект, с которым выполняется работа. Без этого дальнейшее движение невозможно. Дополнительные данные по работе с ActiveX внутри VisualLISP можно посмотреть здесь.
Итак, отличия.
Во-первых, существует два варианта задания / чтения свойств: сокращенная и полная. У каждой есть свой плюс и свой минус. Сокращенная короче; полная — устойчивее.
Во-вторых, обновление большинства примитивов (спасибо Евгению Елпанову) при работе через ActiveX происходит после выхода из функции, в которой выполнялось изменение свойства примитива. То есть если написать код вида:
1
2
3
4
5
6
7
8
9
10
11
12
13
( defun test ( / ent )
( setq ent ( vlax — ename -> vla — object ( car ( entsel ) ) ) )
( test1 )
( test2 )
) ;_ end of defun
( defun test1 ( )
( vla — put — color ent 1 )
) ;_ end of defun
( defun test2 ( )
( vla — put — lineweight ent aclnwt211 )
) ;_ end of defun
то обновление примитива будет выполнено 3 раза: первый раз при выходе из test1, второй — при выходе из test2, третий — при выходе из test. При работе, например, с большими и насыщенными блоками, бездумное использование подобного подхода породит приличные проблемы с быстродействием готового кода. Особняком здесь стоят таблицы AutoCAD, но разговор о них впереди.
При «разборе» ename-представлений мы рассматривали изменений нормали объекта (группа 210). В vla-представлении это Normal. Проверим свойство Normal у пока неизмененного объекта (проверку будем выполнять в сокращенной и в полной форме):
_$ ( vla — get — normal ent )
# < variant 8197 . >
_$ ( vlax-get-property ent ‘normal )
# < variant 8197 . >
_$ ( vlax-get-property ent «normal» )
# < variant 8197 . >
И списком здесь, казалось бы, и не пахнет.
Ну, на самом деле не совсем так. Точнее, совсем не так. Это просто ActiveX-представление списка (так называемый variant). Его можно преобразовать в обычный список:
_$ ( vlax — safearray -> list ( vlax-variant-value ( vlax-get-property ent ‘normal ) ) )
( 0.0 — 1.0 0.0 )
Но нам-то надо наоборот: готовый список (точнее, трехмерные координаты точки) преобразовать во что-то «этакое».
Именно для списков из 3 чисел Autodesk внедрила функцию (vlax-3d-point). Вот ее-то и используем:
_$ ( vlax-put-property ent ‘normal ( vlax-3d-point ‘ ( — 1 . 0 . 0 . ) ) )
nil
И все бы хорошо, да вот незадача — координаты центра окружности в мировой системе координат при изменении через entmod меняются, а при vlax-put-property — нет. И это только потому, что для окружности в ename=представлении в группе 10 хранятся координаты в системе координат объекта (OCS). Мы же не трогали группу 10? Не трогали. Вот и получаем «ускакавший» примитив.
И если бы это был один примитив с подобным поведением! Так ведь нет — для примитива POINT (точка) координаты (кстати, тоже группа 10) хранятся в мировой системе координат; для LINE (отрезки) — тоже мировая; для TEXT (текста) — в OCS и т.д.
Поэтому при работе через ename приходится постоянно отслеживать — какой примитив и как меняется.
Пока это была только графика. Дальше попробую рассмотреть вопросы создания и модификации неграфических данных.
Что такое Vlax ename vla object и как его использовать

Vlax ename и vla object – это два основных понятия в AutoLISP, языке программирования для автоматизации систем CAD, таких как AutoCAD. В данной статье мы рассмотрим, что они означают, как использовать их и в каких случаях они могут быть полезны.
Vlax ename – это функция в AutoLISP, которая используется для работы с именами объектов в AutoCAD. Имена объектов – это уникальные идентификаторы, которые присваиваются различным элементам в чертеже, таким как линии, окружности, блоки и т.д. Функция vlax-ename позволяет получать и работать с информацией об объекте на основе его имени.
Vla object – это объектный интерфейс в AutoLISP, который предоставляет доступ к различным свойствам и методам объектов в AutoCAD. С помощью vla object можно получать информацию о размерах, расположении, цвете и других характеристиках объектов в чертеже. Он также позволяет выполнять различные операции, такие как перемещение, изменение формы, удаление объектов и т.д.
Использование vlax ename и vla object очень полезно при автоматизации процесса работы в AutoCAD, так как позволяет эффективно работать с объектами в чертеже. Например, вы можете использовать эти функции для создания команд, которые будут автоматически выполнять определенные операции с объектами на основе определенных условий. Это может быть полезно, например, при создании специфических элементов чертежа или при выполнении повторяющихся задач.
Что такое Vlax ename?
Vlax ename — это функция, предназначенная для получения имени вложенного объекта AutoLISP (VLAX) в языке программирования AutoLISP. Она возвращает строку, содержащую символьное имя объекта.
На практике, Vlax ename используется для работы с объектами в AutoCAD. Она позволяет получить имя объекта AutoCAD, которое затем можно использовать для выполнения различных действий с объектом.
Функция Vlax ename может быть полезна при создании автоматизированных задач в AutoCAD, таких как создание и редактирование объектов, расчеты и манипуляции с данными.
Ниже приведен пример использования функции Vlax ename для получения имени объекта:
(setq obj (vlax-ename->vla-object ename))
Где ename — это имя объекта AutoCAD, которое мы хотим получить, и obj — это переменная, куда будет сохранена ссылка на объект AutoLISP.
В общем, использование функции Vlax ename поможет вам манипулировать и работать с объектами в AutoCAD с помощью AutoLISP.
Определение и применение
Vlax ename и vla object являются функциями в языке программирования AutoLISP, используемом в AutoCAD. Они предоставляют доступ к объектам в AutoCAD и позволяют выполнять операции с этими объектами.
Vlax ename используется для преобразования строкового имени объекта в числовое представление, известное как «ename». Это числовое представление используется для обращения к объекту в AutoCAD. Функция принимает строковое имя объекта и возвращает его числовое представление.
Пример использования функции vlax ename:
(setq obj_ename (vlax-ename "CIRCLE"))
В примере выше, строковое имя объекта «CIRCLE» преобразуется в числовое представление и сохраняется в переменную obj_ename.
Vla object используется для доступа к функциональности и свойствам объектов в AutoCAD. Функция принимает числовое представление объекта и возвращает объект, к которому можно обращаться и выполнять операции.
Пример использования функции vla-object:
(setq circle (vla-object obj_ename))
В примере выше, числовое представление объекта, сохраненное в переменной obj_ename, используется для получения объекта circle, который представляет собой круг в AutoCAD.
После получения объекта, с помощью функций vla и vla-property можно выполнить различные операции с объектом, такие как изменение его свойств, перемещение или изменение его параметров.
Например, для изменения радиуса круга можно использовать следующий код:
(vla-put-Radius circle 10.0)
В примере выше, функция vla-put-Radius используется для изменения свойства Radius объекта circle на значение 10.0.
Таким образом, функции vla object и vlax ename предоставляют мощный инструмент для работы с объектами в AutoCAD, позволяя обращаться к ним, выполнять операции с их свойствами и функциональностью, и изменять их в соответствии с требованиями программы.
Что такое vla object и как его использовать?
Vla object (Versatile Lisp Application object) — это интерфейс, предоставляемый в AutoLISP для работы с объектами AutoCAD. Этот интерфейс предоставляет доступ к свойствам и методам объектов, что позволяет управлять ими и работать с ними через программный код.
Для работы с vla object необходимо использовать функции AutoLISP, такие как vlax-ename->vla-object и vlax-method-call.
-
vlax-ename->vla-object преобразует именованный объект AutoCAD (указанный в виде строки) в vla object, что позволяет получить доступ к его свойствам и методам. Например, для получения vla object текущего примитива можно использовать следующий код:
(setq ent (entget (car (entsel)))) (setq obj (vlax-ename->vla-object (car ent)))
(setq point (vlax-invoke obj 'getCoordinates))
Используя функции vlax-ename->vla-object и vlax-method-call, можно создавать сложные и удобные скрипты и программы для автоматизации задач в AutoCAD. Это особенно полезно при работе с большим количеством объектов или при выполнении повторяющихся операций.
Описание функционала и возможности
Vlax ename и vla object – это функции, которые применяются в AutoLISP для работы с объектами в AutoCAD.
- Vlax ename используется для преобразования идентификатора объекта AutoLISP в именованный объект AutoCAD.
- Vla object используется для доступа к свойствам и методам объекта AutoCAD через его именованный объект.
С помощью vlax ename можно получить именованный объект различных типов, таких как точка, линия, окружность, текст и многое другое. Это позволяет автоматизировать выполнение различных операций, таких как перемещение, изменение размера, копирование объектов в AutoCAD.
С помощью vla object можно работать с свойствами и методами именованного объекта AutoCAD. Например, можно получить координаты точки, изменить цвет и толщину линии, создать текстовое поле и многое другое.
Обе функции особенно полезны при написании скриптов и программ для AutoCAD, так как позволяют автоматизировать рутинные задачи и упростить работу с графическими объектами.
Например, с помощью vlax ename и vla object можно создать программу, которая будет автоматически изменять цвет всех линий определенного слоя в чертеже, что позволяет значительно ускорить процесс редактирования и обновления чертежа.
Также эти функции позволяют получить информацию об объектах AutoCAD, такую как их тип, слой, цвет, толщина линии и другие свойства. Это может быть полезным при работе с большими объемами данных или при создании отчетов и анализа чертежей.
Пример использования функций Vlax ename и Vla object:
В данном примере мы выбираем объект в AutoCAD, преобразуем его в именованный объект с помощью vlax ename и изменяем его слой на «NewLayer» с помощью метода vla object. Это пример того, как можно использовать эти функции для автоматизации изменения свойств объектов в AutoCAD.
Вопрос-ответ
Что такое Vlax ename?
Vlax ename — это функция AutoLISP, которая используется для получения имени объекта в формате символьной строки.
Что такое vla object?
Vla object — это объектная модель Microsoft Visual LISP AutoCAD (VLAX), которая предоставляет доступ к объектам AutoCAD и их свойствам и методам.
Как использовать Vlax ename и vla object?
Для использования функции Vlax ename нужно передать ей объект AutoCAD, а она вернет имя объекта в строковом формате. Для использования vla object нужно создать объект AutoCAD через функцию vla-get-ActiveDocument, а затем использовать его свойства и методы.
Ошибка: no function definition: VLAX-GET-OR-CREATE-OBJECTct
а также vlax-get-property, vlax-invoke-method, vlax-get-object, vlax-dump-object и некоторые другие c префиксом vlax.
А некоторые функции, например vl-acad-defun, vl-remove, vlax-add-cmd ЛИСП узнаёт.
Что я делаю не так?
Очень непонятно, ведь в хелпе про них написано без всякого намёка на возможные проблемы.
Как мне догадывается, проблема связана с КОМ взаимодействием, потому что не работают именно эти функции.
Ещё у меня Автокад 05 русифицирован (довольно криво), но это не должно влиять вроде.
