当前位置:首页 > Mechanical Modeler
CAA V5:Mechanical Modeler 技术中心CAD开发小组
? spFormBody是和形状特征(Topo C)关联的CATBody,使用CATIShapeFeatureBody 接
口(MechanicalModeler)可以返回它; ? 头两个参数在“运行拓扑操作”章节中有说明。
Topo B是结果几何体,可由CATIMfProcReport接口的GetResult函数返回,参照“运行拓扑操作”章节中的说明。
Part Design的例子“实现Mechanical设计特征的建立”给出了一个形状特征的例子。 3.6. Build和BuildShape函数的架构
这两个函数的用途是一样的: ? 管理更新错误 ? 考虑非激活特征
? 生成结果(参考“使用过程报告生成结果”和“不使用过程报告生成结果”) 3.6.1. 更新错误管理
? 如果发现一个错误阻碍了结果的生成,
将生成一个CATMfErrUpdate实例对象,它通过CATIUpdateError接口与特征关联,函数Build或BuildShape通过CATThrow返回错误。 ? 否则,
Build函数返回S_OK,BuildShape函数返回0
3.6.2. 考虑非激活特征
CATIMechanicalProperties 接口能够在更新机制中不激活/激活一个特征,在立体特征(MechanicalFormFeature 和 MechanicalContextualFeature)情形下,这个标记是自动考虑的,意思是在特征更新时CATIBuild接口不会被调用。但对于平面特征(GSMGeom 和 GeometricalElement3D),CATIBuild接口一直被调用,因此,除了从GeometricalElement3D派生的外的特征(CATIMechanicalProperties 接口对这种特征是无效的),你需要在Build函数中管理这个激活标记。 3.6.3. 函数的结构
函数Build和BuildShape的结构如下:
29
CAA V5:Mechanical Modeler 技术中心CAD开发小组
3.6.3.1. 声明有用的指针
在CATTry代码段前声明所有的指针:
? 用于CATTry和CATCatch代码段:如特征的CATIUpdateError接口指针
piUpdateErrorOnThis;
? 在CATTry代码段初始化,在有可能抛出异常的函数调用前不要释放它
所有的指针如果有错误发生需要在CATCatch代码段deleted/removed/released;同样的指针在
30
CAA V5:Mechanical Modeler 技术中心CAD开发小组
CATTry代码段的最后清除掉。 3.6.3.2. 检验特征的非激活状态
Build函数的第一件事就是检查特征是激活还是非激活的,注意的是BuildShape函数中它是不需要的,因为对于形状特征来讲,Build和BuildShape函数是不被调用的。
CATIMechanicalProperties接口能够知道特征的状态,CATIMfProcReport接口的InactivateResult函数处理非激活的结果,CATIMfProcReport接口指针_pIMfProcReport在CATTry代码段之前声明,因为InactivateResult函数有可能抛出异常。
如果是使用CATIMfResultManagement生成一个不带过程报告的结果,就不需要检查特征的非激活状态,因为你的特征是一个datum,没有实现CATIMechanicalProperties接口。 3.6.3.3. 清除上一个的错误
首先一步就是使前面更新的特征有关的可能错误失效
3.6.3.4. 生成特征结果(范围和拓扑)
参照“生成不使用过程报告的结果”和“生成使用过程报告的结果”章节。 3.6.3.5. 清除不用的数据 Release或delete不用的对象。 3.6.3.6. 处理CATMfErrUpdate错误
大多数情况下,当前的错误是足够的,它可以和没有修改的特征关联
31
CAA V5:Mechanical Modeler 技术中心CAD开发小组
这里:
? pIUpdateErrorOnThis是指向this的CATIUpdateError接口指针 ? SetUpdateError函数做几件事:
? 将错误与特征关联 ? 如果特征已经有错误:
? 有问题的特征拷贝到新的实例错误中 ? 错误管理也被拷贝到实例错误中
? 删除结果(Deleting the result):你只需要删除范围,不需要从几何容器中删除结果
CATBody,这个对象是由范围管理的。 ? 如果范围没有过程报告
这里pIMfResultManagement 是指向this的CATIMfResultManagement接口指针。 ? 如果范围有过程报告
这里pIMfProcReportOnThis是指向this的CATIMfProcReport接口指针。 ? 删除不用的指针:
一般情况下,必须生成一个新的CATMfErrUpdate类的实例。
32
共分享92篇相关文档