CATIA Knowledgeware与EKL参数化设计:从Parameter到Knowledge Pattern
CAD开发CATIAKnowledgewareEKL参数化设计

CATIA Knowledgeware与EKL参数化设计:从Parameter到Knowledge Pattern

2026年5月9日
5分钟
0 阅读
作者:青岛辰时
深入CATIA Knowledgeware五大对象(Parameter、Rule、Check、Reaction、Knowledge Pattern),结合EKL语法、参数化法兰盘完整示例与企业级落地建议,掌握工业级参数化设计的核心技能。
太长不看

CATIA Knowledgeware(KW)是"不用 C++ 也能产出生产级成果"的参数化与规则中枢。

  • 五大知识对象:Parameter(参数)、Rule(规则,写在前)、Check(校验,被动触发)、Reaction(事件驱动)、Knowledge Pattern(批量化模板)。
  • 主力模块组合:KWA(参数+Rule+Check) + PKT(UDF / Power Copy / Knowledge Pattern / Document Template)。
  • EKL 是 KW 的内部脚本语言,语法像 BASIC+SQL 混血,变量本质是 CATIA 模型中真实存在的对象。
  • 推荐入门路径:参数化法兰盘 → 标准件族 → 企业级骨架与合规检查。

CATIA Knowledgeware 与 EKL 参数化设计:从 Parameter 到 Knowledge Pattern

引言

如果说 CAA RADE 是 CATIA 二次开发的"重型武器",那么 Knowledgeware(KW)就是它的参数化与规则中枢——并且是普通用户也能上手、不需要 C++ 也能产出生产级成果的那一层。本文是 CATIA 二次开发完整指南 的专题篇,专注讲 KW 的内部结构、EKL 语法、五大知识对象的组合方式,最后用一个完整可复制的参数化法兰盘示例把所有概念串起来。

阅读对象:已经熟悉 CATIA 建模、想把"重复劳动"变成"参数驱动"的设计工程师与 CAD 开发者。

Knowledgeware 模块全景

Knowledgeware 不是一个单独的 Workbench,而是若干个许可模块的总称:

模块 简称 主要能力
Knowledge Advisor KWA Parameter、Formula、Rule、Check、Set of Equations
Knowledge Expert KWE Expert Rule、Expert Check(多对象批量规则)
Product Knowledge Template PKT UDF、Power Copy、Knowledge Pattern、Document Template
Product Engineering Optimizer PEO 优化、敏感性分析
Business Process Knowledge Template BKT 跨产品线的标准化工程模板

最常用的组合是 KWA + PKT:KWA 负责"在一个零件内部做参数与规则",PKT 负责"把参数化的零件批量复制成结构化产物"。本文重点讨论这两个模块,KWE/PEO/BKT 留给读者后续按需学习。

EKL 语法速览

EKL(Enterprise Knowledge Language)是 KW 内部使用的脚本语言,长得像 BASIC + SQL 的混血。理解它的关键是:EKL 是基于"特征引用"的,每个变量都是 CATIA 模型中实际存在的对象

类型系统

EKL 把所有值都视为有类型的对象:

let length(Length)            // 带单位的长度
let count(Integer)             // 整数
let flag(Boolean)              // 布尔
let label(String)              // 字符串
let myPad(Pad)                 // 一个 Pad 特征
let myList(List)               // 列表

带单位的类型最关键——LengthAngleMassVolumeDensityPressure 等都是一等类型,EKL 会自动做单位换算。例如:

let l(Length)
l = 100mm
let l2(Length)
l2 = l + 2cm   // 自动得到 120mm

操作符与函数

+ - * /                        算术
== <> < > <= >=                比较
and or not                     逻辑
"prefix" + "_" + name          字符串拼接
round(x)  ceil(x)  floor(x)    数学
sqrt(x)   sin(x)   cos(x)
length("hello")                字符串长度

引用模型对象

反引号包裹的字符串是特征路径

`Parameters\OuterDiameter`
`PartBody\Pad.1\Length`
`Geometrical Set.1\Sketch.1`

引号内部的反斜杠是 CATIA 自身的层级分隔符(不是 Windows 路径)。

