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

如何通过GetObject获取CATIA V5/3DExperience的对应进程?

区分CATIA V5与3DExperience进程的宏开发方案

1. 利用不同的COM ProgID直接获取

CATIA V5和3DExperience的COM ProgID并不相同,直接指定对应的ProgID就能精准获取目标进程:

  • CATIA V5的ProgID是CATIA.Application
  • CATIA 3DExperience的ProgID一般是CATIA3DExperience.Application(部分版本可能为3DEXPERIENCE.CATIA.Application,可根据实际安装版本验证)

示例代码:

' 获取CATIA V5实例
Dim catiaV5 As Object
Set catiaV5 = GetObject(, "CATIA.Application")

' 获取CATIA 3DExperience实例
Dim catia3Dx As Object
Set catia3Dx = GetObject(, "CATIA3DExperience.Application")

2. 读取进程命令行参数区分

如果ProgID方式不适用,可以通过遍历进程并检查命令行参数来判断:

  • CATIA V5的启动命令行通常包含CNEXT.exe或V5安装目录的路径
  • 3DExperience的命令行会带有3DEXPERIENCE相关的路径或标识

示例VBA代码(借助WMI读取进程信息):

Dim wmi As Object
Set wmi = GetObject("winmgmts:")

For Each process In wmi.InstancesOf("Win32_Process")
    If UCase(process.Name) = "CATIA.EXE" Then
        If InStr(process.CommandLine, "CNEXT") > 0 Then
            Debug.Print "找到CATIA V5进程,ID: " & process.ProcessId
        ElseIf InStr(process.CommandLine, "3DEXPERIENCE") > 0 Then
            Debug.Print "找到CATIA 3DExperience进程,ID: " & process.ProcessId
        End If
    End If
Next

3. 通过应用版本属性判断

获取CATIA对象后,读取其版本属性也能区分两者:V5版本号以R开头(比如R29、R30),3DExperience版本号是年份格式(比如2024x)。

示例代码:

Dim catiaApp As Object
Set catiaApp = GetObject(, "CATIA.Application")

Dim versionStr As String
versionStr = catiaApp.Version

If Left(versionStr, 1) = "R" Then
    Debug.Print "当前实例是CATIA V5"
ElseIf IsNumeric(Left(versionStr, 4)) Then
    Debug.Print "当前实例是CATIA 3DExperience"
End If

内容的提问来源于stack exchange,提问作者N.TW12

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:52:47