构造对象反应器对象
(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))))
明经通道 版权所有 未经许可 不得传播 | 评论 |