ObjectARX中反应器的使用 反应器机制是观察者模式(设计模式)的一种实现,在该机制下,有事件通知者和事件接收者,负责接收事件的称为反应器 反应器列表:在反应器可以从通知者处接收消息之前,必须显式地将反应器添加到通知者的反应器列表中。 反应器部分类继承关系 种类:
编辑反应器:AcEditorReactor
实体反应器:AcDbEntityReactor
对象反应器:AcDbObjectReactor
图形数据库反应器:AcDbDatabaseReactor
文档管理反应器:AcApDocManagerReactor
根据反应器的基本性质,反应器被分为临时反应器和永久反应器。
临时反应器本身不是数据库对象,由开发者负责临时反应器的注册和卸载,用来监控数据库事件、用户操作以及其他的程序运行时的系统事件。
永久反应器是一个数据库的对象,由开发者创建并由AutoCAD负责删除,永久反应器可以接收及发送消息,可以被保存到DWG和DXF文件中,当图纸被加载的时候会重建永久反应器。用来实现对象之间的关联反应。
下面是一个永久反应器的例子:联动删除
自定义实体基类CthEntity继承ObjectArx里底层基类AcDbEntity。
重写自定义基类CthEntity的subErase()函数。
在subErase()函数里添加要联动删除的实体,一般以持久反应器实现联动。
删除实体触发Erase命令的subErase()函数
代码语言:javascript复制//zhaoanan subErase命令