← 返回首页

CATIA V6 CAA 工程图模块二次开发常用接口库介绍

CATIA V6 CAA 工程图模块二次开发常用接口库介绍


本文目标是把 V6 工程图模块二次开发真正需要的接口库分层讲清楚:Drawing representation、Drawing / Sheet / View、普通 2D 内容、标注和尺寸、生成视图、生成几何追溯、BOM/GVS/filter、2D Layout 区分,以及和自定义 feature 的关系。

1.层级

V6 工程图二开不要只按“CATDrawing 文档对象”理解。更稳的路线是按下面几层拆开:

  1. PLM 表示层

    CATIPsiRepresentationReference 是 Drawing representation reference,CATDftDrawingPLMServices 负责创建 Drawing representation 和取得 CATIDftDrawing 根对象。

  2. Drafting 模型层

    CATIDftDrawing 管 sheets,CATIDftSheet 管 views,CATIDftView 是二维几何和标注的工作区。

  3. 标注层

    CATAnnotationUseItf 负责 text、balloon、table、dimension、GDT、datum、leader、dimension system。

  4. 生成工程图层

    CATDraftingGenUseItf 负责生成视图创建、更新、修改、生成几何访问、GVS、BOM、filter 和 2D/3D 映射。

  5. 2D Layout 层

    Drafting2DLUseItf 是 2D Layout for 3D Design,不能和普通 Drawing API 混用。

  6. 业务扩展层

    :用 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 CATDftDrawingPLMServicesCATDftGenPLMServices
Drawing / Sheet / View DraftingUseItf CATIDftDrawingCATIDftSheetCATIDftView
Drafting 基础工厂和标准 DraftingUseItfCATDibModelerUseItf CATIDftFactoryCATIDftStandardManagerCATIDftFormatsManager
Dress-up DraftingUseItf CATIDftBaseDressUpFactoryCATIDftSpecialDressUpFactoryCATDftDressUpServices
文本、Balloon、表格、箭头 CATAnnotationUseItf CATIDftBaseAnnotationFactoryCATIDftTextCATIDftBalloonCATIDftTableCATIDftArrow
尺寸和尺寸系统 CATAnnotationUseItf CATIDftDimensionFactoryCATIDftDimensionReferenceCATIDrwDimDimensionCATIDrwDimSystem
GDT、Datum、Roughness CATAnnotationUseItf CATIDftSpecialAnnotationFactoryCATIDftGDTCATIDftDatumFeatureCATIDftRough
Leader 和标注公共行为 CATAnnotationUseItf CATIDftAnnotationCATIDftLeaderCATIDftElementWithLeader
生成视图创建 CATDraftingGenUseItf CATIDftGenViewFactory
生成视图更新/修改 CATDraftingGenUseItf CATIDftGenViewUpdateCATIDftGenViewModificationCATIDftGenViewUpdateTransactions
生成几何访问和溯源 CATDraftingGenUseItf CATIDftGenGeomAccessCATIDftGenGeomCATDftGen2D3DServices
GVS、BOM、Filter CATDraftingGenUseItf CATDftGenGVSServicesCATIDftGenGVSOverloadCATIDftGenBOMCATDftGenBOMServicesCATDftGenFilterServicesFromProduct
2D Layout Drafting2DLUseItf CAT2DLayoutServicesCATI2DLayoutLayoutCATI2DLayoutSheetCATI2DLayoutViewCATI2DLayoutClipping
Drawing 与产品/表示上下文 ProductStructureInterfacesCATPLMComponentInterfaces CATIPrdRepInstanceCATIPrdOccurrenceMngtCATIPLMNavRepReferenceCATIPLMNavRepOccurrenceCATOmbObjectInContext
通用生命周期 DataCommonProtocolUse CATIUseEntityDataCommonProtocolServicesCATIUpdateProviderCATIReplace
自定义业务 feature FeatureModelerExt CATFmStartUpFacadeCATFmFeatureFacadeCATFmContainerFacadeCATIFmFeatureBehaviorCustomization

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() 取得 CATIDftGenViewUpdateCATIDftGenViewModificationCATIDftGenGeomAccess 等接口。

  • 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 表格行列、单元格、合并拆分、插入删除、尺寸
