CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2020 开发者帮助

关于 Reactor 指南 (AutoLISP/ActiveX)

2024-5-18 18:17| 发布者: admin| 查看: 107| 评论: 0|原作者: admin|来自: AutoCAD

关于 Reactor 指南 (AutoLISP/ActiveX)

使用反应器时,您需要确保反应器遵循一系列准则,以确保在反应器的内部实现发生变化时,它们不会为您的应用产生不可预测的结果。

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

您的反应堆应遵循以下准则:

  • 不要依赖反应堆通知的顺序。

    建议您不要依赖反应堆通知的顺序,但有少数例外。例如,OPEN 命令触发 、 、 和 事件。但是,它们可能不会按该顺序出现。唯一可以放心依赖的事件序列是 Begin 事件将发生在相应的 End 事件之前。BeginCommandBeginOpenEndOpenEndCommand

    例如,总是发生在 之前,总是发生在 之前。如果由于将来引入新通知和重新排列现有通知而更改了序列,则依赖更复杂的序列可能会导致应用程序出现问题。commandWillStart()commandEnded()beginInsert()endInsert()

  • 不要依赖通知之间的函数调用顺序。

    不保证在某些通知之间调用某些函数。例如,当您收到有关对象 A 的通知时,仅意味着对象 A 已被擦除。如果您在 A 上收到通知,然后在 B 上收到通知,则意味着对象 A 和 B 都被擦除;它不能确保 BA 之后被擦除。如果将应用程序与此详细级别绑定,则应用程序在将来的版本中中断的可能性非常高。与其依赖序列,不如依靠反应器来指示系统的状态。:vlr-erased:vlr-erased:vlr-erased

  • 不要在 reactor 回调函数中使用任何交互函数(例如,不要使用 、 )。getpointentsel

    尝试从 reactor 回调函数中执行交互式函数可能会导致严重问题,因为在触发事件时,AutoCAD 可能仍在处理命令。因此,请避免使用输入采集方法(如 、 和 )、以及选择集操作和命令函数。getpointentselgetkword

  • 不要从事件处理程序中启动对话框。

    对话框被视为交互式功能,可能会干扰AutoCAD的当前操作。但是,消息框和警报框不被视为交互式,可以安全地发出。

  • 不要更新发出事件通知的对象。

    调用回调函数时,导致对象触发回调函数的事件可能仍在进行中,并且 AutoCAD 仍在使用该对象。因此,不要尝试从同一对象的回调函数更新对象。但是,您可以安全地从触发事件的对象中读取信息。

    例如,假设您有一个铺满瓷砖的地板,并且您将一个反应器连接到地板的边界。如果更改地板的大小,reactor 回调函数将自动添加或减去瓷砖以填充新区域。该函数将能够读取边界的新区域,但不能尝试对边界本身进行任何更改。

  • 不要从回调函数执行任何将触发相同事件的操作。

    如果在 reactor 回调函数中执行触发相同事件的操作,则将创建一个无限循环。例如,如果尝试从事件中打开图形,AutoCAD 将继续打开更多图形,直到达到打开图形的最大数量。BeginOpen

  • 在设置反应器之前,请验证是否尚未设置反应器,否则最终可能会在同一事件上收到多个回调。
  • 请记住,当AutoCAD显示模式对话框时,不会触发任何事件。

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 13:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部