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,新建一个 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,且目录需已存在,否则会抛出错误。
Dir(savePath, vbDirectory) 判断目录,或提前手工创建 D:\CATIA_Auto。五、运行与结果判断
在 VBA 编辑器中按 F5 运行 CreateAndSavePart。若一切正常,CATIA 界面会新增一个名为 Part1 的零件文档,同时弹出提示框显示保存路径。此时到资源管理器中确认 D:\CATIA_Auto\Demo_Part_01.CATPart 是否存在,文件大小通常为几十 KB(空零件)。若提示“运行时错误 91:对象变量未设置”,多半是 CATIA 未启动且 CreateObject 也失败,需检查自动化选项是否开启;若提示“运行时错误 1004”,通常是保存路径无效或文件被占用。
至此,环境搭建与第一个自动化脚本已经跑通。这个脚本虽然只做了“新建 + 保存”,但它完整覆盖了 Automation 开发的核心链路:连接应用、创建文档、获取模型对象、调用方法、处理路径与异常。后续所有复杂脚本,本质上都是在这条链路上增加几何创建、参数驱动和批量循环。