- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13.1 反应器基础 反应器(Reactor)就是一个附加到AutoCAD图形对象上的对象,通过反应器可以使AutoCAD随时监测你所感兴趣的事件的发生并自动调用相应的程序。 反应器通过调用与它相关的函数来与应用程序通信,这样的函数被称为回调函数。 13.1 反应器基础 反应器通过调用与它相关的函数来与应用程序通信,这样的函数被称为回调函数,反应器的回调函数和用户用Visual LISP写的其他函数没有什么不同,用户将它们附到反应器事件时,它们就成了回调函数。 在AutoLISP中使用反应器函数之前,必须加载支持代码,才能使用这些函数。 13.1.1 反应器的类型 1) 数据库反应器(:VLR- Acdb一Reactor): 2)文档反应器(: VLR- DocManager一Reactor): 3)对象反应器(:VLR- Object- Reactor): 4)编辑反应器(:VLR- Editor一Reactor) 5) 链接反应器(:VLR- Linker一Reactor) 13.1.2 反应器的回调事件 对每种反应器,都有一些事件可使它通知用户的应用程序,这些事件被称为回调事件,因为它们将触发反应器调用与该事件相关的函数。 设计基于反应器的应用程序就是根据回调事件的内容编写这些事件发生时所要激活的函数。 13.1.3 反应器的回调函数 要设计一个基于反应器的应用程序,就必须首先确定的事件,然后再编写当该事件发生时所要执行的程序即回调函数(callbackfunction)。 反应器是通过回调函数同应用程序相互通信的,回调函数是一个用defun函数定义的标准AutoLISP程序,只不过是与其事件反应器绑定在一起时就成为了回调函数。也就是说反应器的回调函数就是回调事件发生时所要执行的函数。 13.1.3 反应器的回调函数 定义对象反应器回调函数和定义其他反应器的回调函数也不完全相同。 1.定义对象反应器的回调函数 2.定义其他反应器的回调函数 3.定义AutoCAD预定义的回调函数 13.2 生成反应器 创建反应器时要把回调函数和事件相连,对于建立每种类型的反应器都有一个与之相对应的AutoLISP函数,而这些函数的函数名与它的反应器类型相同,只是没有前面的冒号。创建反应器用vlr-??-reactor函数。如,vlr-acdb-reactor创建数据库反应器,vlr-toolbar-reactor创建工具栏反应器,依此类推,所有创建反应器的构造函数都返回一个反应器对象。 13.2.1 创建对象反应器 因为对象反应器必须链接到特定的AutoCAD图元(对象)上,所以在定义对象反应器时,必须指定反应器所要链接的图元。 对象反应器的调用格式如下: (vlr-object-reactor owners data callbacks) 13.2.1 创建对象反应器 创建对象反应器除了必须指定反应器所要链接的图元之外,还要注意以下几点: 1) 在定义所有者列表时,只能指定VLA对象,而不允许使用ename对象。要求VLA对象是因为回调函数只能用ActiveX方法修改AutoCAD对象,而ActiveX方法要求使用VLA对象。 2) 如果对象已被包括在对象反应器的所有者列表之中,那么就不能在回调函数中修改该对象。如果这样做,将会导致一个出错消息,并使AutoCAD崩溃。 13.2.2 创建其他反应器 其他反应器不需要链接AutoCAD图元,所以在定义时,只需要两个参数。 创建其他反应器通过函数vlr-??-reactor,该函数的调用格式如下: (vlr-??-reactor data callbacks) 13.2.3 将数据附着到反应器对象 利用创建反应器函数的参数data可以为反应器指定与其关联的数据,如果该项为nil,表示不需要为反应器指定与其关联的数据。 一个对象可能链接多个反应器,如果它们的参数data都为nil,应用程序将无法区分它们。在这种情况下就应该为反应器指定文本字符串或应用程序能识别的其他数据。 13.2.4 在多重名称空间中使用反应器 AutoLISP为运行在非激活文档中的反应器回调函数提供了有限的支持。默认情况下,只有在定义反应器的文档是活动文档时,才会在相关事件出现时,调用反应器的回调函数。但用户可使用vlr-set-notification函数改变这种默认行为。 13.3 查询、修改和控制反应器的状态
您可能关注的文档
- AutoCAD电气工程绘图教程 教学课件 作者 吴秀华 电力工程CAD11.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第1章 Visual Lisp 概述.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第2章 数据类型、表.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第3章 AutoLISP基本函数.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第4章 程序流程控制.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第5章 AutoLISP文件.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第6章 实体和设备访问函数.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第7章 AUTOLISP实训.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第9章 编辑源程序代码.ppt
- AutoCAD二次开发实用教程 教学课件 作者 郭秀娟 第10章 调试程序.ppt
文档评论(0)