欢迎来到天天文库
浏览记录
ID:33546561
大小:212.50 KB
页数:60页
时间:2018-05-11
《autolisp使用反应器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章使用反应器11.1反应器反应器是一种反馈机制,它可以在发生某些特定事件时,将所发生的事件通知给应用程序,应用程序将会根据发生的具体事件做出相应的决策。例如,在某个图元上链接了一个反应器,如果用户移动这个图元,应用程序就会接到反应器的通知,知道了该图元被移动这个事件,如果需要,应用程序可以用适当的动作(如移动与该图元相关的其它图元,或显示有关信息等)响应该通知。1.反应器的类型反应器有多种类型,每种反应器对应一个或多个AutoCAD事件。反应器可以分为以下几个大类:l数据库反应器:当图形数据库发生特定类型的事件时,该反应器
2、将通知应用程序。l文档反应器:当前图形文档发生改变(如打开新的图形文档、激活其它文档窗口、改变文档的锁定状态等)时,该反应器将通知应用程序。l编辑器反应器:在调用AutoCAD命令(如打开图形、关闭图形、保存图形、输入输出DXF文件、改变系统变量的值等)时,该反应器将通知应用程序。l链接反应器:当加载和卸载ARX应用程序时,该反应器将通知应用程序。l对象反应器:当特定对象(AutoCAD图元)被修改、复制或删除时,该反应器将通知应用程序。调用函数vlr-types可返回反应器类型的完整列表。表11-1列出了AutoCAD反应器类
3、型及其标识符。表11-1AutoCAD反应器类型及其标识符反应器类型的标识符说明:VLR-AcDb-Reactor数据库反应器:VLR-DocManager-Reactor文档管理反应器:VLR-Editor-Reactor通用编辑器反应器:VLR-Linker-Reactor链接反应器:VLR-Object-Reactor对象反应器其中通用编辑器反应器被进一步细分为更加明确的几种反应器类型,见表11-2。表11-1中的通用编辑器反应器类型只是为了向后兼容才保留的,表11-2所示的各种编辑类型的反应器不能被通用编辑器:VLR-E
4、ditor-Reactor引用。表11-2编辑类型的各种反应器及其标识符反应器类型的标识符说明:VLR-Command-Reactor通报命令事件:VLR-DeepClone-Reactor通报deepclone事件:VLR-DWG-Reactor通报打开或关闭图形文件的事件:VLR-DXF-Reactor通报和读写DXF文件相关的事件:VLR-Insert-Reactor通报和插入块有关的事件:VLR-Lisp-Reactor通报LISP事件:VLR-Miscellaneous-Reactor(表中未列出的)其它编辑器反应器类
5、型:VLR-Mouse-Reactor通报鼠标事件(例如双击):VLR-SysVar-Reactor通报对系统变量的修改:VLR-Toolbar-Reactor通报对工具栏上位图的修改:VLR-Undo-Reactor通报undo事件:VLR-Wblock-Reactor通报和写块有关的事件:VLR-Window-Reactor通报和移动或改变AutoCAD窗口大小的事件:VLR-XREF-Reactor通报附着或修改XREF有关的事件3.反应器回调事件大部分AutoCAD操作都会产生一些特定的事件,这些事件能够用来触发反应器的
6、动作,这样的事件被称为回调事件。例如,当发出Save命令保存图形时,将会发生AutoCAD保存图形文件(:vlr-beginSave)的事件,当保存过程结束时,将会发生AutoCAD已将当前图形保存到磁盘(:vlr-saveComplete)的事件。设计基于反应器的应用程序就是根据回调事件的内容编写这些事件发生时所要激活的函数。vlr-reaction-names函数返回与给定反应器类型相关的所有事件组成的表:(vlr-reaction-namesreactor-type)参数reactor-type是反应器类型的标识,见表11
7、-1和表11-2。例如,下列代码将返回和图形反应器相关的所有事件组成的表:(vlr-reaction-names:VLR-DWG-Reactor)返回(:VLR-beginDwgOpen:VLR-endDwgOpen:VLR-dwgFileOpened:VLR-databaseConstructed:VLR-databaseToBeDestroyed:VLR-beginSave:VLR-saveComplete:VLR-beginClose)下列代码将返回和对象反应器相关的所有事件组成的表:(vlr-reaction-names
8、:vlr-object-reactor);返回(:VLR-cancelled:VLR-copied:VLR-erased:VLR-unerased:VLR-goodbye:VLR-openedForModify:VLR-modified:VLR-subObjMo
此文档下载收益归作者所有