CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

实现自定义行为

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

实现自定义行为

自定义行为是通过从 AcDbAssocActionBody 类派生具体类并重写必要的方法来实现的。要重写的方法都具有“重写”的后缀。不带此后缀的方法不应被重写。唯一必须始终重写的方法是 evaluateOverride() 方法。为每个用作“伪构造函数”的新自定义操作正文类实现 createInstance() 静态方法也是一个好习惯。它应创建自定义操作正文及其父操作的实例,正确设置它们,并将它们添加到数据库和关联网络中。

每次应用程序代码创建操作(拥有自定义操作正文)并将其添加到数据库和关联网络时,建议通过调用 AcDbAssocManager::evaluateTopLevelNetwork() 来显式计算顶级网络。评估顶级网络将评估新添加的操作,并且该操作将更新它所控制的对象(操作具有写入依赖关系的对象)的内容。这样,受控对象将与操作同步。当稍后添加一些其他操作并且这些操作依赖于相同的对象时,这些对象的内容将是它应该有的样子。如果不评估新添加的操作,则受控对象的内容可能不是预期的,并且根据这些对象添加新操作可能会产生意外结果。

当客户端代码更改操作正文的属性值时,建议调用 AcDbAssocActionBody::setStatus(kChangedDirectlyAssocStatus),以确保使用新的属性值计算拥有操作正文的操作。大多数更改操作正文属性的现有方法都会自动设置操作状态,因此通常不需要此显式调用。但是,对于新添加的自定义操作正文方法,此调用是必需的。否则,操作将不知道需要对其进行评估。

表示自定义操作正文数据

自定义操作正文可以以他们认为合适的任何形式保留其数据。但是,AcDbAssocParamBasedActionBody 类以统一和透明的方式表示自定义操作正文类的数据。派生自此类的自定义操作正文可以将其数据保留为派生自 AcDbAssocActionParam 类的操作参数的形式。操作参数负责以各种形式表示数据,并在操作正文请求时随时向操作正文提供当前值。自定义操作正文不需要负责管理其数据和处理序列化或克隆等操作,因为它是由 AcDbAssocParamBasedActionBody 类自动完成的。

AcDbAssocParamBasedActionBody 类还保留数值属性(称为值操作参数),这些属性可能是常量的,也可以由引用变量的表达式定义。如果该值为常量,则直接将其保留在 value action 参数中。如果它由表达式定义,则会自动创建一个 AcDbAssocVariable(匿名或具有显式名称)来保留表达式。

AcDbAssocParamBasedActionBody 类负责管理这些数值和表达式,包括管理自动创建的 AcDbAssocVariables。自定义操作正文代码不需要执行此操作,只需使用值操作参数来保留其数值属性即可。

只需键入值操作参数即可。如果该值表示角度,则角度以弧度为单位。AcDbAssocVariables 以度为单位保持角度。当值操作参数从其关联变量获取角度时,它会将其从度转换为弧度。如果该值表示距离,则自定义操作正文在某些情况下可能会考虑缩放它,例如,当操作控制的实体被缩放时。

操作参数

操作参数类提供了用于表示自定义操作正文数据的通用和高级机制。例如,当动作主体需要保留对实体的边子实体的引用(例如线实体、折线段、实体或曲面的边,或者通常对提供 AcGeCurve3d 几何图形的实体的任何子实体)的引用时,它会从 AcDbAssocEdgeActionParam 类创建一个对象,该对象负责保留数据。每当操作正文代码需要当前 AcGeCurve3d 几何图形时,它都会请求 AcDbAssocEdgeActionParam 类,并将当前几何图形提供给客户端代码。AcDbAssocEdgeActionParam 类负责以各种方式保留数据,例如通过引用数据库中的 AcDbEntity、引用 AcDbEntity 的边子实体或直接保持常量 AcGeCurve3d。数据的这种内部表示形式对自定义操作正文代码是完全透明的。自定义代码无需担心数据的保存方式或获取位置。

关联框架提供了一组预定义的操作参数:

  • AcDbAssocFaceActionParam 保留对实体的面子实体的引用,或直接保留面几何图形。
  • AcDbAssocEdgeActionParam 保留对实体的边子实体的引用,或直接保留 AcGeCurve3d 几何图形。
  • AcDbAssocVertexActionParam 保留对实体的顶点子实体的引用,或直接保留 AcGePoint3d。
  • AcDbAssocPathActionParam 保留 AcDbAssocEdgeActionParams 序列,表示由多个段组成的复合曲线。

应用程序可以通过对其他操作参数进行分组来创建复合操作参数,并使它们归 AcDbAssocCompoundActionParam 对象所有,或者从基 AcDbAssocActionParam 类派生自己的操作参数类。

父主题:

  1. 关联框架

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-3-28 17:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部