CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于使用对象反应器 (AutoLISP/ActiveX)

2023-1-6 00:47| 发布者: admin| 查看: 383| 评论: 0|来自: AutoCAD

摘要: 与其他AutoCAD反应器不同,对象反应器附加到特定的AutoCAD实体(对象)。

与其他AutoCAD反应器不同,对象反应器附加到特定的AutoCAD实体(对象)。

注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。

定义对象反应器时,必须标识要连接反应器的实体。创建对象反应器的函数需要以下参数:vlr-object-reactor

  • VLA 对象列表,用于标识要向反应器发送通知的图形对象。这些对象称为反应堆所有者。
  • 要与反应器关联的 AutoLISP 数据。
  • 命名事件和要与该事件关联的回调函数的对的列表。(event-name . callback_function)
谨慎:如果对象包含在对象反应器的所有者列表中,则无法使用回调函数修改该对象。尝试这样做将生成错误消息,并可能导致 AutoCAD 失败。

例如,以下语句定义一个具有单个所有者(由 标识的对象)的对象反应器,然后将字符串“Circle Reactor”附加到反应器,并告诉 AutoCAD 在用户修改时调用打印半径函数:myCirclemyCircle

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

反应器对象存储在变量中;您可以使用此变量引用反应器。定义所有者列表时,必须仅指定 VLA 对象;不允许使用枚举对象。VLA 对象是必需的,因为回调函数只能使用 ActiveX 方法来修改 AutoCAD 对象,而 ActiveX 方法需要 VLA 对象才能处理。您可以使用函数将这些 Ename 对象转换为 VLA 对象。circleReactorvlax-ename->vla-object

将数据附加到反应器对象

数据可以在创建对象反应器时使用附加到对象反应器,也可以稍后使用更改数据。vlr-object-reactorvlr-data-set

您不必指定要包含在反应器中的任何数据;您可以改为指定 nil。但是,一个物体可能有几个反应器连接到它。可以包含标识文本字符串或应用程序可以使用的其他数据,以区分附加到对象的不同反应器。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 13:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部