CATIA V6 CAA 工程图模块二次开发常用接口库介绍
- 作者: CATIA开发者指南
- 发布时间: 2026-06-29 08:30:00
- 原文链接: http://mp.weixin.qq.com/s?__biz=MzkxNTQ0MTY0NQ==&mid=2247486562&idx=1&sn=8b317ff0809e79a104d2d64d28366ccc&chksm=c15e5ee0f629d7f634ac4dd4274e7563be44aae313e818680f80773852de32b6527ec44c8520#rd
本文目标是把 V6 工程图模块二次开发真正需要的接口库分层讲清楚:Drawing representation、Drawing / Sheet / View、普通 2D 内容、标注和尺寸、生成视图、生成几何追溯、BOM/GVS/filter、2D Layout 区分,以及和自定义 feature 的关系。
1.层级
V6 工程图二开不要只按“CATDrawing 文档对象”理解。更稳的路线是按下面几层拆开:
-
PLM 表示层
:
CATIPsiRepresentationReference是 Drawing representation reference,CATDftDrawingPLMServices负责创建 Drawing representation 和取得CATIDftDrawing根对象。 -
Drafting 模型层
:
CATIDftDrawing管 sheets,CATIDftSheet管 views,CATIDftView是二维几何和标注的工作区。 -
标注层
:
CATAnnotationUseItf负责 text、balloon、table、dimension、GDT、datum、leader、dimension system。 -
生成工程图层
:
CATDraftingGenUseItf负责生成视图创建、更新、修改、生成几何访问、GVS、BOM、filter 和 2D/3D 映射。 -
2D Layout 层
:
Drafting2DLUseItf是 2D Layout for 3D Design,不能和普通 Drawing API 混用。 -
业务扩展层
:用
FeatureModelerExt在 Drawing representation 的 applicative container 中保存业务 feature,用导航 provider 显示到工程图树下。
如果只记一句话:
V6 工程图开发的主线是“PLM representation 找 Drawing 根,Sheet/View 定位二维上下文,Annotation 创建标注,GenUse 管生成视图和 3D 溯源,自定义业务数据放在自己的 container”。
2. 核心对象关系
普通 Drawing 的核心结构可以这样看:
Drawing Representation Reference
-> CATIDftDrawing
-> CATIDftSheet
-> Main View
-> Background View
-> Other Views
-> 2D geometry
-> annotations / dimensions / dress-up
-> generative view extension
-> generated items
-> 3D origin / rep instance / feature
生成视图再连接到 3D 上下文:
Product / Part / Representation
-> CATOmbObjectInContext
-> CATIDftGenViewFactory creates generative view
-> CATIDftGenViewUpdate updates result
-> CATIDftGenGeomAccess queries GenItems
-> CATIDftGenGeom traces 3D origin
这里最容易混淆的是:
-
CATIDftDrawing是 Drawing representation 的根对象,不是 2D Layout 根对象。
-
CATIDftSheet管 view 集合和 sheet 级设置。
-
CATIDftView是二维内容工作区,里面可以有 geometry、annotations、callout、generated results。
-
生成视图相关能力不要再依赖
CATIDftView::GetGenerSpec(),B426 头文件已提示 generative / 2DL / TPS 视图应使用GetApplicativeExtension()。 -
CATIDftGenGeom不应作为长期业务身份保存,生成视图 update 后应按 3D 来源和上下文重新查询。
3. V6 相比旧式工程图写法的关键变化
3.1 Drawing representation 是 PLM 对象
V6 下创建或定位工程图,应先考虑 Drawing representation reference。
DraftingUseItf/PublicInterfaces/CATDftDrawingPLMServices.h 提供:
GetAvailableDrawingStandards()GetListOfSheetStyles()CreateDrawingRepReference()GetDrawingRoot()GetDrawingRepresentation()
因此 V6 的入口通常不是“New 一个 CATDrawing 文件”,而是:
Drawing representation reference
-> CATDftDrawingPLMServices::GetDrawingRoot()
-> CATIDftDrawing
3.2 生成视图要求 3D 数据加载
DraftingUseItf/PublicInterfaces/CATDftGenPLMServices.h 提供:
static HRESULT Load3DDataFromDrawing(CATIPsiRepresentationReference *ipiDrawingRepRef);
它的作用是在 generative views update 前加载 Drawing 指向的 3D 数据。
工程上建议:
-
对同一个 Drawing 在一次业务流程中只做受控加载。
-
不要并发加载多个 Drawing 的 3D 数据。
-
E_INVALIDARG当作输入错误处理,不盲目重试。
-
E_FAIL记录 Drawing rep、3D rep、session 和 update 状态后隔离当前对象。
3.3 普通 Drawing 和 2D Layout 不是一套根模型
普通 Drawing:
CATIDftDrawing -> CATIDftSheet -> CATIDftView
2D Layout for 3D Design:
CATI2DLayoutLayout -> CATI2DLayoutSheet -> CATI2DLayoutView
很多 CATIDftSheet 方法在头文件里明确提示“不适用于 2D Layout”。如果任务目标是 2D Layout,优先查 Drafting2DLUseItf,不要硬套普通 Drafting API。
4. 常用接口库总览
| 需求 | Framework | 常用接口 |
|---|---|---|
| Drawing representation 创建和根对象 | DraftingUseItf |
CATDftDrawingPLMServices , CATDftGenPLMServices |
| Drawing / Sheet / View | DraftingUseItf |
CATIDftDrawing , CATIDftSheet, CATIDftView |
| Drafting 基础工厂和标准 | DraftingUseItf / CATDibModelerUseItf |
CATIDftFactory , CATIDftStandardManager, CATIDftFormatsManager |
| Dress-up | DraftingUseItf |
CATIDftBaseDressUpFactory , CATIDftSpecialDressUpFactory, CATDftDressUpServices |
| 文本、Balloon、表格、箭头 | CATAnnotationUseItf |
CATIDftBaseAnnotationFactory , CATIDftText, CATIDftBalloon, CATIDftTable, CATIDftArrow |
| 尺寸和尺寸系统 | CATAnnotationUseItf |
CATIDftDimensionFactory , CATIDftDimensionReference, CATIDrwDimDimension, CATIDrwDimSystem |
| GDT、Datum、Roughness | CATAnnotationUseItf |
CATIDftSpecialAnnotationFactory , CATIDftGDT, CATIDftDatumFeature, CATIDftRough |
| Leader 和标注公共行为 | CATAnnotationUseItf |
CATIDftAnnotation , CATIDftLeader, CATIDftElementWithLeader |
| 生成视图创建 | CATDraftingGenUseItf |
CATIDftGenViewFactory |
| 生成视图更新/修改 | CATDraftingGenUseItf |
CATIDftGenViewUpdate , CATIDftGenViewModification, CATIDftGenViewUpdateTransactions |
| 生成几何访问和溯源 | CATDraftingGenUseItf |
CATIDftGenGeomAccess , CATIDftGenGeom, CATDftGen2D3DServices |
| GVS、BOM、Filter | CATDraftingGenUseItf |
CATDftGenGVSServices , CATIDftGenGVSOverload, CATIDftGenBOM, CATDftGenBOMServices, CATDftGenFilterServicesFromProduct |
| 2D Layout | Drafting2DLUseItf |
CAT2DLayoutServices , CATI2DLayoutLayout, CATI2DLayoutSheet, CATI2DLayoutView, CATI2DLayoutClipping |
| Drawing 与产品/表示上下文 | ProductStructureInterfaces / CATPLMComponentInterfaces |
CATIPrdRepInstance , CATIPrdOccurrenceMngt, CATIPLMNavRepReference, CATIPLMNavRepOccurrence, CATOmbObjectInContext |
| 通用生命周期 | DataCommonProtocolUse |
CATIUseEntity , DataCommonProtocolServices, CATIUpdateProvider, CATIReplace |
| 自定义业务 feature | FeatureModelerExt |
CATFmStartUpFacade , CATFmFeatureFacade, CATFmContainerFacade, CATIFmFeatureBehaviorCustomization |
5. Drawing representation 与 CATIDftDrawing
5.1 创建 Drawing representation
CATDftDrawingPLMServices::CreateDrawingRepReference() 用于创建完整 Drawing representation reference,需要指定 drawing standard 和 sheet style。
典型流程:
GetAvailableDrawingStandards
-> GetListOfSheetStyles
-> CreateDrawingRepReference
-> GetDrawingRoot
-> CATIDftDrawing
注意:
-
标准名和 sheet style 不要硬编码,优先查询。
-
iSheetOrient可覆盖 sheet style 中的方向,但如果 sheet style 锁定方向,可能不会生效。
-
创建时可传
CATIAdpEnvironment,决定新 PLM 对象关联的 project / deployment 类型。
5.2 取得 Drawing 根对象
DraftingUseItf/PublicInterfaces/CATIDftDrawing.h 说明 CATIDftDrawing 是 drawing representation root,管理 sheets。
常用方法:
| 方法 | 作用 |
|---|---|
AddSheet() |
创建 sheet 或 detail sheet |
RemoveSheet() |
删除 sheet |
ValidateSheetOrder() |
校验 sheet 重排列表 |
ReorderSheets() |
重排 sheets |
GetActiveView() |
获取 active view |
GetActiveSheet() / SetActiveSheet() |
获取/设置 active sheet |
GetSheets() |
获取 drawing 下 sheets |
GetViews() |
获取 drawing 下 views |
GetStandardManager() |
获取 standard manager |
GetDrawingFactory() |
获取 CATIDftFactory |
建议把 Drawing 入口封装成:
HRESULT GetDrawingRoot(CATIPsiRepresentationReference *iRepRef,
CATIDftDrawing **oDrawing)
{
if (iRepRef == NULL || oDrawing == NULL)
return E_INVALIDARG;
*oDrawing = NULL;
return CATDftDrawingPLMServices::GetDrawingRoot(iRepRef, oDrawing);
}
6. Sheet:图页、主视图、背景视图和 view 集合
DraftingUseItf/PublicInterfaces/CATIDftSheet.h 是 sheet 对象接口。
常用方法:
| 方法 | 作用 |
|---|---|
GetDrawing() |
获取所属 drawing |
IsDetail() |
判断是否 detail sheet |
GetScale() / SetScale() |
获取/设置 sheet 全局比例 |
GetMainView() |
获取主视图 |
GetBackgroundView() |
获取背景视图 |
GetDefaultActiveView() |
获取默认 active view |
CreateView() |
在普通 sheet 中创建 view |
CreateDetailView() |
在 detail sheet 中创建 detail view |
ValidateViewOrder() / ReorderViews() |
校验/重排 views |
工程建议:
-
普通内容、生成视图、标注通常放在 main view 或业务 view 中。
-
标题栏、边框、固定企业文字通常放在 background view。
-
交互命令中切换 background view 可能影响用户编辑状态,尽量封装并恢复上下文。
-
CreateView()和
CreateDetailView()不要混用,detail sheet 只能创建 detail view。
7. View:二维工作区和生成视图扩展入口
DraftingUseItf/PublicInterfaces/CATIDftView.h 明确说明 view 是包含 geometries、annotations、callout 和 generative drafting results 的工作区。
常用方法:
| 方法 | 作用 |
|---|---|
GetSheet() |
获取 view 所属 sheet |
GetViewType() / SetViewType() |
获取/设置 view 类型 |
GetViewName() / SetViewName() |
获取/设置 view 名称 |
GetComponents() |
获取 view 内组件,可按 IID 过滤 |
Activate() / IsActive() |
激活/判断 active view |
GetApplicativeExtension() |
获取 generative / 2DL / TPS 等应用扩展 |
关键点:
-
GetGenerSpec()已 deprecated,生成视图相关能力应通过
GetApplicativeExtension()取得CATIDftGenViewUpdate、CATIDftGenViewModification、CATIDftGenGeomAccess等接口。 -
GetComponents()可取 annotations、geometry、callout 等,但 2D component instances / Ditto 不由该 API 管理。
-
创建标注、尺寸和 dress-up 前,先确认目标 view 已确定,坐标使用 view 坐标,单位通常是 mm。
8. Drafting 工厂与 Dress-up
8.1 CATIDftFactory
DraftingUseItf/PublicInterfaces/CATIDftFactory.h 由 drafting container 实现,用来创建基础 drawing feature。
常用方法:
| 方法 | 创建对象 |
|---|---|
CreatePattern() |
通用 pattern |
CreateHatchingPattern() |
hatching pattern |
CreateDottingPattern() |
dotting pattern |
CreateColoringPattern() |
coloring pattern |
CreateMotifPattern() |
motif pattern |
CreateVectorPattern() |
vector pattern |
CreateDrwAxisSysteme() |
generative view 到 3D axis system 的 link 对象,不适用于 2D Layout |
8.2 Dress-up factory
| 接口 | 作用 |
|---|---|
CATIDftBaseDressUpFactory |
创建 area fill、picture |
CATIDftSpecialDressUpFactory |
创建 axis line、center line、thread |
CATDftDressUpServices |
从 axis / centerline / thread 中提取可用于标注的 dimensionable sub-elements |
注意:dress-up 和 annotation 常要求 authoring license。失败时不要只看参数,也要检查授权和当前 view 类型。
9. Annotation:文本、Balloon、表格、Leader
CATAnnotationUseItf/PublicInterfaces/CATIDftBaseAnnotationFactory.h 是基础标注工厂,由 drafting view、2D Layout view 或 2D Component 实现。
常用方法:
| 方法 | 创建对象 |
|---|---|
CreateText() |
CATIDftText |
CreateBalloon() |
CATIDftBalloon |
CreateArrow() |
CATIDftArrow |
CreateTable() |
CATIDftTable |
InstantiateText() |
从 text template 实例化文本 |
InstantiateAnnTemplate() |
从 annotation template 实例化 |
对象接口:
| 接口 | 作用 |
|---|---|
CATIDftAnnotation |
标注公共位置、方向、移动、关联位置/方向、text box |
CATIDftText |
文本内容、换行、宽度、text range、text properties |
CATIDftBalloon |
balloon 文本读写 |
CATIDftTable |
表格行列、单元格、合并拆分、插入删除、尺寸 |
CATIDftLeader / CATIDftElementWithLeader |
leader 点、符号、target、leader list 和 anchor |
实战建议:
- 创建位置使用 view 坐标,单位通常是 mm。
- 表格索引多为 1-based,且行列数量、单元格范围有严格 precondition。
- 不要用 text + line 假装尺寸,尺寸应走 dimension factory。
10. Dimension:尺寸、尺寸引用和尺寸系统
CATAnnotationUseItf/PublicInterfaces/CATIDftDimensionFactory.h 是创建尺寸的主要 public 入口。
常用方法:
| 方法 | 作用 |
|---|---|
CreateDimensionReference() |
从 2D geometry 或 generated item 创建 dimension reference |
CreateDimension() |
根据 dimension references 和 CATDimDefinition 创建尺寸 |
CreateDimSystem() |
基于第一个尺寸创建 dimension system |
CreateCoordDimension() |
创建 coordinate dimension |
尺寸相关对象:
| 接口 | 作用 |
|---|---|
CATIDftDimensionReference |
尺寸引用,描述被标注对象和指示点 |
CATIDrwDimDimension |
维度对象主体 |
CATIDrwDimValue |
尺寸值 |
CATIDrwDimText |
尺寸文本 |
CATIDrwDimTolerance |
公差 |
CATIDrwDimFormat |
尺寸格式 |
CATIDrwDimDimensionLine |
尺寸线 |
CATIDrwDimExtensionLine |
延长线 |
CATIDrwDimSystem |
尺寸系统 |
创建尺寸的推荐链路:
目标 view
-> CATIDftDimensionFactory
-> CreateDimensionReference(2D geometry or generated item, pick point)
-> CATDimDefinition
-> CreateDimension
-> CATIDrwDimDimension 后续编辑
如果标注对象来自生成视图,建议用 CATIDftGenGeomAccess 重新查询 generated item,再创建 dimension reference。不要把旧的 generated item 指针长期保存。
11. GDT、Datum、Roughness 和特殊标注
CATIDftSpecialAnnotationFactory 用于创建特殊标注:
CATIDftGDTCATIDftDatumFeatureCATIDftDatumTargetCATIDftRoughCATIDftIndicatorEdgeCATIDftTransitionSurface
CATIDftGDT 负责 GDT 行、reference、tolerance symbol、tolerance/reference text range 等。特殊标注同样依赖 view 坐标和 authoring license。
工程建议:
- 创建前先确定目标 view 和 leader target。
- 创建后再用对象接口补充 symbol、文本、reference、leader。
- 不要把特殊标注作为普通 text 处理,否则标准、检索和后续编辑都会出问题。
12. 生成视图创建:CATIDftGenViewFactory
CATDraftingGenUseItf/PublicInterfaces/CATIDftGenViewFactory.h 由 sheet 实现,用于创建 generative drafting views。
常用方法:
| 方法 | 作用 |
|---|---|
CreateFrontView() |
创建主视图 |
CreateIsometricView() |
创建轴测视图 |
CreateUnfoldedView() |
创建展开视图 |
CreateViewFrom3D() |
从 3D TPS View 创建视图 |
CreateProjectionView() |
从母视图创建投影视图 |
CreateAuxiliaryView() |
创建辅助视图 |
CreateSectionView() / 相关方法 |
创建剖视图 |
CreateDetailView() / 相关方法 |
创建局部/详图视图 |
核心输入通常包括:
-
anchor point:sheet 坐标或 view 放置坐标。
-
projection plane:
CATMathPlane。 -
3D links:
CATOmbObjectInContext列表,指向 product instance 或 mechanical tool feature。 -
view style。
-
是否创建后立即 update。
-
CATDftGenViewProperties。
推荐流程:
Product / Part selection
-> path / rep instance / target feature
-> CATOmbObjectInContext list
-> CATIDftGenViewFactory on CATIDftSheet
-> CreateFrontView / CreateProjectionView / CreateSectionView
-> CATIDftGenViewUpdate
13. 生成视图更新和修改
13.1 CATIDftGenViewUpdate
CATDraftingGenUseItf/PublicInterfaces/CATIDftGenViewUpdate.h 是生成视图 update 接口,由 view 的 HLR applicative extension 实现。
常用方法:
| 方法 | 作用 |
|---|---|
Update() |
如果需要则更新生成视图 |
ForceUpdate() |
强制更新,即使不必要 |
GetGenViewUpdateStatus() |
查询是否 up-to-date |
取得方式建议:
CATIDftGenViewUpdate *pUpdate = NULL;
HRESULT hr = pView->GetApplicativeExtension(IID_CATIDftGenViewUpdate,
(CATBaseUnknown**)&pUpdate);
更新前如果 Drawing 指向 3D 数据,先走受控的 CATDftGenPLMServices::Load3DDataFromDrawing()。
13.2 CATIDftGenViewModification
CATDraftingGenUseItf/PublicInterfaces/CATIDftGenViewModification.h 用于修改生成视图。
常见能力:
- 添加 break。
- 添加 polygon / circle clipping。
- 添加 breakout。
- 添加 3D box clipping。
- 修改 links。
- 修改 projection plane 和生成属性。
- 复制 overload / clipping 等。
建议:
- 修改 operator 后统一 update,不要每步都 update。
- break / clipping 坐标要区分 current view 坐标和 unbroken view 坐标。
- 修改 3D links 时仍然要使用
CATOmbObjectInContext。
14. 生成几何访问和 3D 溯源
14.1 CATIDftGenGeomAccess
CATDraftingGenUseItf/PublicInterfaces/CATIDftGenGeomAccess.h 用于在生成视图上查询 generated items。
常用方法:
| 方法 | 作用 |
|---|---|
GetGenGeomStatus() |
查询是否生成了 GenItems |
GetAllGeneratedItems() |
获取全部 generated items |
GetGeneratedItemForm3DGeom() |
从 3D geometry 查生成项 |
GetGeneratedItemForm3DFeature() |
从 3D feature 查生成项 |
GetGeneratedItemsFrom3DRepInstance() |
从 representation instance 查生成项 |
GetAllGeneratedShapes() |
获取 generated shapes |
GetGeneratedImage() |
获取 raster/exact-raster 生成图片 |
14.2 CATIDftGenGeom
CATDraftingGenUseItf/PublicInterfaces/CATIDftGenGeom.h 管单个 generated item。
常用方法:
| 方法 | 作用 |
|---|---|
GetUnderlyingGeometry() |
获取底层 2D curve |
GetGeometryOfOrigin() |
获取来源 3D cells |
GetBody() |
获取来源 CATBody |
GetRepInstance() |
获取来源 representation instance 的 object in context |
GetFeature() |
获取来源 feature |
GetShowMode() / SetShowMode() |
读取/设置显示模式 |
GetTransformation() |
获取 3D 到结果几何的变换 |
IsCut() |
判断是否被 section plane 切到 |
关键规则:
- 生成几何是 update 结果,不是稳定业务主键。
- 如果要把检测结果绑定到 3D 来源,保存 3D feature / rep instance / path 语义,而不是只保存 generated item 指针。
- 视图更新后重新用
CATIDftGenGeomAccess查询。
15. GVS、BOM 和过滤
CATDraftingGenUseItf 中还有一组工程化接口:
| 场景 | 接口 |
|---|---|
| GVS 服务 | CATDftGenGVSServices |
| GVS overload | CATIDftGenGVSOverload |
| BOM 对象 | CATIDftGenBOM |
| BOM style 服务 | CATDftGenBOMServices |
| Product filter | CATDftGenFilterServicesFromProduct |
| Public generation request | CATIDftPublicGenRequest |
| Load dependency | CATIDftGenLoadDependency |
| Symbolic representation | CATIDftGenSymbolicRepresentation* |
注意:
- 部分接口或方法带
@nodoc、NOT IMPL, DO NOT USE,不要作为默认开发入口。 - BOM style 依赖当前 drawing standard。
- Filter 与 product root / PLM identifier 相关,不能只按显示名处理。
16. 2D Layout for 3D Design:不要和普通 Drawing 混用
Drafting2DLUseItf 是 2D Layout for 3D Design 的接口库。
| 主题 | 普通 Drawing | 2D Layout |
|---|---|---|
| 根对象 | CATIDftDrawing |
CATI2DLayoutLayout |
| Sheet | CATIDftSheet |
CATI2DLayoutSheet |
| View | CATIDftView |
CATI2DLayoutView |
| 创建入口 | CATDftDrawingPLMServices |
CAT2DLayoutServices |
| 典型上下文 | Drawing representation | Mechanical Part 内的 2D Layout root |
Drafting2DLUseItf/PublicInterfaces/CAT2DLayoutServices.h 提供:
GetAvailable2DLayoutStandards()GetListOfSheetStyles()CreateLayout2DL()GetLayout2DL()
它从 CATIMmiMechanicalFeature 进入或创建 2D Layout Root。
注意:
- 普通
CATIDftSheet的部分 frame、生成视图位置、GenerateDimensions API 对 2D Layout 不适用。 - 2D Layout 可抽取到普通 Drawing,但 detail sheets、2D component references、generated annotations 的行为有限制。
- 如果任务目标是工程图交付物,优先普通 Drawing;如果目标是 3D 设计环境中的二维布局,才走 2D Layout。
17. 和自定义 feature / FeatureModelerExt 的关系
工程图业务常见需求包括:
- 在 Drawing 规格树下创建业务节点。
- 保存尺寸检测要求、检查结果、问题清单。
- 记录某个 sheet / view / dimension / generated item 的业务状态。
- 生成报表或检查树,并能保存、更新、删除。
不建议直接修改 Drafting 原生对象私有结构。推荐路线是:
17.1 Base Feature + Applicative Container
Drawing Representation
-> Custom Applicative Container
-> DrawingCheckRoot
-> DrawingCheckSet
-> DrawingCheckItem
运行时链路:
- 从 Drawing representation 或 rep occurrence 进入 applicative container。
- 用
CATFmContainerFacade绑定容器。 - 用
CATFmStartUpFacade实例化业务 feature。 - 用
CATFmFeatureFacade读写属性。 - 用
CATIFmFeatureBehaviorCustomization::Build()做业务更新。 - 用
CATINavigateProvider/CATINavigateObject把业务对象显示到 Drawing 树下。
17.2 Drawing / Sheet / View Extension
如果确认 Drafting 原生对象对应 feature 支持 extension,可以把业务 feature 做成 Drawing / Sheet / View extension。
使用时要先验证:
- 目标 base feature 是否允许 extension。
- OSM 中
Extends、Container、ContType是否正确。 - 删除时
CanBeRemoved()/BeforeRemove()是否能走通。
第一版通常建议先用独立 container + base feature,避免破坏 Drafting 原生对象生命周期。
18. 推荐的开发顺序
如果要写一个稳定的 V6 工程图二开命令,建议按这个顺序推进:
- 明确目标是普通 Drawing 还是 2D Layout。
- 如果是普通 Drawing,先取得 Drawing representation reference,再用
CATDftDrawingPLMServices::GetDrawingRoot()取得CATIDftDrawing。 - 确认 active sheet、目标 view、view 坐标系。
- 创建普通 view / detail view 时使用
CATIDftSheet。 - 创建 text、balloon、table、dimension、GDT 时使用
CATAnnotationUseItf的 factory。 - 创建生成视图时先准备
CATOmbObjectInContext3D links,再用CATIDftGenViewFactory。 - 更新生成视图前先受控加载 3D data,再用
CATIDftGenViewUpdate。 - 检查或标注生成几何时,用
CATIDftGenGeomAccess查 generated item,再用CATIDftGenGeom反查 3D 来源。 - 业务数据保存到自己的 applicative container,不直接塞进 Drafting 原生结构。
- 删除、更新、重开后恢复都要纳入验证。
19. 常见坑
19.1 把普通 Drawing API 用到 2D Layout 上
很多 CATIDftSheet / CATIDftView 方法不适用于 2D Layout。先判断目标根对象,如果是 2D Layout,改用 CATI2DLayoutLayout、CATI2DLayoutSheet、CATI2DLayoutView。
19.2 长期保存 generated item 指针
生成几何是 update 结果,不是稳定身份。应保存 3D feature、rep instance、path/context 和业务规则,视图更新后重新查询 generated item。
19.3 创建生成视图前没有加载 3D 数据
生成视图 update 前应调用 CATDftGenPLMServices::Load3DDataFromDrawing()。批处理场景要避免并发加载和重复加载。
19.4 用 text 模拟尺寸或 GDT
尺寸应使用 CATIDftDimensionFactory 和 CATIDrwDimDimension;GDT 应使用 CATIDftSpecialAnnotationFactory 和 CATIDftGDT。否则标准化、检索和后续编辑都会困难。
19.5 坐标系混乱
Sheet 上放置 view 使用 sheet 坐标;view 内几何、标注、尺寸位置使用 view 坐标。生成视图的 3D 来源还涉及 CATOmbObjectInContext 和投影变换。
19.6 忽略 authoring license
Annotation 和 dress-up factory 的头文件多处提示 authoring product license。创建失败时要把授权状态纳入排查。
20. 验证清单
开发完一个工程图能力后,至少验证下面几类数据:
- 空 Drawing:能否创建 representation、取得
CATIDftDrawing、添加 sheet。 - 多 sheet Drawing:active sheet / active view 是否恢复正确。
- 主视图与背景视图:标题栏和普通标注是否落在正确 view。
- 普通 2D view:text、table、balloon、dimension 是否可创建和二次编辑。
- 生成视图:3D 数据加载、创建、update、force update 是否稳定。
- 生成几何:能否从 3D feature / rep instance 重新查询 generated item。
- 剖视、局部、break、clipping:修改后 update 是否符合预期。
- BOM / GVS / filter:style、overload 和 product context 是否正确。
- 2D Layout:是否没有误用普通 Drawing API。
- 自定义业务 feature:关闭重开后能否恢复树节点和业务状态。
评论