明经通道 发表于 2013-1-3 14:50:28

第十二章 反应器和回调函数 (六) 临时反应器和永久反应器

临时反应器和永久反应器

反应器有临时和永久之分。在图形关闭时,临时反应器会丢失,这是默认的反应器模式。永久反应器则保存在图形中,在下一次打开该图形时它仍然存在。

用函数 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 该贴已经同步到 明经通道的微博

zyhandw 发表于 2013-1-3 15:21:16

抢沙发喽,楼主一下就更新了两个帖子,辛苦了!

smartstar 发表于 2013-1-3 16:12:39

老大辛苦了,元旦也不休息!

仲文玉 发表于 2013-1-4 14:08:57

反应器还没学过,支持

千指魔王 发表于 2014-8-21 23:36:52

我是过来学习的,楼主品德高尚

千指魔王 发表于 2014-9-11 07:10:25

楼主辛苦,对于这份辛苦,大家一定要努力学习
页: [1]
查看完整版本: 第十二章 反应器和回调函数 (六) 临时反应器和永久反应器