在ObjectARX培训教程的这一部分中,我们将看一下瞬态反应器。 反应器放置在AutoCAD环境中,以监视AutoCAD中发生的事件并对事件做出反应。 反应器有多种类型。
在这一步中,我们将研究四种类型的反应堆,即:
目的:此应用程序不会注册任何新的AutoCAD命令,它取决于在步骤3中开发的EMPLOYEE块参考的实例。您将需要在AutoCAD图形中插入EMPLOYEE块参考。 每当用户尝试移动EMPLOYEE块参考时,程序都会将EMPLOYEE块参考重置为其先前位置。 此处实现的策略是使用编辑器反应器,当某些AutoCAD命令修改EMPLOYEE块引用的位置时,将通知该反应器。 如果将其中一个编辑命令应用于一个或多个EMPLOYEE块引用,则将记录所讨论的EMPLOYEE块引用的原始位置和最终位置.为此,在每个EMPLOYEE块引用上都植入了对象反应器,以便检测何时打开块引用进行修改操作。这将在实际转换发生之前发生。为了在转换完成后检测块参考的新位置,我们还需要实现编辑器反应堆的“命令结束”通知。 最后,我们需要检测何时创建新的EMPLOYEE块引用,这可以通过数据库反应器来实现。 请记住,用户可以决定将编辑命令应用于选择集,并且选择集除其他类型的实体外还可以包含一个或多个EMPLOYEE块引用。为了处理这种情况,我们需要使用一个objectIds(AcDbObjectIdArray)数组来修改EMPLOYEE块引用。与此并行,我们还需要维护一个点数组(AGePoint3dArray)以存储EMPLOYEE块引用的相应原始位置。 为了进一步管理AcDbObjectIdArray和AcGePoint3dArray,我们需要逐个文档地管理这些数据。每个文档将管理自己的AcDbObjectIdArray和AcGePoint3dArray数据集。因此,当切换活动文档时,我们需要一个文档管理器反应器来管理适当的数据集。
Step07模板项目 . 模板项目已经实现了必要的命令,这些命令对于测试我们将在此步骤中实现的代码很有用. |
NEXT: 准备文件资料 |
Copyright ? 2013 Autodesk, Inc. |