CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2023 开发者帮助

规划整个反应堆过程

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

规划整个反应堆过程

在本课中,您需要定义几个新函数。本课没有向您介绍新代码的所有方面的详细信息,而是概述了代码背后的概念。在本课程结束时,您将拥有创建与第 1 课中运行的示例程序相同的花园小径应用程序所需的所有源代码。

注意:在开发和调试基于 reactor 的应用程序时,总是有可能使 AutoCAD® 处于不稳定状态。这可能是由多种情况引起的,例如无法从已删除的实体中删除反应堆。因此,建议在开始第 7 课之前,关闭 Visual LISP,同时保存所有打开的文件,退出 AutoCAD,然后重新启动这两个应用程序。

首先加载第 6 课结束时存在的项目。

在花园小径应用中还有两项明显的工作要做:

  • 编写对象反应器回调。
  • 编写编辑器反应器回调。

您还需要考虑如何处理程序中的全局变量。通常,希望在整个 AutoCAD 图形任务中保留全局变量的值。然而,就反应堆而言,情况并非如此。为了说明这一点,假设您的花园路径应用程序的用户在一张图形中绘制了多条花园路径。执行此操作后,用户会擦除它们,首先一次擦除一个,然后一次擦除两个,依此类推,直到擦除一条路径以外的所有路径。

第 5 课介绍了一个全局变量,负责为即将擦除的折线存储指向反应器的指针。当声明为 时,该事件会让您知道折线即将被擦除。在事件触发之前,折线实际上不会被移除。*reactorsToRemove**reactorsToRemove*gp:outline-erasedgp:command-ended

用户首次删除折线时,一切正常。在 中,存储指向反应器的指针。当火灾发生时,你移除与反应堆所连接的折线相关的瓷砖,一切都很好。然后,用户决定擦除两条路径。因此,应用程序将获得两个对 的调用,每个调用对应于即将擦除的折线。您必须预料到两个潜在问题:gp:outline-erasedgp:command-endedgp:outline-erased

  • 当您使用变量时,必须将指向全局反应器的指针添加到全局变量中,确保不会覆盖已存储在那里的任何值。这意味着必须是列表结构,因此可以将反应堆指针附加到它。然后,您可以累积多个反应器指针,这些指针对应于用户在单个擦除命令中擦除的路径数。setq*reactorsToRemove**reactorsToRemove*
  • 每次触发时,指示新的命令序列正在开始,您应将变量重新初始化为 This is necessary ,以便全局不会存储来自上一个 erase 命令的反应器指针。gp:command-will-start*reactorsToRemove*nil.

    如果不重新初始化全局变量或使用正确的数据结构(在本例中为列表),则会出现意外行为。对于反应器,意外行为对AutoCAD任务可能是致命的。

以下是用户使用单个擦除命令擦除两条花园路径需要发生的一系列事件。请注意如何处理全局变量:

  • 启动 ERASE 命令。这将触发该函数。设置为 。gp:command-will-start*reactorsToRemove*nil
  • 选择两条折线;您的申请尚未收到通知。
  • 按 Enter 键擦除选定的两条折线。

    您的应用程序将获得对其中一条折线的回调。将其反应堆指针添加到 null 全局 .gp:outline-erased*reactorsToRemove*

    应用程序将获得第二条折线的回调。将其反应堆指针追加到已包含第一个反应堆指针的全局。gp:outline-erased *reactorsToRemove*

  • AutoCAD 将删除多段线。
  • 回调函数将触发。消除与存储在 中的反应器指针关联的任何图块。gp:command-ended*reactorsToRemove*

除了全局之外,应用程序还包括一个全局,用于存储指向将要修改的任何折线的指针。本课稍后将介绍应用程序的另外两个全局变量。*reactorsToRemove**polyToChange*


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-3-5 17:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部