与其他AutoCAD反应器不同,对象反应器附加到特定的AutoCAD实体(对象)。 注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。
定义对象反应器时,必须标识要连接反应器的实体。创建对象反应器的函数需要以下参数:vlr-object-reactor
谨慎:如果对象包含在对象反应器的所有者列表中,则无法使用回调函数修改该对象。尝试这样做将生成错误消息,并可能导致 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。但是,一个物体可能有几个反应器连接到它。可以包含标识文本字符串或应用程序可以使用的其他数据,以区分附加到对象的不同反应器。 |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )
GMT+8, 2024-6-10 17:33
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.