CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

主要概念

2022-12-31 16:03| 发布者: admin| 查看: 323| 评论: 0|来自: AutoCAD

使用关联框架,您可以创建 AutoCAD 图形/模型,其中对象相互关联并相互交互。当图形中某些对象的属性发生更改时,直接或间接依赖于这些对象的已更改属性的所有其他对象将自动更新。只有需要更新的对象才会实际更新,并且按正确的顺序更新。这减少了临时使用 AutoCAD 反应器来实现类似目标的需要,并以统一、结构化和受控的方式表示对象关系。基于关联框架构建的所有应用程序(包括核心 AutoCAD 功能)都以统一的方式运行并以统一的方式更新对象。

框架的主要构建块是操作的概念,由类表示。操作是一种算法,在执行时,接受一些输入,执行计算并产生一些输出。动作通常从图纸中的属性中获取其输入;动作的输出通常意味着更改图形中某些其他对象的属性。操作对对象属性的依赖关系由类表示。AcDbAssocActionAcDbObjectsAcDbAssocDependency

当输入对象的属性发生更改时,将通知操作并在以后进行评估;其计算会更改输出对象的属性。这有效地在输出对象依赖于输入对象的对象之间建立了关系。可能存在其输出对象用作某些其他操作的输入对象的操作。在这种情况下,需要首先评估前一个操作,它们更改其输出对象的属性,然后后面的操作使用这些对象的更新属性。这将在操作之间建立(部分)顺序。动作聚集在网络中,这些网络是有向无环图的泛化,并按类表示。The本身是一个动作,允许表示分层关联结构。AcDbAssocNetworkAcDbAssocNetwork

当对象的属性发生更改时,将通知依赖于该对象的所有操作,但不会立即评估这些操作。稍后在明确请求时,将评估需要评估的所有操作。AutoCAD 请求操作评估的典型时间是在每个命令结束时,或者在拖动过程中,对每个拖动样本进行操作。动作评估更新动作的输出对象,从而有效地维护图形中对象之间的关系。

动作本身可以保留状态,但在许多情况下,它们或多或少是无状态算法,并且状态保存在图形中的对象/实体中。因此,通常保持绘图的状态,保持行为/智能,并且连接性由对象上的动作表示。将操作保持在一起,但不保留对象/实体。对象/实体由其各自的所有者保存,例如由,等AcDbObjects/EntitiesAcDbAssocActionsAcDbAssocDependenciesAcDbAssocNetworkAcDbBlockTableRecordsAcDbDictionaries

ObjectARX 中直接提供了一些派生的操作类。这是一个具有名称、算术表达式和当前值的操作。The是以一种二维变分约束的形式表示 AutoCAD 图元之间关系的操作,例如声明两条线是平行的,或者弧心与直线中点的距离由公式定义,例如。AcDbAssocVariableAcDbAssoc2dConstraintGroupd2=d1+a

应用程序可以派生自己的操作类,以实现内置对象或自定义对象之间的自定义行为和关系。当自定义行为以这种方式实现时,自定义行为将自己无缝地插入到关联机制中,而不是像以前那样使用反应器机制。然后在每个命令结束时自动评估它们,在每个拖动样本上评估它们,可以在克隆它们所依赖的对象时请求克隆,等等。


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 14:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部