您需要在本课中定义几个新函数。本 节 课 不 介绍 了 新 代码 的 所有 方面 的 详细信息, 而 是 概述 并 指出 了 代码 背后的 概念。在本课程结束时,您将拥有创建与在第 1 课中运行的示例程序相同的花园路径应用程序所需的所有源代码。 注意:当您正在开发和调试基于反应器的应用程序时,总是有可能使AutoCAD®处于不稳定状态。这可能是由多种情况引起的,例如无法从已删除的实体中移除反应器。因此,建议在开始第 7 课之前,关闭 Visual LISP,保存所有打开的文件,退出 AutoCAD,然后重新启动这两个应用程序。
首先加载第 6 课结束时存在的项目。 在花园路径应用中还有两个明显的工作要做:
您还需要考虑如何处理程序中的全局变量。通常,希望全局变量在整个 AutoCAD 图形会话中保留一个值。然而,就反应堆而言,情况并非如此。为了说明这一点,假设花园路径应用程序的用户在单个图形中绘制了多个花园路径。执行此操作后,用户将擦除它们,首先一次擦除一条,然后一次擦除两条,依此类推,直到除一条路径之外的所有路径都被擦除。 第 5 课引入了一个全局变量,负责存储指向即将擦除的折线的反应堆指针。当声明为 时,该事件会让您知道折线即将被擦除。在事件触发之前,折线实际上不会被删除。*reactorsToRemove**reactorsToRemove*gp:outline-erasedgp:command-ended 用户第一次删除折线时,事情会像您预期的那样工作。在其中,存储指向反应器的指针。当火灾发生时,你移除与反应堆所连接的折线相关的瓷砖,一切都很好。然后,用户决定擦除两条路径。因此,您的应用程序将收到两次调用,每个调用一个用于即将擦除的每条折线。您必须预见到两个潜在问题:gp:outline-erasedgp:command-endedgp:outline-erased
下面是用户使用单个擦除命令擦除两个花园路径所需的事件链。请注意全局变量的处理方式:
除了全局之外,应用程序还包括 aglobal,它存储指向将要修改的任何折线的指针。本课稍后将介绍该应用程序的两个附加全局变量。*reactorsToRemove**polyToChange* |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:13
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.