CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于反应器指南 (AutoLISP/ActiveX)

2023-1-7 23:53| 发布者: admin| 查看: 213| 评论: 0|来自: AutoCAD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部