控制流

if condition then
    expression1
else
    expression2
endif

let i(Integer)
i = 0
while i < 10
{
    /* ...对第 i 项做点什么... */
    i = i + 1
}

/* 也可对集合做迭代: */
for x inside myList
{
    /* ...处理 x... */
}

注意:EKL 的 while / for inside 循环只在 KWE 与 Knowledge Pattern 中可用,纯 KWA 的 Rule 里不能写循环——这是新手最容易绊倒的地方。

五大知识对象逐个讲解

1. Parameter / Formula

Parameter 是显式声明的命名变量。建模工程师熟悉的"参数树"中的所有项都是 Parameter。

在 KWA 里手工添加:菜单 Knowledge → Formula → Add → 选择类型(Length / Integer / Boolean ...)→ 输入名字与初值。

Formula 是把一个 Parameter 与一个 EKL 表达式绑定:

`Parameters\TotalWeight` = `Parameters\Density` * `Parameters\Volume`

Formula 的特点是实时双向绑定——修改 DensityVolumeTotalWeight 立即更新。但 Formula 的右侧只能是表达式,不能写控制流。

最佳实践

  • 命名遵循统一前缀(如 Param_Geom_Calc_),方便后续过滤
  • 单位敏感的参数显式带单位(100mm 而不是 100
  • 避免在 Formula 里直接引用 PartBody\Pad.1\FirstLimit\Length,应该建一个中间 Parameter,让 Pad 的长度反过来引用 Parameter——这样改参数化结构时不会破坏几何

2. Rule

Rule 是事件驱动的代码块,可以包含控制流。在零件每次 Update 时触发。

let nBolts(Integer)
let diameter(Length)
diameter = `Parameters\OuterDiameter`

if diameter < 100mm then
    nBolts = 4
else if diameter < 200mm then
    nBolts = 6
else if diameter < 400mm then
    nBolts = 8
else
    nBolts = 12
endif

`Parameters\BoltCount` = nBolts
`Parameters\BoltCircleDiameter` = diameter * 0.85

Rule 的强大之处

  • 完全嵌入零件,重新打开后规则仍然生效
  • 可以读写所有可访问的 Parameter
  • 可以调用内置函数(数学、字符串、Body 操作)

Rule 的边界

  • 不能新增几何(要新增几何用 Knowledge Pattern)
  • 在大型装配中性能开销不可忽视,建议在 Product 顶层只放轻量 Rule

3. Check

Check 是"会发出警告"的特殊 Rule。它返回一个 Boolean,CATIA 会在违反时点亮检查器图标。

// 名为 Check_MinWallThickness
`PartBody\Pad.1\FirstLimit\Length` >= 2mm

更复杂的 Check 可以带消息:

let okay(Boolean)
let msg(String)
let t(Length)
t = `Parameters\WallThickness`

okay = (t >= 2mm) and (t <= 10mm)
msg = "壁厚 " + t + " 超出允许范围 [2mm, 10mm]"

Message(msg)
okay

典型用途

  • 工艺合规性检查(最小壁厚、最大长径比、允许的特征数量)
  • 装配级冲突预警
  • 与 Reaction 配合做"软强制"——违反时给出警告,但不阻断保存

4. Reaction

Reaction 是事件响应器:监听某个对象的事件(修改、激活、Update),触发指定的 Action(一段 EKL 或 VBScript)。

例:当某个 Parameter 被修改时,自动重新生成衍生几何:

// Source: Parameters\OuterDiameter
// Type:   ValueChange
// Action:
let r(Length)
r = `Parameters\OuterDiameter` / 2
`Geometrical Set.1\Circle.1\Radius` = r

Reaction 比 Rule 更"响应式",但调试更难——事件链一长就容易陷入"为什么没有触发"的迷宫。建议生产环境优先用 Rule,Reaction 只在事件驱动语义不可替代时使用

5. Knowledge Pattern:批量结构化建模的核武器

这是整个 KW 体系最强的武器。Knowledge Pattern 允许你用 EKL 在 Rule 里实例化整组 PowerCopy / UDF,相当于"建模脚本"。

一个最简单的 Pattern 骨架:

let i(Integer)
let template(PowerCopyReference)
let inst(PowerCopyInstance)
let pos(Plane)

template = `KnowledgePatternTemplates\BoltHoleTemplate`
i = 0

while i < `Parameters\BoltCount`
{
    pos = `Geometrical Set.1\BoltPositionsArray\Plane.` + (i + 1)
    inst = template -> Instantiate("Hole_" + i, pos)
    i = i + 1
}

Pattern 的关键概念:

  • Template:一个预先做好的 PowerCopy(参考 PKT 工作台中的 PowerCopy 工具)
  • Instantiate:把 Template 在指定位置/参数下实例化为新的几何
  • 循环:可以在 while/for 内任意次实例化

Pattern 的应用面非常广:

  • 标准件批量分布(螺栓、焊点、铆钉)
  • 参数驱动的肋板生成(数量与位置随设计参数变化)
  • 复杂电气线束的拓扑生成

完整示例:参数化法兰盘

下面我们把上面五种对象组合起来,做一个能根据"外径"自动决定螺栓数量、孔径、孔位、并附带壁厚校验的法兰盘。

Step 1: 设计 Parameter

Parameter 名 类型 默认值 说明
OuterDiameter Length 200mm 法兰外径
InnerDiameter Length 80mm 中心孔直径
Thickness Length 20mm 法兰厚度
BoltCount Integer 6 螺栓数量(由 Rule 计算)
BoltDiameter Length 10mm 螺栓孔直径(由 Rule 计算)
BoltCircleDiameter Length 160mm 螺栓圆直径(由 Rule 计算)

Step 2: 主 Rule(命名 Rule_FlangeSizing

let d(Length)
d = `Parameters\OuterDiameter`

// 螺栓数量按外径阶梯
if d < 120mm then
    `Parameters\BoltCount` = 4
else if d < 200mm then
    `Parameters\BoltCount` = 6
else if d < 320mm then
    `Parameters\BoltCount` = 8
else
    `Parameters\BoltCount` = 12
endif

// 螺栓直径按外径阶梯(GB/T 9119 简化版)
if d < 120mm then
    `Parameters\BoltDiameter` = 10mm
else if d < 200mm then
    `Parameters\BoltDiameter` = 12mm
else if d < 320mm then
    `Parameters\BoltDiameter` = 16mm
else
    `Parameters\BoltDiameter` = 20mm
endif

// 螺栓圆直径 = 外径 * 0.8(工程经验值)
`Parameters\BoltCircleDiameter` = `Parameters\OuterDiameter` * 0.8

Step 3: 几何骨架

在 Geometrical Set 里手工建立:

  • Plane.XY 为基础平面
  • Sketch.Outer 画外圆(直径绑定 OuterDiameter
  • Sketch.Inner 画内圆(直径绑定 InnerDiameter
  • Pad.Body 把两个草图拉伸成法兰本体(厚度绑定 Thickness
  • Geometrical Set.BoltPositions 为螺栓位置集合(下面用 Pattern 填充)

Step 4: 螺栓孔的 PowerCopy 模板

在 PKT 工作台中创建一个 PowerCopy BoltHoleTemplate

  • 输入:1 个 Plane、1 个 Length(孔径)、1 个 Length(深度)
  • 输出:1 个 Hole 特征

Step 5: 螺栓位置 Knowledge Pattern

let i(Integer)
let n(Integer)
let bcd(Length)
let r(Length)
let angle(Angle)
let centerPoint(Point)
let template(PowerCopyReference)
let inst(PowerCopyInstance)

n = `Parameters\BoltCount`
bcd = `Parameters\BoltCircleDiameter`
r = bcd / 2
template = `KnowledgePatternTemplates\BoltHoleTemplate`

i = 0
while i < n
{
    angle = (i * 360deg) / n
    centerPoint = pointInPlane(`Plane.XY`,
                                r * cos(angle),
                                r * sin(angle))
    inst = template -> Instantiate("BoltHole_" + i + 1,
                                    centerPoint,
                                    `Parameters\BoltDiameter`,
                                    `Parameters\Thickness` + 2mm)
    i = i + 1
}

Step 6: 合规 Check

最后加一个 Check 防止设计师误用:

let dRing(Length)
dRing = `Parameters\OuterDiameter` - `Parameters\BoltCircleDiameter`
let okay(Boolean)
okay = dRing >= 30mm
Message("外径与螺栓圆直径之差至少 30mm(当前 " + dRing + ")")
okay

效果

设计师只需修改 OuterDiameter 一个参数,整个法兰的厚度联动、螺栓数量、孔径、孔位、合规检查全部自动更新。这就是 KW 的真正威力——把设计经验固化为 Rule,让模型自己执行

与 Power Copy / UDF 的边界

KW 工具集里还有 PowerCopy(PC)和 User-Defined Feature(UDF)两个相邻概念,初学者常混淆:

工具 用途 在哪里建 在哪里实例化
Parameter / Rule 单零件内部的参数与逻辑 KWA 当前零件
PowerCopy "几何拼图块",可拷贝到其他零件 PKT 任意零件,手动或 Pattern 调用
UDF "封装的特征",可像 Pad 那样在树上呈现一个节点 PKT 任意零件
Knowledge Pattern 在一个零件里循环实例化 PowerCopy KWA + PKT 当前零件

经验法则

  • 单零件参数化 → Parameter + Rule
  • 跨零件复用一段几何 → PowerCopy
  • 想让特征"看起来像内置 Pad" → UDF
  • 想根据数量参数循环实例化 → Knowledge Pattern + PowerCopy

DELMIA / 3DEXPERIENCE 下的迁移

3DEXPERIENCE 上的 Knowledgeware 模块名称发生了变化:

  • Engineering Rules Capture:相当于 V5 的 KWA
  • EKL:脚本语言本身在 3DX 中保留 Enterprise Knowledge Language 称谓,与 V5 的语法兼容性高
  • Knowledge Apps:取代 PKT 中的部分能力

迁移注意事项:

  1. Document Template 在 3DX 里已废弃,被 Reference Engineering Template 替代
  2. EKL 中引用其它 Reference 的语法变化:V5 用 Product\PartBody\Pad.1,3DX 用基于 PLM Reference ID 的查找
  3. Reaction 在 3DX 中弱化,更鼓励用平台级事件总线
  4. PowerCopy 在 3DX 中要求显式声明 Inputs/Outputs 的语义类型(不能像 V5 那样依赖隐式约定)

如果团队主力还在 V5、未来要迁 3DX,EKL 表达式部分基本可移植,几何引用部分需要重做。建议把规则尽量集中在 Parameter 上,少直接引用几何特征。

企业级落地建议

命名规范

Param_<功能>_<单位>     // 例如 Param_OuterDia_mm
Calc_<计算结果>          // 例如 Calc_BoltCount
Geom_<几何对象>          // 例如 Geom_Sketch_Outer
Rule_<规则名>           // 例如 Rule_FlangeSizing
Check_<检查项>           // 例如 Check_MinWallThickness

统一前缀让大型项目里"哪些是手工参数、哪些是规则计算结果"一目了然。

版本治理

  • KW 对象本身存在 .CATPart 内部,无法独立 diff
  • 推荐做法:导出 EKL 文本(菜单 Knowledge → Export Rules),把 EKL 文件纳入 Git,与 CATPart 配套
  • ENOVIA / 3DEXPERIENCE 用户可以直接走 PLM 版本管理,但要确保对 KW 对象开启了细粒度版本

性能调优

KW 在大装配中容易成为瓶颈。常见对策:

  • 单个 Rule 内的对象访问超过 50 次,要拆分到多个 Rule
  • 避免 Rule 之间循环依赖(A 修改 B,B 修改 A)
  • Reaction 的 Action 中不要做大段几何运算
  • 把"展示用"的衍生量放 Formula,把"决策用"的逻辑放 Rule,两者性能特征不同

与 ERP/PDM 的集成口径

最后一公里:把 KW 计算结果输出到 ERP/PDM。常用方案:

  • Automation 桥接:用 VBA / Python 脚本读取 Parameter 写出 CSV 或调 Web API
  • 3DX REST API:3DEXPERIENCE 上更优雅的方式
  • ENOVIA SOA:传统 V5 + ENOVIA 部署的成熟方案

具体接入方式建议参考 CATIA 二次开发完整指南 中的 Automation 章节。

总结

Knowledgeware 不是"高级用户的玩具",而是把一线工程师的设计经验固化为模型自身规则的工程化武器。掌握 Parameter / Rule / Check / Reaction / Knowledge Pattern 这五件套,加上一份清晰的命名与治理规范,一个团队就能把"画图"工作转变为"参数填空 + 自动校验"的流水线。

进一步阅读

#CATIA#Knowledgeware#EKL#参数化设计

常见问题

Q:

CATIA Knowledgeware 与 CAA RADE 有什么区别?

A:

CAA RADE 是 C++ 底层框架,能力上限最高但需要 RADE 授权与 CAA Partner 协议;Knowledgeware 是参数与规则层,普通工程师用 EKL 脚本即可上手,授权门槛低很多。绝大多数企业内部的参数化建模、批量生成、合规校验需求,KW 就足够,无需上 CAA。

Q:

EKL 是什么?和 VBA 有何区别?

A:

EKL(Enterprise Knowledge Language)是 CATIA Knowledgeware 模块内部使用的脚本语言,长得像 BASIC + SQL 的混血。与 VBA/Automation 的关键区别是:EKL 中的每个变量都直接指向 CATIA 模型中的真实对象(特征引用),它和模型是绑定的;而 VBA 通过 Automation API 操作对象,是松耦合的外部脚本。

Q:

Knowledgeware 五大对象(Parameter / Rule / Check / Reaction / Knowledge Pattern)分别做什么?

A:

Parameter:可被引用与驱动的命名参数,是一切的基础。Rule:主动计算式,当输入变化时驱动输出。Check:被动校验,给出 OK/Warning/Information 三类提示。Reaction:事件触发器,模型某事件发生时执行一段 EKL。Knowledge Pattern:批量化模板,根据数据表批量生成实例(如标准件族、阵列结构件)。

Q:

KWA 和 PKT 这两个模块怎么选?

A:

KWA(Knowledge Advisor):在单个零件内部做参数、Rule、Check、公式 —— 解决'让模型自己计算'。PKT(Product Knowledge Template):把参数化的单零件批量复制成结构化产物,包含 UDF、Power Copy、Knowledge Pattern、Document Template —— 解决'让一份模板生成 N 个变体'。最常用组合就是 KWA + PKT。

Q:

参数化法兰盘怎么做?

A:

核心思路:(1) 在 KWA 中定义参数(DN、PN、厚度、螺栓孔数等);(2) 用 Rule 让特征尺寸由参数驱动(例如 螺栓孔分布圆直径 = f(DN));(3) 用 Check 校验工程合规(例如 厚度 ≥ 最小压力规范值);(4) 用 Knowledge Pattern + 设计表批量生成不同规格的法兰盘实例。本文有完整可复制示例。

Q:

Knowledgeware 适合做哪些项目?

A:

标准件族(紧固件、密封件、阀门)、参数化骨架(Skeleton + Knowledge Pattern)、企业级模板(公司专属 Workbench 的参数化模板)、合规检查(壁厚最小值、装配间隙等)、批量出图与 BOM 联动。简单说:凡是'输入一组参数就能产出标准化结果'的场景,KW 都比 VBA 自动化更优雅、更易维护。

Q:

想做 CATIA 参数化设计培训或外包,怎么找服务?

A:

青岛辰时(qdchenshi.com)提供 CATIA 二次开发与 Knowledgeware 全栈服务,包括参数化模板搭建、企业级骨架开发、KW 培训与项目辅导,覆盖 V5R20 ~ 3DEXPERIENCE。可发邮件至 info@qdchenshi.com 咨询。

青岛辰时

技术专家

专注于CAD开发和AI技术应用,致力于为制造业提供数字化解决方案。

文章信息

发布日期2026年5月9日
阅读时间5分钟
字数统计4.9k字
浏览次数0

快速导航

💡 需要技术支持?

我们提供专业的CAD开发和AI解决方案服务