《第11章 使用反应器 清华CAD二次开发 LISP》.ppt

《第11章 使用反应器 清华CAD二次开发 LISP》.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 使用反应器 清华CAD二次开发 LISP;11.1 反应器 反应器是一种反馈机制,它可以在发生某些特定事件时,将所发生的事件通知给应用程序,应用程序将会根据发生的具体事件做出相应的决策。例如,在某个图元上链接了一个反应器,如果用户移动这个图元,应用程序就会接到反应器的通知,知道了该图元被移动这个事件,如果需要,应用程序可以用适当的动作(如移动与该图元相关的其它图元,或显示有关信息等)响应该通知。 1. 反应器的类型 反应器有多种类型,每种反应器对应一个或多个AutoCAD事件。反应器可以分为以下几个大类: l?数据库反应器:当图形数据库发生特定类型的事件时,该反应器将通知应用程序。; l文档反应器:当前图形文档发生改变(如打开新的图形文档、激活其它文档窗口、改变文档的锁定状态等)时,该反应器将通知应用程序。 l编辑器反应器:在调用AutoCAD命令(如打开图形、关闭图形、保存图形、输入输出DXF文件、改变系统变量的值等)时,该反应器将通知应用程序。 l??链接反应器:当加载和卸载ARX应用程序时,该反应器将通知应用程序。 l对象反应器:当特定对象(AutoCAD图元)被修改、复制或删除时,该反应器将通知应用程序。 调用函数vlr-types可返回反应器类型的完整列表。表11-1列出了AutoCAD反应器类型及其标识符。;表11-1AutoCAD反应器类型及其标识符 ;表11-2 编辑类型的各种反应器及其标识符 ;3. 反应器回调事件 大部分AutoCAD操作都会产生一些特定的事件,这些事件能够用来触发反应器的动作,这样的事件被称为回调事件。例如,当发出Save命令保存图形时,将会发生AutoCAD保存图形文件(:vlr-beginSave)的事件,当保存过程结束时,将会发生AutoCAD已将当前图形保存到磁盘(:vlr-saveComplete)的事件。设计基于反应器的应用程序就是根据回调事件的内容编写这些事件发生时所要激活的函数。 vlr-reaction-names函数返回与给定反应器类型相关的所有事件组成的表: (vlr-reaction-names reactor-type) 参数reactor-type是反应器类型的标识,见表11-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 :vlr-object-reactor) ;返回(:VLR-cancelled :VLR-copied :VLR-erased :VLR-unerased :VLR-goodbye :VLR-openedForModify :VLR-modified :VLR-subObjModified :VLR-modifyUndone :VLR-modifiedXData :VLR-unappended :VLR-reappended :VLR-objectClosed); 加载并运行以下代码,将会打印出所有相关反应器事件的列表(按反应器类型排序)。 (defun print-reactors-and-events () (foreach rtype (vlr-types) (princ (strcat "\n" (vl-princ-to-string rtype))) (foreach rname (vlr-reaction-names rtype) (princ (strcat "\n\t" (vl-princ-to-string rname))))) (princ) ) AutoLISP Reference列出了与各种反应器类型相关的所有事件,有关信息在创建反应器的函数部分做了说明。 和ActiveX一样,必须首先调用vl-load-com函数,加载支持反应器和其它AutoLISP扩展函数之后,才能实现反应器的功能。;11.2 定义反应器的回调函数 反应器的回调函数就是回调事件发生时所要执行的函数。反应器的回调函数是用AutoLISP定义的。编写回调函数有以下一些限制:① 不能使用command函数调用AutoCAD命令,

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档