在CATIA VBA开发中,Document对象是最核心、最基础的对象之一。它代表了当前在CATIA会话中打开的一个文档(文件)。
几乎所有与文件操作、模型访问相关的操作都始于获取一个Document对象。
一、Document对象概述
1、获取Document对象:
- 当前活动文档: 最常见的方式是获取用户当前正在操作的文档。
Dim activeDoc As Document
Set activeDoc = CATIA.ActiveDocument ' 获取当前激活的文档
- 通过Documents集合: CATIA.Documents集合包含了所有当前在CATIA会话中打开的文档。你可以通过索引或名称来获取特定的Document对象。
Dim allDocs As Documents
Set allDocs = CATIA.Documents
' 通过索引获取
Dim doc1 As Document
Set doc1 = allDocs.Item(1) ' 获取集合中的第一个文档
' 通过名称获取(不包含路径的文件名)
Dim docPart As Document
Set docPart = allDocs.Item("MyPart.CATPart")
- 打开文档: Documents集合的Open方法会返回新打开的文档对象。
Dim newDoc As Document
Set newDoc = CATIA.Documents.Open("C:\Users\Name\Desktop\Assembly.CATProduct")
- 新建文档: Documents集合的Add方法会返回新创建的文档对象。你需要指定文档类型常量。
Dim newPart As Document
Set newPart = CATIA.Documents.Add("Part") ' 新建一个零件文档
' 常用文档类型常量:
' "Part" - CATPart
' "Product" - CATProduct
' "Drawing" - CATDrawing
' "FunctionalSystem" - CATfct (功能系统)
2、Document对象的类型:
- 在 CATIA VBA 开发中,Document 对象根据文件内容的不同,可分为八种主要类型。
每种类型对应特定的设计模块和功能,理解这些类型对于高效开发至关重要。- PartDocument(零件文档)
- 文件扩展名: .CATPart
- 核心对象: Part
- 功能描述:
- 用于零件设计(Part Design)
- 包含几何特征、草图、实体等
- VBA 访问:
If doc.Type = "Part" Then Dim partDoc As PartDocument Set partDoc = doc Set part = partDoc.Part End If
- 关键属性/方法:
- part.Bodies:几何体集合
- part.HybridBodies:混合几何体集合
- part.ShapeFactory:特征创建工厂
- ProductDocument(装配文档)
- 文件扩展名: .CATProduct
- 核心对象: Product
- 功能描述:
- 用于装配设计(Assembly Design)
- 管理组件关系和约束
- VBA 访问:
If doc.Type = "Product" Then Dim prodDoc As ProductDocument Set prodDoc = doc Set product = prodDoc.Product End If
- 关键属性/方法:
- product.Products:子组件集合
- product.Connections:装配约束
- product.AddComponent():添加新组件
- DrawingDocument(工程图文档)
- 文件扩展名: .CATDrawing
- 核心对象: Sheets(图纸集合)
- 功能描述:
- 用于创建二维工程图纸
- 包含视图、标注、注释等
- VBA 访问
If doc.Type = "Drawing" Then Dim drawDoc As DrawingDocument Set drawDoc = doc Set sheet = drawDoc.Sheets.Item(1) End If
- 关键属性/方法:
- drawDoc.Sheets:图纸页集合
- sheet.Views:视图集合
- sheet.Frames:图框对象
- FunctionalSystemDocument(功能系统文档)
- 文件扩展名: .CATfct (功能系统)
- 核心对象: FunctionalSystem
- 功能描述:
- 用于系统功能建模
- 包含功能逻辑和系统关系
- VBA 访问
If doc.Type = "FunctionalSystem" Then Dim funcDoc As FunctionalSystemDocument Set funcDoc = doc Set fSystem = funcDoc.System End If
- 典型应用:
- 电气线路设计
- 液压/气动系统
- 逻辑控制流程
- MaterialLibraryDocument(材料库文档)
- 文件扩展名: .CATMaterial
- 核心对象: MaterialLibrary
- 功能描述:
- 存储和管理材料属性
- 用于零件材料分配
- VBA 访问
If doc.Type = "MaterialLibrary" Then Dim matDoc As MaterialLibraryDocument Set matDoc = doc Set matLib = matDoc.MaterialLibrary End If
- 关键方法:
- matLib.AddMaterial():添加新材料
- matLib.GetMaterial():获取材料对象
- matLib.Save():保存材料库
- CatalogDocument(目录文档)
- 文件扩展名: .CATCatalog
- 核心对象: Catalog
- 功能描述:
- 创建和管理标准件库
- 用于装配中的标准件调用
- VBA 访问
If doc.Type = "Catalog" Then Dim catDoc As CatalogDocument Set catDoc = doc Set catalog = catDoc.Catalog End If
- 关键操作:
' 添加新零件到目录 catalog.AddComponentFromDocument "Bolt", CATIA.Documents.Item("Bolt.CATPart") &
- PartDocument(零件文档)