CATIDftLeaderCATIDftElementWithLeader 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 用于创建特殊标注:

  • CATIDftGDT
  • CATIDftDatumFeature
  • CATIDftDatumTarget
  • CATIDftRough
  • CATIDftIndicatorEdge
  • CATIDftTransitionSurface

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*

注意:

  • 部分接口或方法带 @nodocNOT 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

运行时链路:

  1. 从 Drawing representation 或 rep occurrence 进入 applicative container。
  2. 用 CATFmContainerFacade 绑定容器。
  3. 用 CATFmStartUpFacade 实例化业务 feature。
  4. 用 CATFmFeatureFacade 读写属性。
  5. 用 CATIFmFeatureBehaviorCustomization::Build() 做业务更新。
  6. 用 CATINavigateProvider / CATINavigateObject 把业务对象显示到 Drawing 树下。

17.2 Drawing / Sheet / View Extension

如果确认 Drafting 原生对象对应 feature 支持 extension,可以把业务 feature 做成 Drawing / Sheet / View extension。

使用时要先验证:

  • 目标 base feature 是否允许 extension。
  • OSM 中 ExtendsContainerContType 是否正确。
  • 删除时 CanBeRemoved() / BeforeRemove() 是否能走通。

第一版通常建议先用独立 container + base feature,避免破坏 Drafting 原生对象生命周期。

18. 推荐的开发顺序

如果要写一个稳定的 V6 工程图二开命令,建议按这个顺序推进:

  1. 明确目标是普通 Drawing 还是 2D Layout。
  2. 如果是普通 Drawing,先取得 Drawing representation reference,再用 CATDftDrawingPLMServices::GetDrawingRoot() 取得 CATIDftDrawing
  3. 确认 active sheet、目标 view、view 坐标系。
  4. 创建普通 view / detail view 时使用 CATIDftSheet
  5. 创建 text、balloon、table、dimension、GDT 时使用 CATAnnotationUseItf 的 factory。
  6. 创建生成视图时先准备 CATOmbObjectInContext 3D links,再用 CATIDftGenViewFactory
  7. 更新生成视图前先受控加载 3D data,再用 CATIDftGenViewUpdate
  8. 检查或标注生成几何时,用 CATIDftGenGeomAccess 查 generated item,再用 CATIDftGenGeom 反查 3D 来源。
  9. 业务数据保存到自己的 applicative container,不直接塞进 Drafting 原生结构。
  10. 删除、更新、重开后恢复都要纳入验证。

19. 常见坑

19.1 把普通 Drawing API 用到 2D Layout 上

很多 CATIDftSheet / CATIDftView 方法不适用于 2D Layout。先判断目标根对象,如果是 2D Layout,改用 CATI2DLayoutLayoutCATI2DLayoutSheetCATI2DLayoutView

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. 验证清单

开发完一个工程图能力后,至少验证下面几类数据:

  1. 空 Drawing:能否创建 representation、取得 CATIDftDrawing、添加 sheet。
  2. 多 sheet Drawing:active sheet / active view 是否恢复正确。
  3. 主视图与背景视图:标题栏和普通标注是否落在正确 view。
  4. 普通 2D view:text、table、balloon、dimension 是否可创建和二次编辑。
  5. 生成视图:3D 数据加载、创建、update、force update 是否稳定。
  6. 生成几何:能否从 3D feature / rep instance 重新查询 generated item。
  7. 剖视、局部、break、clipping:修改后 update 是否符合预期。
  8. BOM / GVS / filter:style、overload 和 product context 是否正确。
  9. 2D Layout:是否没有误用普通 Drawing API。
  10. 自定义业务 feature:关闭重开后能否恢复树节点和业务状态。

评论