2. 开发环境搭建与第一个自动化脚本

CATIA 二次开发的第一道门槛并不在代码本身,而在于把“CATIA 能听懂脚本”这件事配置好。CATIA 对外提供的是 Automation 自动化接口,它基于 COM 技术,任何支持 COM 调用的语言(VBA、VB.NET、C#、Python 通过 pywin32 等)都可以驱动 CATIA。本节以最轻量的 VBA 宏为切入点,完成从环境确认、宏录制、对象模型查阅,到编写“新建零件并保存”脚本的完整闭环。

一、环境确认与自动化接口开启

在写第一行代码前,先确认三件事:CATIA 已正确安装并能正常启动;安装时勾选了 VBA 相关组件(默认安装通常包含);CATIA 的宏安全性允许运行本地宏。打开 CATIA,进入 工具 → 宏 → 宏…,如果能看到“宏库”对话框,说明 VBA 环境可用。若提示宏被禁用,需在 工具 → 选项 → 常规 → 宏 中把宏安全级别调整为“中”或“低”,并确认“允许宏”处于启用状态。

对于 VBA 之外的开发方式,还需要在 CATIA 中开启自动化服务。进入 工具 → 选项 → 常规 → 自动化,勾选“允许自动化”相关选项。这一步决定了外部程序能否通过 GetObject 或 CreateObject 连接到正在运行的 CATIA 实例。若使用 C# 或 VB.NET,还需在项目中引用 CATIA 的类型库(如 INFITF、PartInterfaces、MECMOD 等),这些类型库对应 CATIA 对象模型中的不同模块。

建议在开发阶段把宏安全级别临时调低,脚本调试完成后再恢复为“中”,避免长期处于低安全状态。

二、宏录制:让 CATIA 先替你写代码

宏录制是理解对象模型最快的途径。操作路径为 工具 → 宏 → 开始录制…,指定宏名称(例如 Macro1)和保存位置(推荐保存到“外部文件”或默认宏库),点击“开始”后,CATIA 会把接下来的每一步操作翻译成 VBA 语句。此时手动完成一次“新建 Part → 进入草图 → 画一个圆 → 退出草图 → 拉伸”的流程,再点击 工具 → 宏 → 停止录制。

随后打开 工具 → 宏 → 宏…,选中刚录制的宏并点击“编辑”,VBA 编辑器会显示生成的代码。典型片段如下:

Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim partDocument1 As Document
Set partDocument1 = documents1.Add("Part")
Dim part1 As Part
Set part1 = partDocument1.Part
Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.Item("零件几何体")
Dim sketches1 As Sketches
Set sketches1 = body1.Sketches
Dim sketch1 As Sketch
Set sketch1 = sketches1.Add(part1.OriginElements.PlaneXY)
' ……后续草图与拉伸代码

录制代码往往冗长、包含大量中间变量,且会记录鼠标点击产生的冗余操作。它的价值在于揭示“某个操作对应哪个对象、哪个方法”。阅读时重点关注 CATIA.Documents.Add("Part") 这类入口语句,以及 Part → Bodies → Body → Sketches → Sketch 的层级关系。

三、对象模型浏览器:查对象、查方法、查参数

CATIA 自带对象浏览器,入口在 VBA 编辑器的 视图 → 对象浏览器(快捷键 F2)。它按类型库组织,展开 CATIA 或 INFITF 等库后,可以看到每个类的属性、方法和事件。例如查找 Part 类,能看到 Bodies、Parameters、Update 等成员;查找 Document 类,能看到 SaveAs、Close、Part 等成员。

对象浏览器解决的是“我该调用谁”的问题,而对象之间的从属关系则要靠对象模型图理解。CATIA 的根对象是 Application,其下是 Documents 集合,每个 Document 根据类型可转换为 PartDocument、ProductDocument 等,再向下才是 Part、Product 等具体模型对象。掌握这条主干,写脚本时就不会在层级中迷路。

CATIA Automation 对象模型主干与脚本调用路径 Application Documents Document PartDocument ProductDocument Part Bodies SaveAs(路径) 脚本入口 Set CATIA = GetObject(,"CATIA.Application") 或 CreateObject 关键方法 Documents.Add("Part") Part.Update Document.SaveAs

四、编写第一个脚本:新建零件并保存

有了对象模型认知,就可以脱离录制、手写一个最小可用脚本。目标很明确:连接 CATIA,新建一个 Part 文档,把它保存到指定目录,并给出成功提示。在 VBA 编辑器中新建一个模块,写入以下代码:

Sub CreateAndSavePart()
    Dim CATIA As Object
    Dim partDoc As Document
    Dim part1 As Part
    Dim savePath As String

    ' 1. 连接正在运行的 CATIA 实例
    On Error Resume Next
    Set CATIA = GetObject(, "CATIA.Application")
    If CATIA Is Nothing Then
        Set CATIA = CreateObject("CATIA.Application")
        CATIA.Visible = True
    End If
    On Error GoTo 0

    ' 2. 新建 Part 文档
    Set partDoc = CATIA.Documents.Add("Part")
    Set part1 = partDoc.Part

    ' 3. 更新模型(新建文档通常无几何,此处保证状态一致)
    part1.Update

    ' 4. 保存到指定路径
    savePath = "D:\CATIA_Auto\Demo_Part_01.CATPart"
    partDoc.SaveAs savePath

    MsgBox "零件已创建并保存到:" & savePath, vbInformation, "执行完成"
End Sub

代码中有几个关键点值得注意。GetObject(, "CATIA.Application") 用于连接已经打开的 CATIA,若 CATIA 未启动则返回错误,因此用 On Error Resume Next 兜底,再尝试 CreateObject 新建实例。Documents.Add("Part") 的参数是文档类型字符串,返回的是通用 Document,需要再取 .Part 属性才能拿到 Part 对象。SaveAs 的路径必须包含扩展名 .CATPart,且目录需已存在,否则会抛出错误。

路径中的反斜杠在 VBA 字符串里无需转义,但若目录不存在,SaveAs 会失败。建议在脚本中先用 Dir(savePath, vbDirectory) 判断目录,或提前手工创建 D:\CATIA_Auto。

五、运行与结果判断

在 VBA 编辑器中按 F5 运行 CreateAndSavePart。若一切正常,CATIA 界面会新增一个名为 Part1 的零件文档,同时弹出提示框显示保存路径。此时到资源管理器中确认 D:\CATIA_Auto\Demo_Part_01.CATPart 是否存在,文件大小通常为几十 KB(空零件)。若提示“运行时错误 91:对象变量未设置”,多半是 CATIA 未启动且 CreateObject 也失败,需检查自动化选项是否开启;若提示“运行时错误 1004”,通常是保存路径无效或文件被占用。

至此,环境搭建与第一个自动化脚本已经跑通。这个脚本虽然只做了“新建 + 保存”,但它完整覆盖了 Automation 开发的核心链路:连接应用、创建文档、获取模型对象、调用方法、处理路径与异常。后续所有复杂脚本,本质上都是在这条链路上增加几何创建、参数驱动和批量循环。