CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

具体行动类

2022-12-31 15:55| 发布者: admin| 查看: 358| 评论: 0|来自: AutoCAD

保存表达式的命名变量

关联框架提供了一个操作类,用于表示具有名称、算术表达式和当前值的对象。表达式可以引用公开 AcDbAssocValueProviderPE 协议扩展的任何对象,包括其他变量(因为变量也公开此协议扩展)。AcDbAssocVariable 在这些对象上拥有只读的 AcDbAssocValueDependencies。

由于 AcDbAssocVariable 是一个操作,因此它与任何其他操作一样由 AcDbAssocNetwork 拥有,并且关联框架保证根据变量中的表达式引用其他变量的顺序以正确的顺序计算变量。不允许循环依赖关系。

AcDbAssocVariable 类与纯操作有些不同,因为它既是一个操作,又保留一个值。纯操作只是对其他一些对象执行操作,但不保留值,这些值由操作所依赖的对象保留。

AcDbAssocVariable 具有来自变量 “action” 对变量 “object” 的隐含仅写入依赖关系。隐含的依赖关系表示计算变量操作会更改变量对象的事实。此隐含依赖项不是数据库中的真实对象,但所有算法都假定此隐含的只写依赖项是变量依赖项列表中的第一个依赖项。“隐含”仅写入操作本身的依赖项的概念不仅适用于变量操作,还用于附加了依赖项的任何操作对象。

平面上图元之间的几何约束集

关联框架提供了一个内置的操作类,用于表示平面中几何之间的一组几何约束关系,例如重合、平行、垂直、切线、同心、距离、半径或角度约束。AcDbAssoc2dConstraintGroup 操作的评估首先获取引用几何的当前坐标,然后调用约束求解器来查找几何的新坐标,以便它们满足给定约束,最后更新引用几何的坐标。

AcDbAssoc2dConstraintGroup 拥有以下依赖项:

  • “AcDbAssocGeomDependencies on the Subentities of the Constrained AutoCAD AcDbEntities。如果“约束组”操作允许更改实体,则依赖项为读写。如果“约束组”操作不允许更改实体,则依赖项是只读的。
  • “只读 AcDbAssocValueDependencies on AcDbAssocVariables 提供尺寸约束的距离和角度值。对于仅测量几何而不施加任何约束的参考“约束”,AcDbAssocValueDependency 仅写入,因为变量是使用测量值设置的。
  • “如果尺寸约束使用 AutoCAD 对象或实体(如 AcDbDimension 实体)作为尺寸约束的图形表示形式,则约束组操作还拥有 AcDbAssocDependency 对象,这些对象拥有派生自 AcDbAssocDimDependencyBodyBase 的对象。它们促进了维度约束、保留维度约束值的 AcDbAssocVariables 和维度约束的图形表示形式(如 AcDbDimension 实体)之间的交互。

求解一组几何上的一组几何约束类似于求解方程组。几何对应于变量,约束对应于方程。几何约束求解器尝试查找几何的此类值,以便满足约束条件。当约束允许无限数量的可能的几何配置时,约束系统可能处于约束之下,当约束只允许一个(实际上,只有有限数量的几何配置)时,约束系统可能处于约束之下,或者当没有满足给定约束集的几何配置时,约束系统可能处于过度约束之下。请注意,上述三种状态并不相互排斥。约束系统可能同时对某些几何体进行约束不足,对其他几何图形进行完全约束,而对于其余几何图形则过度约束。

关联曲面建模

关联曲面建模功能由派生自 AcDbAssocSurfaceActionBody 类的操作主体实现。基类保留对生成的 AcDbSurface 实体的依赖关系。“创建操作”设置图面的初始内容,并在图面上具有只写依赖项。“修改操作”修改图面的内容,并在图面上具有读写依赖关系。表面上可能只有一个创建操作,并且它必须是表面上操作列表中的第一个操作。曲面可以具有任意数量的修改操作。

创建操作的示例包括

  • AcDbAssocExtrudedSurfaceActionBody
  • AcDbAssocBlendSurfaceActionBody
  • AcDbAssocOffsetSurfaceActionBody

修改操作的示例包括

  • AcDbAssocTrimSurfaceActionBody
  • AcDbAssocFilletEdgeActionBody

某些操作可能在一个曲面上充当创建动作,在其他曲面上充当修改动作。例如,AcDbAssocFilletSurfaceActionBody 是生成的圆角曲面的创建动作,但如果输入曲面要通过圆角操作修剪,它也可能充当两个输入曲面上的修改动作。如果是输入图面上的修改操作,则对输入图面具有读写依赖关系。如果不是,则它在输入图面上具有只读依赖项。

AcDbAssocExtendSurfaceActionBody 可以是创建操作,也可以是修改操作,具体取决于它是扩展现有图面还是将另一个图面的内容设置为扩展名。在前一种情况下,操作对扩展的图面具有读写依赖关系。在后一种情况下,它对输入图面具有只读依赖项,对生成的图面具有只写依赖项。

如果图面没有创建操作,但要对其应用修改操作,则会自动插入内部(未在 ObjectARX 中公开)AcDbAssocRestoreEntityStateActionBody 创建操作作为图面上的第一个操作。还原操作会在对曲面应用任何修改操作之前保留曲面初始状态的备份副本。还原操作的评估只是从备份还原图面的内容。

在操作评估期间,首先通过评估还原操作将表面恢复到其初始状态,然后评估修改操作并修改表面。


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部