在CATIA VBA開發中,Document對象是最核心、最基礎的對象之一。它代表了當前在CATIA會話中打開的一個文檔(文件)。
幾乎所有與文件操作、模型訪問相關的操作都始于獲取一個Document對象。Document對象包含多種方法和屬性,以下介紹Document對象方法和屬性
一、Document對象方法
1、方法和屬性列表

2、方法分類
分類 | 方法 | 功能描述 | 適用文檔類型 | 示例代碼 |
---|---|---|---|---|
文檔激活控制 | Activate | 激活文檔使其成為當前活動文檔 | 所有文檔類型 | targetDoc.Activate |
NewWindow | 為文檔創建新窗口 | 所有文檔類型 | doc.NewWindow | |
文檔生命周期 | Close | 關閉文檔 | 所有文檔類型 | doc.Close catSaveChanges |
Save | 保存文檔 | 所有文檔類型 | If Not doc.Saved Then doc.Save | |
SaveAs | 文檔另存為 | 所有文檔類型 | doc.SaveAs “C:\NewName.CATPart” | |
數據交換 | ExportData | 導出文檔為其他格式 | 所有文檔類型 | doc.ExportData “C:\export.stp”, “stp” |
交互選擇 | Indicate2D | 在2D環境(工程圖)中交互選擇元素 | DrawingDocument | Set elem = doc.Indicate2D(“選擇元素”, catSelectionFilterDimension) |
Indicate3D | 在3D環境(零件/裝配)中交互選擇元素 | PartDocument ProductDocument | Set face = doc.Indicate3D(“選擇面”, catSelectionFilterFace) | |
對象引用 | CreateReferenceFromName | 通過名稱創建對象引用 | 所有文檔類型 | Set ref = doc.CreateReferenceFromName(“Part1\Sketch.1”) |
GetItem | 通過名稱獲取文檔中的項目(參數、關系等) | 所有文檔類型 | Set param = doc.GetItem(“LengthParam”) | |
工作環境控制 | GetWorkbench | 獲取指定工作臺對象 | 所有文檔類型 | Set pdWB = doc.GetWorkbench(“PartDesignWorkbench”) |
選擇過濾 | CreateFilter | 創建選擇過濾器 | 所有文檔類型 | Set filter = doc.CreateFilter(“FaceFilter”) |
RemoveFilter | 移除選擇過濾器 | 所有文檔類型 | doc.RemoveFilter filter |
二、方法~文檔激活控制(Activate方法和NewWindow方法)
1、Activate方法
在CATIA VBA開發中,Document 對象的Activate方法 用于將指定的文檔設置為當前活動文檔(即獲得焦點的文檔)。
當CATIA會話中有多個文檔打開時,該方法至關重要,因為它決定了后續操作將在哪個文檔上執行。
- 方法功能
- 目標文檔會前置顯示在 CATIA 窗口中(如果被遮擋);
- 該文檔成為當前操作上下文(后續代碼默認作用于該文檔);
- CATIA.ActiveDocument 屬性會自動更新為被激活的文檔。
- 方法語法
myDocument.Activate
- 典型使用場景
場景一:切換活動文檔(多文檔操作)
Dim doc1 As Document, doc2 As Document
Set doc1 = CATIA.Documents.Open("C:\Part1.CATPart")
Set doc2 = CATIA.Documents.Open("C:\Assembly1.CATProduct")' 激活零件文檔
doc1.Activate
' 此時在 Part1 上操作...' 切換到裝配文檔
doc2.Activate
' 后續操作在 Assembly1 上進行
場景二:確保文檔處于活動狀態
' 獲取非活動文檔的引用
Dim inactiveDoc As Document
Set inactiveDoc = CATIA.Documents.Item(2) ' 假設是第二個打開的文檔' 強制激活它
inactiveDoc.Activate' 現在可以安全操作該文檔
Dim sel As Selection
Set sel = CATIA.ActiveDocument.Selection ' 正確獲取選擇集
場景三:新建文檔后立即激活
Dim newDrawing As Document
Set newDrawing = CATIA.Documents.Add("Drawing")
newDrawing.Activate ' 確保新工程圖成為當前文檔' 直接操作新文檔
Dim sheet1 As DrawingSheet
Set sheet1 = newDrawing.Sheets.Item("Sheet.1")
- 重要注意事項
- 非阻塞方法
Activate 方法會立即返回,但 CATIA 界面可能需要短暫時間完成切換(通常無需額外等待) - 與 ActiveDocument 的關系激活后,以下等式成立:
myDocument.Activate Debug.Print (myDocument Is CATIA.ActiveDocument) ' 輸出 True
- 避免不必要的激活
如果只需讀取文檔屬性(如 Name, Path),無需激活:
' 不激活即可獲取信息 Dim docName As String docName = myDocument.Name
- 錯誤處理
嘗試激活已關閉的文檔會引發錯誤:
On Error Resume Next myDocument.Activate If Err.Number <> 0 ThenMsgBox "文檔已關閉或無效" End If
- 非阻塞方法
- 最佳實踐
' 安全激活文檔的模板代碼
Sub SafeActivate(targetDoc As Document)On Error GoTo err_handlertargetDoc.ActivateExit Suberr_handler:If Err.Number = -2147467259 Then ' 典型錯誤號MsgBox "無法激活文檔: " & targetDoc.Name & vbCrLf & _"可能已被關閉", vbExclamationElseMsgBox "未知錯誤: " & Err.DescriptionEnd If
End Sub
- 經驗總結
方法 | 作用 | 是否需要激活文檔 |
---|---|---|
Activate | 切換活動文檔 | 前置條件 |
Save | 保存文檔 | 否 |
Close | 關閉文檔 | 否 |
GetItem | 按名稱獲取文檔內對象 | 否(但對象需有效) |
Update | 強制更新文檔特征 | 否 |
2、NewWindow方法
在 CATIA VBA 開發中,Document.NewWindow 方法 是一個強大的多窗口管理工具,用于為當前文檔創建新的獨立視圖窗口。
這個方法在需要同時查看同一文檔的不同區域或視角時特別有用,顯著提升設計效率和可視化能力。
- 方法功能
為當前文檔創建新的視圖窗口 - 方法語法
Function NewWindow() As Window
- 返回值:新創建的 Window 對象
- 核心功能與優勢
- 多視圖協同
同時查看模型的多個視角(如俯視圖、前視圖、3D視圖) - 獨立控制
每個窗口可獨立設置:- 縮放級別
- 觀察角度
- 渲染模式
- 顯示/隱
- 多視圖協同