Использование элементов ActiveX в Visual LISP — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Использование элементов ActiveX в Visual LISP

2021-06-30 37
Использование элементов ActiveX в Visual LISP 0.00 из 5.00 0 оценок
Заказать работу

Элементы ActiveX - это программный интерфейс, который используется в поддерживающих его языках программирования. Элементы ActiveX обеспечивают взаимодействие между объектами, с одной стороны, и пользователем или приложением, с другой стороны. Технология ActiveX позволяет получать информацию об объектах чертежа с помощью функций доступа (get functions) и модифицировать объекты с помощью функций модификации (put functions).

Выше было рассмотрено, как извлекать и модифицировать информацию об объектах с помощью функций-интерфейсов на языке AutoLISP. Элементы ActiveX обеспечивают аналогичный способ получения и модификации информации. Однако для этого необходима определенная подготовка.

AutoCAD предоставляет все свои объекты, включая функции доступа и модификации, в распоряжение элементов ActiveX. Вначале в Visual LISP необходимо перед началом сеанса работы загрузить все функции ActiveX с помощью функции (vl-load-com) ↵

При этом все функции-интерфейсы ActiveX станут доступными. Загрузив интерфейс ActiveX, можно выполнить необходимые действия над созданным ранее отрезком. Но вначале нужно преобразовать имя сущности в объект vla. Этот объект ActiveX практически ничем не отличается от имени сущности, но содержит ряд свойств, которые отсутствуют в его аналоге в языке AutoLISP. Для преобразования используется функция vlax-ename-> vla -object. Пример обращения к этой фунции:

(setq vla-line (vlax-ename->vla-object (entlast)))↵Среда Visual LISP возвратит следующее выражение:#<VLA-OBJECT IAcadLine 03612b14>

Протокол операций будет выглядеть следующим образом:

Command: _line Specify first point: 5,5,0Specify next point or [Undo]: 15,-5,0Specify next point or [Undo]: *Cancel*Command: '_.zoom _eCommand: (vl-load-com)Command: (setq vla-line (vlax-ename->vla-object (entlast)))#<VLA-OBJECT IAcadLine 01f1bb4c>

Возвращаемое значение переменной есть объект vla. Теперь можно визуально отслеживать значения этой переменной, выделив ее и выбрав команду VIEW - INSPECT. То же самое можно сделать в окне CONSOLE, запустив функцию (vlax-dump-object vla -line) ↵

Возникающее окно инспектора показано на рис. 9.2.


Рис. 9.2. Окно инспектора объекта VLA

Для получения начальной точки объекта используется функция VLA -GET-STARTPOINT. В рассматриваемом примере отрезок был преобразован в объект vla, свойства которого содержит переменная vla -line. Для получения начальной точки можно ввести следующее выражение:

(setq Starting (vla-get-startpoint vla-line))↵

В ответ будет выдано сообщение:

#<variant 8197 …>

Чтобы преобразовать координаты начальной точки из типа данных variant к координатному формату, введите следующую строку кода:

(safe-array-value (vlax-variant-value Starting))↵

Теперь Visual LISP возвратит координаты начальной точки отрезка: (5.0 5.0 0)

Чтобы изменить значение свойства StartPoint на (0,0,0), напишите выражение:

(vla-put-startpoint vla-line (vlax-3d-point '(0 0 0)))↵

Проверьте отрезок в окне AutoCAD. Для проверки значения свойства StartPoint можно также воспользоваться функцией VLA -GET-STARTPOINT.

(safe-array-value (vlax-variant-value (vla-get-startpoint vla-line)))↵

Теперь Visual LISP возвратит такое значение: 1. 0.0 0.0

Задание 9.1

Получение и модификация свойств объектов

1. На новом чертеже постройте отрезок (5,5,0)-(15,5,0).

2. В окне CONSOLE редактора AutoLISP введите команду загрузки функции ActiveX (vl-load-com) ↵

3. Для преобразования имени сущности в объект vla введите: (setq vla -line (vlax-ename-> vla -object (entlast))) ↵

4. Чтобы просмотреть свойства объекта введите (vlax-dump-object vla -line)

5. Для получения начальной точки отрезка введите: (setq Starting (vla -get-startpoint vla -line)) ↵

6. Для преобразования координат начальной точки из типа данных variant к формату отображения координат введите: (safearray-value (vlax-variant-value Starting)) ↵

7. Чтобы изменить координаты начальной точки отрезка на 0,0,0, введите: (vla -put-startpoint vla -line (vlax-3d-point '(0 0 0))) ↵

8. Проверьте отрезок - его начальная точка находится в начале координат.


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.