在训练 CAD 专用 AI 模型时,我们面临的第一个根本性问题是:
3D CAD 模型内部的真实结构不是一堆几何,而是一棵"结构树"。
而 AI 真正能理解的是"图结构"。
因此,把 CAD 模型的结构树准确、系统地转换成一个"图结构(Graph)",是构建 CAD AI 的必经之路。
1. 为什么 CAD 结构树必须转换为 Graph?
3D CAD 不是一个三角网格文件,它背后包含了完整的设计逻辑:
-
零件如何被约束;
-
特征之间如何依赖;
-
装配体如何关联;
-
操作顺序如何影响几何。
但这些信息都以"树结构"存储,看上去是树,但本质不是树,而是一个"有依赖、有引用、有约束"的复杂系统:
-
一个 Sketch 被多个特征引用(多重引用);
-
一个参数被多个特征使用(共用变量);
-
一个装配约束作用于多个零件(交叉关系);
-
一个特征的变化会影响下游所有特征(有向依赖)。
树无法表达这些。
树 = 父子关系;
Graph = 所有关系(父子 + 引用 + 依赖 + 约束 + 影响链)。
AI 想要理解 CAD------尤其是"设计意图"------必须看到完整的关系网络。
这就是为什么所有现代 CAD AI 架构都以 Graph 为核心。
2. CAD 结构树 → Graph 的核心思想
Graph 必须具备三类元素:
1)节点
代表模型中的实体:
-
特征;
-
草图;
-
约束;
-
装配关系;
-
几何元素;
-
参数。
2)边
表示节点之间的关系:
-
父子关系;
-
引用关系;
-
依赖关系;
-
顺序关系;
-
关联关系;
-
参数驱动关系。
3)属性
每个节点都必须附带丰富属性,例如:
-
特征类型(拉伸、旋转、倒角、孔...);
-
参数值(半径、深度、角度...);
-
几何类型(平面、曲线、边、体...);
-
约束类型(垂直、平行、重合...);
-
用到的草图元素(轮廓、方向...)。
Graph 是一个"关系+属性"的综合体,比树丰富得多。
3. CAD 结构树如何一步步转成 Graph?
下面给出一个非常清晰的"通用转换流程",用于任何 CAD 格式:
步骤1:提取结构树节点
我们需要从 CAD 中提取所有高层结构节点:
-
Part;
-
Body;
-
Features(Extrude、Revolve、Fillet、Shell...);
-
Sketches;
-
SketchGeometries(Line、Arc、Circle...);
-
Constraints;
-
Parameters;
-
Expressions;
-
Assembly Components;
-
Assembly Constraints。
把每一种实体都变成一个 Node,并为其分配唯一 ID。
Step 2:提取节点属性
每个节点都有自己的属性,例如:
Feature 属性
-
类型:Extrude;
-
操作方向:One Side;
-
深度:50mm;
-
草图引用:Sketch001。
Sketch 属性
-
坐标系;
-
包含的几何数量;
-
约束数量。
Parameter 属性
-
值:50;
-
维度类型:Length;
-
单位:mm。
这些属性在 Graph 中非常关键------因为它们决定了模型的设计意图。
步骤 3:提取节点之间的所有关系
这是整个转换的核心部分,我们必须从 CAD 文件中提取所有可能的关系:
(1)父子关系
结构树直接给出的父子关系。
Part → Feature Feature → Sketch Sketch → SketchGeometry
(2)引用关系
如 Extrude Feature 引用了某个 Sketch。
Extrude → uses → Sketch001
(3)依赖关系
例如 Fillet 依赖一个 Edge:
Fillet → depends_on → Edge_12
(4)参数绑定
特征深度由参数 D1 驱动:
Extrude.depth → driven_by → D1
(5)装配约束
零件之间的对齐、平行、相切、距离:
PartA → mate_with → PartB (Mate: Coincident)
(6)特征顺序
特征顺序必须保留,因为它体现了建模逻辑:
Sketch001 → before → Extrude001 → before → Fillet001
直到这里,已经从"装配树"变成了"网(Graph)"。
Step 4:构建最终的 Graph 结构
所有节点(Node)+ 所有关系(Edge)+ 所有属性(Attributes)组合成:
G = (V, E, A)
-
V:所有节点;
-
E:所有边(关系);
-
A:所有属性。
4. 为什么 Graph 对 CAD AI 至关重要?
Graph 是 CAD AI 的"语义入口",它有四大价值:
1)Graph 能表达"设计意图"
AI 可以学习:
-
草图决定特征;
-
参数驱动几何;
-
特征之间互相依赖;
-
修改一个参数会影响哪些特征。
这是纯 B-Rep 永远无法提供的语义。
2)Graph 是天然适合神经网络的结构
GNN 可以处理:
-
节点分类(识别特征类型);
-
边关系预测(推断引用或顺序);
-
图生成(自动生成特征树);
-
参数预测(自动推断尺寸)。
这些都是 CAD AI 的核心能力。
3)Graph 能统一各种 CAD 格式
不同 CAD 软件的结构树结构差异极大,但 Graph 可以统一表达:
-
SolidWorks Feature Tree;
-
CATIA Design Tree;
-
NX Feature Navigator;
-
Inventor Browser;
-
Creo Model Tree。
Graph 是"跨 CAD 通用语义层"。
4)Graph 为后续的 AI 自动建模奠定基础
有了 Graph,AI 才能:
-
自动生成特征建模序列;
-
自动生成草图;
-
自动预测参数;
-
自动修复模型;
-
自动推荐建模步骤;
-
自动理解跨 CAD 的零件共性。
这是未来 CAD AI 的核心能力。
Graph 是 CAD AI 的语义基座:
-
结构树是树,但建模逻辑是图;
-
只有 Graph 才能承载 CAD 的真实语义;
-
Graph 是 CAD AI 的训练数据核心;
-
Graph 是跨格式、跨软件的统一表达;
-
Graph 为设计意图理解提供了入口;
-
Graph 为自动建模与推理打基础。