CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2020 开发者帮助

具体操作类

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

具体操作类

保存表达式的命名变量

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

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

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

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

平面上实体之间的几何约束集

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

AcDbAssoc2dConstraintGroup 拥有以下依赖项:

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

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

关联曲面建模

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

创建操作的示例包括

  • AcDbAssocExtrudedSurfaceActionBody
  • AcDbAssocBlendSurfaceActionBody
  • AcDbAssocOffsetSurfaceActionBody

修改操作的示例包括

  • AcDbAssocTrimSurfaceActionBody
  • AcDbAssocFilletEdgeActionBody

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

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

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

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

父主题:

  1. 关联框架

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部