Программы, созданные на платформе AutoCAD

Схема создания реактора

События и реакторы

Другие функции ActiveX

Кроме функций, реализующих методы объектов, и функций для работы со свойствами объектов, существуют функции, позволяющие автоматизировать некоторые операции, в том числе вычислительные.

Функции команд и методов позволяют создавать новые команды AutoCAD, применять методы (действия) к объектам.

Функции операций над объектами применяют какую-либо функцию сразу ко всем объектам семейства.

Функции операций с кривыми.

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

· вычисление площади замкнутой кривой;

· вычисление характерных точек кривой (при выборе примитивов характерные точки подсвечиваются);

· вычисление длины кривой между характерными точками;

· проверка кривой на замкнутость;

· проверка кривой на периодичность;

· вычисление первой и второй производных в заданной точке кривой;

и т. д.

Кроме этого, технология ActiveX дает возможность работы с несколькими одновременно открытыми чертежами.


Технология ActiveX позволяет автоматически следить за появлением тех или иных событий при работе с AutoCAD ом, и программировать выполнение каких-либо действий в ответ на появление событий.

События – это системные уведомления:

· о действиях пользователя с графическими примитивами, меню, панелями инструментов и т. д.;

· о действиях с устройствами (мышью, клавиатурой, принтером и т. д.).

Технология ActiveX позволяет создавать особые объекты, которые называются реакторами. Реакторы дают возможность запрограммировать реакцию системы на события. Объекты-реакторы называются VLR -объектами.

События генерируются системой постоянно, и этот процесс не зависит от пользовательских установок. Реакторы могут быть запрограммированы на некоторые (или все) события, которые должны быть перечислены при описании реактора. Действия реакторов (реакции, функции действия) являются функциями на языке LISP и создаются как обычные функции (с помощью функции defun).

Для работы с реакторами имеются функции, имена которых начинаются с символов vlr-. Эти функции создают реакторы, активизируют их, отключают и т. д.

Пользовательская функция-реактор имеет следующую структуру.

(defun … ()

(setq … (vlr-тип-reactor данные

(list ‘(событие1. функция1)

‘(событие2. функция2)

)

)

)

)

(defun … (параметры / локпеременные);Функция1

)

Тип – тип реактора. Реактору каждого типа соответствует несколько событий, на которые реактор умеет реагировать. Основными типами реакторов являются:

· AcDb – реактор событий работы с примитивами;

· DocManager – реактор событий работы с чертежом;

· Object – реактор событий работы с VLA -объектами;

· реакторы редактирования:

§ Command – реакторы команд;

§ Lisp – реакторы вычисления LISP -выражений;

§ Mouse – реакторы действий мышью;

§ SysVar – реакторы изменения системных переменных;

и т.д.

ДанныеLISP -данные любого типа, которые при срабатывании реактора передаются функциям действия (функция1, функция2 …) в параметры. Структура списка параметров зависит от порождающего события. Количество передаваемых данных должно соответствовать количеству параметров.

Если данные функциям не передаются, то после имени реактора указывается nil.

Если в функции действия необходимо передавать различные данные, то на функции действия должны быть ссылки в разных функциях setq.

Функция list создает список из точечных пар, каждая из которых состоит из события, отслеживаемого реактором, и функции действия, которую необходимо выполнить при наступлении этого события. Согласно требованиям языка AutoLISP, функции действия должны быть реализованы через технологию ActiveX.

В переменной, указанной в функции setq, сохраняется значение типа VLR -объекта.

Существует функция vlr-reaction-names, которая выводит список событий, соответствующих указанному типу реактора, например:

(vlr-reaction-names:vlr-AcDb-reactor) – вывод списка событий, возникающих при работе с примитивами. Только эти события могут быть указаны в списке точечных пар для реактора типа AcDb.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: