ObjectARX反应器概述
来源:互联网 发布:淘宝便利店入口 编辑:程序博客网 时间:2024/04/26 13:48
AutoCAD中提供了类似MFC消息机制的通知方式。用于处理以下情况:
执行AutoCAD命令、修改系统变量、保存和退出图形编辑器或者切换当前工作布局空间等等。
反应器机制是观察者模式的一种实现,在该机制下,有事件通知者和事件接收者,负责接收事件的称为反应器。在反应器可以从通知者处接收消息之前,必须显式地将反应器添加到通知者的反应器列表中(观察者模式中的通知对象列表)。
常见反应器类型:
编辑反应器:AcEditorReactor
实体反应器:AcDbEntityReactor
对象反应器:AcDbObjectReactor
图形数据库反应器:AcDbDatabaseReactor
文档管理反应器:AcApDocManagerReactor
根据反应器的基本性质,反应器被分为临时反应器和永久反应器。
临时反应器本身不是数据库对象,由开发者负责临时反应器的注册和卸载,用来监控数据库事件、用户操作以及其他的程序运行时的系统事件。
永久反应器是一个数据库的对象,由开发者创建并由AutoCAD负责删除,永久反应器可以接收及发送消息,可以被保存到DWG和DXF文件中,当图纸被加载的时候会重建永久反应器。用来实现对象之间的关联反应。
如何使用一个临时反应器
从ARX内建的一系列反应器类中挑选一个合适的类派生,实现相关函数并注册反应器。
注意:永久反应器由AutoCAD负责删除,而临时反应器由程序员来负责删除。
如何使用一个永久反应器
1:从AcDbObject派生一个新类,并且实现你需要使用的事件函数。
2:将反应器对象实例化。
3:将反应器对象添加到数据库中,并将其存储起来(一般是存到容器中)
4:将反应器对象通过addPersistentReactor函数添加到通知者的反应器列表中。这个函数需要使用到反应器对象的id。
另外,需要使用ObjectARX的类声明宏为它创建一个类描述符对象
如果不使用ObjectARX宏,当自定义类被保存时将会继承其父类的类描述,并且当它从文件中被读出时会丢失标识。
反应器使用原则
1:不要依赖激活的顺序
除了类似commandWillStart和commandEnded这样的先后关系,不能依赖其他的顺序,因为引入新的通知或已有通知被重新排序时都会改变通知的顺序。
2:不要依赖通知间操作的顺序
对于一个反应器,先接收到了A对象的操作通知,后接到了B对象的操作通知,这不能保证A对象是在B对象之前操作的。
3:不要在通知回调函数中使用任何用户交互函数
任何与用户交互的函数都不要调用(类似于获取点等操作)
原文:http://www.cnblogs.com/DavidHsu/archive/2012/04/06/2435319.html
- ObjectARX反应器概述
- ObjectARX 概述
- ObjectArx 中反应器Reactor的使用
- ObjectARX编程环境概述
- ObjectARX学习笔记(十六)--如何设置CAD选项对话框的配置AcApProfileManagerReactor反应器
- ObjectARX
- ObjectARX学习笔记(二十三)---AcEdInputPointMonitor 反应器,用来重载CAD鼠标点处实体的提示信息
- ObjectARX:C# ObjectARX--起步
- ObjectARX下载ObjectARX Wizards
- 反应器模式
- 反应器模式
- ObjectARX简介
- ObjectARX 介绍
- ObjectARX-圆
- 关于objectarx
- ObjectARX 类库
- ObjectARX简介
- ObjectARX:C# ObjectARX--关于实体
- 部署Django项目
- idea导入struts2架包
- 自定义View练习2
- input type=radio ios点击后黑色背景的解决
- XRecyclerView 多条目加载
- ObjectARX反应器概述
- 提升自旋锁spinlock的性能-pause指令
- Struts2学习(二)【Struts2访问流程】
- css 文字超出部分使用...代替
- 在阿里云服务器上安装配置svn
- easyBCD修改系统启动项
- JQ工作整理笔记(1)
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
- js点击图片更换头像,input file