明经通道 Visual LISP 函数  
vlr-object-reactor
 

构造对象反应器对象

(vlr-object-reactor owners data callbacks)

反应器对象将被添加到图形数据库,但并不是永久反应器。

参数

owners

VLA 对象的 AutoLISP 表,标识要观察的图形对象。

data

任意要与反应器对象关联的 AutoLISP 数据。如果没有数据则为 nil。

callbacks

表,其中包含下列格式的点对:

(event-name . callback_function)

在这里,event-name 是表 “Object 事件”中的符号之一,callback_function 为符号,代表事件发生时要调用的函数。每个回调函数都接受如下三个参数:

owner 应用事件的 VLA 对象的所有者。

reactor_object 调用回调函数的 VLR 对象。

list 与特定事件相关联的其他数据元素。该表针对特定事件的内容见表 “Object 事件回调数据”。

返回值

reactor_object 参数。

Object 事件

名称

事件

:vlr-cancelled

对对象的修改已经取消。

:vlr-copied

对象已被复制。

:vlr-erased

对象的删除标志已被设置。

:vlr-unerased

对象的删除标志已被重置。

:vlr-goodbye

即将从内存中删除对象。

:vlr-openedForModify

即将修改对象。

:vlr-modified

对象已被修改。如果取消修改,还将激发 :vlr-cancelled and :vlr-modifyUndone。

:vlr-subObjModified

对象的子图元已被修改。在修改多段线或网格顶点时触发该事件,块参照拥有的属性也会触发该事件。

:vlr-modifyUndone

对对象的修改已被放弃。

:vlr-modifiedXData

对象的扩展图元数据已被修改。

:vlr-unappended

已从图形数据库中拆离对象。

:vlr-reappended

对象已被重新附着到图形数据库。

:vlr-objectClosed

对对象的修改已经完成。

Object events callback data

名称

表长度

参数

:vlr-cancelled

:vlr-erased,

:vlr-unerased

:vlr-goodbye

:vlr-openedForModify

:vlr-modified

:vlr-modifyUndone

:vlr-modifiedXData

:vlr-unappended

:vlr-reappended

:vlr-objectClosed

0

:vlr-copied

1

由复制操作创建的对象 (ename)。

:vlr-subObjModified

1

已被修改的子对象 (ename)。

示例

下面的代码将对象反应器附着到 myCircle 对象。它定义反应器来响应对象是否已被修改 (:vlr-modified),并调用 print-radius 函数对修改事件做出反应:

(setq circleReactor (vlr-object-reactor (list myCircle)
         "Circle Reactor" '((:vlr-modified . print-radius))))

明经通道 版权所有 未经许可 不得传播

 评论