ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Использование Реакторов


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

AcRxDLinkerReactor

ObjectARX-приложение Мониторов загрузка и разгрузка.

AcEditorReactor

Контролирует AutoCAD-специфичные события типа оценок AutoLISP и Команд.

AcDbDatabaseReactor

Создание Мониторов, модификация, и стирание объектов базы данных.

AcTransactionReactor

События Мониторов, связанные с операционным менеджером — начало, аварийное прекращение работы, или конец сделки.

AcDbObjectReactor

События Мониторов, имеющие отношение к определенному созданию объекта — базы данных, модификации, стиранию.

AcDbEntityReactor

Контролирует дополнительное, примитив-определенное событие, типа изменяемой графики.



В большинстве случаев, только стандартные методы C++ необходимы для создания новых переходных реакторных классов. Макрокоманды ObjectARX, которые создают объект описателя класса для нового реакторного класса, не обычно используются, чтобы происходить от этих реакторных классов.

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

§          cancelled()

§          copied()

§          erased()

§          goodbye()

§          openedForModify()

§          modified()

§          subObjModified()

§          modifyUndone()

§          modifiedXData()

§          unappended()

§          reappended()


§          objectClosed()

Каждая из этих функций требует указателя на уведомителя события. Базовый класс, AcDbObjectReactor, имеет выполнение NULL для всех этих функций. В вашем полученном реакторном классе, осуществьте функции, соответствующие{*передающие*} типу уведомлений, которыми Вы заинтересованы. Тогда инициализируйте реактор, и добавьте это к любому числу объектов базы данных, использующих AcDbObject:: addReactor() функция. Чтобы добавлять или удалять переходный реактор к объекту уведомителя, объект может быть открытый в любом состоянии (чтение, записывать, или уведомлять).

Добавление или удаление переходного реактора не проверено механизмом отмены. (Для постоянных реакторов, объект уведомителя должен быть открыт для записи, и добавления, или удаление реакторов проверено механизмом отмены.)

Поскольку Вы создавали переходный реакторный объект, Вы также ответствены за удаление этого.

Когда объект стерт, например, это вызывает стертую передачу () функцией уведомления на каждом реакторе в его списке. Если Вы осуществили стертый () функция для вашего реактора, та функция будет вызвана{*названа*} объектом базы данных, и Вы можете тогда брать любое специальное действие,  соответствующий вашему приложению, когда объект стерт.


Содержание раздела