第十二章 反应器和回调函数 (六) 临时反应器和永久反应器
临时反应器和永久反应器反应器有临时和永久之分。在图形关闭时,临时反应器会丢失,这是默认的反应器模式。永久反应器则保存在图形中,在下一次打开该图形时它仍然存在。
用函数 vlr-pers 可使反应器成为永久反应器。如果要去掉反应器的永久性而使它成为临时反应器,可使用函数 vlr-pers-release。这两个函数都将反应器对象作为其唯一参数。例如,如下命令将使反应器成为永久反应器:
_$ (vlr-pers circleReactor)
#<VLR-Object-Reactor>
如果成功,vlr-pers 返回指定的反应器对象。
如果要确定某反应器对象是临时反应器还是永久反应器,可使用函数 vlr-pers-p,例如:
_$ (vlr-pers-p circleReactor)
#<VLR-Object-Reactor>
如果该反应器是永久反应器,函数 vlr-pers-p 会返回该反应器对象,否则返回 nil。
打开包含永久反应器的图形
反应器只是链接事件和回调函数的一种工具,即使反应器还在,回调函数本身并不是反应器的一部分,它一般也不是图形的一部分。只有在 AutoCAD 中加载了相关联的回调函数时,图形中保存的反应器才有实际作用。如果将反应器和回调函数定义在独立名称空间 VLX 中,则在打开图形时会自动加载回调函数。
如果打开的图形包括 VLISP 反应器信息,但没有加载相关回调函数,AutoCAD 会显示错误信息。可用函数 vlr-pers-list 返回图形文档中所有永久反应器组成的表。
在多重名称空间中使用反应器
当前的 AutoLISP 在任意时刻只能在一个文档中工作。而有些 AutoCAD API(如 ObjectARX 和 VBA)则支持应用程序同时在多个文档中工作。这样就造成了程序可能修改当前并非活动的其他被打开文档,但 AutoLISP 现在不支持该功能。
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 明经通道的微博 抢沙发喽,楼主一下就更新了两个帖子,辛苦了! 老大辛苦了,元旦也不休息! 反应器还没学过,支持 我是过来学习的,楼主品德高尚 楼主辛苦,对于这份辛苦,大家一定要努力学习
页:
[1]