1. CATIA二次开发全景认知

在进入任何一行代码之前,先把“CATIA二次开发”这张地图看清楚,是后续所有工作的前提。很多初学者一上来就急着写宏、调API,结果卡在“为什么我的脚本在V5能跑、到V6就报错”“为什么CAA工程编译不过”这类问题上,根源往往不是语法,而是对CATIA自动化架构的整体认知缺失。本章不写代码,只解决三件事:CATIA的自动化体系是怎么分层的、CAA与Automation API到底差在哪里、以及一个真实的设计自动化项目长什么样。

一、CATIA自动化的三层体系

CATIA的二次开发能力并非单一接口,而是由三个层次构成的体系,理解它们的边界比记住API名称更重要。

最底层是CAA(Component Application Architecture),即组件应用架构。它是Dassault Systèmes用来构建CATIA自身功能的C++开发框架,CATIA的每一个命令、每一个工作台,本质上都是基于CAA构建的组件。CAA提供的是“与CATIA内核同级别”的能力:可以创建全新的工作台、定义新的特征类型、扩展几何建模内核、深度定制用户界面。代价是开发门槛高——需要C++、需要RADE(Rapid Application Development Environment)集成开发环境、需要理解组件模型(Component)、接口(Interface)、TIE(Type Information Extension)等一整套概念,且编译部署与CATIA版本强绑定。

中间层是Automation API,也就是我们常说的“自动化接口”。它是一套基于COM(Component Object Model)技术的对象模型,通过VBScript、VBA、Python(借助pycatia等封装)、C#等语言即可调用。Automation API把CATIA的功能封装成对象:Application、Documents、Part、Body、ShapeFactory、HybridShapeFactory等,开发者通过操作这些对象来驱动CATIA。它的优势是上手快、无需编译、跨语言,适合做批量处理、参数化建模、报表导出这类任务;局限是只能调用CATIA已经暴露出来的功能,无法创造CATIA本身不具备的能力。

最上层是知识工程(Knowledgeware),包括公式(Formula)、规则(Rule)、检查(Check)、设计表(Design Table)、知识顾问(Knowledge Advisor)等。严格说它不算“编程”,而是用CATIA内置的规则语言描述设计意图,适合参数联动、配置驱动这类场景,常与Automation API配合使用。

CATIA 二次开发三层体系与能力边界 知识工程 Knowledgeware Formula · Rule · Check · Design Table · Knowledge Advisor 定位:用内置规则语言描述设计意图,参数联动与配置驱动 低门槛 调用/驱动 Automation API(COM 对象模型) Application · Documents · Part · Body · ShapeFactory · HybridShapeFactory 语言:VBScript / VBA / Python(pycatia) / C# 定位:调用CATIA已暴露功能,批量处理、参数化建模、报表导出 中门槛 封装/暴露 CAA(Component Application Architecture) C++ · RADE · Component / Interface / TIE 定位:与CATIA内核同级,创建新工作台、新特征类型、扩展几何内核 特点:编译部署,与CATIA版本强绑定 高门槛 能力深度 →

二、CAA与Automation API的核心区别

把两者放在一起对比,差异集中在五个维度上,这也是选型时的判断依据。

对比维度CAAAutomation API
开发语言C++VBScript / VBA / Python / C# 等
开发环境RADE + Visual StudioCATIA自带宏编辑器或任意IDE
部署方式编译为DLL,需注册到CATIA脚本文件直接运行,无需编译
能力范围可扩展内核、创建新工作台与特征仅调用已暴露功能
版本兼容与CATIA版本强绑定,升级需重编译跨版本兼容性较好

一个实用的判断原则是:如果CATIA现有功能能拼出来,就用Automation API;如果必须让CATIA“长出”它原本没有的能力,才上CAA。实际项目中,90%以上的设计自动化需求——批量改名、参数驱动建模、BOM导出、图纸批量生成——都属于前者。

三、设计自动化的典型应用场景

设计自动化不是炫技,它解决的是重复劳动和一致性问题。以下场景在汽车、航空、船舶等行业中非常普遍:

  • 参数化模板建模:把标准件、典型结构做成模板,输入尺寸参数后自动生成完整模型。例如输入法兰外径D=120mm、内径d=80mm、厚度t=15mm、螺栓孔数n=8,脚本自动完成草图、拉伸、阵列、倒角。
  • 批量数据转换与清理:将数百个CATPart批量导出为STEP、批量更新图纸标题栏、批量替换材料属性。
  • 设计校验与合规检查:遍历装配体,检查最小壁厚、干涉、命名规范,输出检查报告。
  • BOM与报表自动生成:从装配树提取零件号、数量、材料、质量,写入Excel。
  • 与外部系统集成:从PDM/ERP读取参数,驱动CATIA建模,回写结果。
判断一个任务是否值得自动化,可以看两个指标:重复频次(每周是否超过3次)和单次耗时(是否超过10分钟)。两者都满足时,自动化投入通常能在1~2个月内收回。

四、本课程实战项目预览

本课程将围绕一个贯穿始终的实战项目展开:“法兰类零件参数化自动建模与BOM导出工具”。选择它是因为法兰结构简单但要素完整——包含草图、旋转/拉伸、孔阵列、倒角、材料属性、自定义属性,几乎覆盖了Automation API最常用的对象和方法。

项目分四个阶段推进,每个阶段都有可验证的交付物:

  1. 阶段一:环境与第一个宏。配置CATIA宏环境,录制并运行第一个VBScript,理解Application、ActiveDocument、Part等基础对象的获取方式。
  2. 阶段二:参数化建模脚本。用ShapeFactory和HybridShapeFactory构建法兰几何,参数从Excel读取,示例参数为D=120、d=80、t=15、n=8、孔中心圆直径PCD=100。
  3. 阶段三:批量处理与BOM导出。遍历指定目录下的CATPart文件,提取自定义属性,生成CSV格式BOM。
  4. 阶段四:界面封装与部署。用VBA UserForm或Python+tkinter做简单界面,打包为可分发工具。