You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CATIA V5 VBA中是否有命令可返回当前打开文件名称以实现宏跨文件复用?

CATIA V5 宏动态适配不同3D文件的实现方案

你现有代码的核心问题是硬编码了固定文件名FILENAME.CATProduct,只要将这部分逻辑替换为动态获取目标3D文档的逻辑,即可无需每次修改代码适配不同文件,以下是两种常用实现方案:

方案1:调用当前已激活的3D文档(操作最简)

适用场景

运行宏前已提前打开目标CATProduct/CATPart文件,只需保证3D文件是最后一次激活的非工程图文档即可,无需手动选择文件。

修改后完整代码

Sub CATMain()

Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument

Dim drawingSheets1 As DrawingSheets
Set drawingSheets1 = drawingDocument1.Sheets

Dim drawingSheet1 As DrawingSheet
Set drawingSheet1 = drawingSheets1.Item("Sheet.1")

Dim drawingViews1 As DrawingViews
Set drawingViews1 = drawingSheet1.Views

' 动态获取当前打开的3D文档,兼容CATProduct和CATPart
Dim targetDoc As Document
Dim i As Integer
For i = 1 To CATIA.Documents.Count
    If TypeName(CATIA.Documents.Item(i)) = "ProductDocument" Or TypeName(CATIA.Documents.Item(i)) = "PartDocument" Then
        Set targetDoc = CATIA.Documents.Item(i)
        Exit For
    End If
Next
If targetDoc Is Nothing Then
    MsgBox "未检测到打开的CATProduct/CATPart文件,请先打开目标3D文件后再运行宏"
    Exit Sub
End If
Dim targetProduct As Product
Set targetProduct = targetDoc.Product

' 生成第一个等轴测视图
Dim drawingView1 As DrawingView
Set drawingView1 = drawingViews1.Add("AutomaticNaming")
Dim drawingViewGenerativeBehavior1 As DrawingViewGenerativeBehavior
Set drawingViewGenerativeBehavior1 = drawingView1.GenerativeBehavior
drawingViewGenerativeBehavior1.Document = targetProduct
drawingViewGenerativeBehavior1.DefineIsometricView 0.707107, 0.707107, 0#, -0.408248, 0.408248, 0.816497
drawingView1.X = -1262.192063
drawingView1.Y = -1262.192063
drawingView1.[Scale] = 1#
drawingViewGenerativeBehavior1.Update

' 生成第二个等轴测视图
Set drawingView1 = drawingViews1.Add("AutomaticNaming")
Set drawingViewGenerativeBehavior1 = drawingView1.GenerativeBehavior
drawingViewGenerativeBehavior1.Document = targetProduct
drawingViewGenerativeBehavior1.DefineIsometricView -0.707107, 0.707107, 0#, -0.408248, -0.408248, 0.816497
drawingView1.X = 7266.177117
drawingView1.Y = -1262.192063
drawingView1.[Scale] = 1#
drawingViewGenerativeBehavior1.Update

End Sub

方案2:弹出文件选择框手动选择3D文件

适用场景

目标3D文件未提前打开,运行宏时直接在弹出的窗口中手动选择对应CATProduct/CATPart文件即可。

修改后完整代码

Sub CATMain()

Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument

Dim drawingSheets1 As DrawingSheets
Set drawingSheets1 = drawingDocument1.Sheets

Dim drawingSheet1 As DrawingSheet
Set drawingSheet1 = drawingSheets1.Item("Sheet.1")

Dim drawingViews1 As DrawingViews
Set drawingViews1 = drawingSheet1.Views

' 弹出文件选择框获取目标3D文件
Dim fileDialog As FileSelectionBox
Set fileDialog = CATIA.FileSelectionBox("请选择目标CATProduct/CATPart文件")
fileDialog.Filter = "CATIA 3D文件 (*.CATProduct;*.CATPart)|*.CATProduct;*.CATPart"
If fileDialog.Show() <> "Normal" Then
    MsgBox "未选择任何文件,宏终止运行"
    Exit Sub
End If
Dim targetDoc As Document
Set targetDoc = CATIA.Documents.Open(fileDialog.FilePath)
Dim targetProduct As Product
Set targetProduct = targetDoc.Product

' 生成第一个等轴测视图
Dim drawingView1 As DrawingView
Set drawingView1 = drawingViews1.Add("AutomaticNaming")
Dim drawingViewGenerativeBehavior1 As DrawingViewGenerativeBehavior
Set drawingViewGenerativeBehavior1 = drawingView1.GenerativeBehavior
drawingViewGenerativeBehavior1.Document = targetProduct
drawingViewGenerativeBehavior1.DefineIsometricView 0.707107, 0.707107, 0#, -0.408248, 0.408248, 0.816497
drawingView1.X = -1262.192063
drawingView1.Y = -1262.192063
drawingView1.[Scale] = 1#
drawingViewGenerativeBehavior1.Update

' 生成第二个等轴测视图
Set drawingView1 = drawingViews1.Add("AutomaticNaming")
Set drawingViewGenerativeBehavior1 = drawingView1.GenerativeBehavior
drawingViewGenerativeBehavior1.Document = targetProduct
drawingViewGenerativeBehavior1.DefineIsometricView -0.707107, 0.707107, 0#, -0.408248, -0.408248, 0.816497
drawingView1.X = 7266.177117
drawingView1.Y = -1262.192063
drawingView1.[Scale] = 1#
drawingViewGenerativeBehavior1.Update

End Sub

注意事项

  • 两种方案都兼容CATProduct和CATPart两种3D文件类型,不需要单独调整代码
  • 方案2会自动打开你选中的3D文件,不会修改原文件内容,仅用于工程图视图关联

内容的提问来源于stack exchange,提问作者Davi Pristo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:21:02