外观
04b 圆角突破 · 双线并行学习路线图
源自原始对话 Turn 4–6,结合 04a 技术侦察落到可执行月度任务。 两条线:路线 A "数据视野"(让 AI 看得见)+ 路线 B "逻辑神经"(让 AI 听得懂),齐头并进拼出完整的几何"验尸报告"。
顶层架构演进(终极形态:AI CAD Test Harness)
阶段一 几何探针/可视化断点 → 让 OCC 在 FreeCAD 中"活"起来(看得见 TopoDS_Shape)
阶段二 跨语言桥梁/Agent 接口 → Python Agent ↔ C++ 几何内核(pybind11 或 gRPC)
阶段三 评估台 Harness → BRepCheck_Analyzer/GProp 对生成几何强规则打分架构决策点(你需要拍板)
桥接选 pybind11(轻量/紧耦合,MVP 快)还是 gRPC(企业级/松耦合,进程隔离=天然沙箱)?建议:MVP 用 pythonocc-core 直接起步(已绑定 OCCT,几乎不写 C++),跑通闭环后再上 gRPC 服务化。详见 04a §4。
路线 A:数据视野线 —— 拓扑特征序列化
核心目标:把 C++ 内存里复杂的 B-Rep 数据结构,无损且轻量地提取成大模型/前端能消化的格式(JSON + Mesh)。
第 1 月:攻克拓扑遍历与降维提取
- 学习重点:吃透 OCC 拓扑数据结构(Vertex / Edge / Wire / Face / Shell / Solid)。
- 实战任务:熟练使用
TopExp_Explorer。写 C++ 脚本:输入一个带圆角的长方体,遍历打印所有 Face/Edge 的 ID 及类型(平面/柱面/NURBS 面)。
第 2 月:几何探针与离散化(网格化)
- 学习重点:AI 难直接理解高阶解析几何方程,离散化点云/网格更友好。学
BRepMesh_IncrementalMesh。 - 实战任务:用
BRep_Tool::Triangulation把 Face 提取为三角网(Nodes + Triangles);用BRepLProp_SLProps获取特定面法向量与主曲率——这对 AI 判断圆角失败至关重要。
第 3 月:定义序列化协议(JSON Schema)
- 学习重点:跨语言数据绑定。引入
nlohmann/json。 - 实战任务:确立第一版"几何切片协议"——把第 2 月提取的节点、三角面片、法向、曲率打包成结构化 JSON。
路线 B:逻辑神经线 —— 底层错误状态解析
核心目标:打破 OCC 祖传的 IsDone() == false 黑盒,深挖算法底层,精准定位导致圆角失败的"罪魁祸首"。
第 1 月:重构 OCC 异常捕获机制
- 学习重点:OCC 异常体系极古老。了解
Standard_Failure与try-catch (Standard_Failure& e)的正确姿势,以及OCC_CATCH_SIGNALS/OSD::SetSignal()(见 04a §1)。 - 实战任务:故意写必错圆角(5mm 宽的边上打 10mm 圆角),捕获崩溃并阻止 C++ 进程闪退——这是 Harness 稳定性的基石。
第 2 月:拆解 BRepFilletAPI 中间状态
- 学习重点:不只看 API,要看源码——深挖
BRepFilletAPI_MakeFillet背后依赖的ChFi3d倒角引擎逻辑。 - 实战任务:
IsDone()为假时,调用NbFaultyContours()/FaultyContour()、Generated()/Modified()、StripeStatus()提取出究竟哪条 Edge 导致失败。
第 3 月:构建"故障上下文"解析器
- 学习重点:结合几何数学,建立错误原因分类树。
- 实战任务:捕获到错误 Edge 时,自动计算该 Edge 相邻两 Face 的夹角与最小宽度,格式化为:
Error: Fillet Radius (10) > Adjacent Face Min Width (5) on Edge_ID_12。
第 4 月:双线汇合 —— 生成"智能验尸报告"
通过一个 C++ 核心 Controller 把 A、B 两线组合:
BRepFilletAPI抛出异常(路线 B 触发)。- 路线 B 定位到出错的局部几何体(如 Edge_12 及相邻面)。
- 调用路线 A 的序列化工具,仅对出错局部几何体做网格化和法向提取。
- 组合生成最终 JSON 投喂给 Python 端 LLM。
架构级决策
最大工程决策是设计这套跨语言数据结构:AI 懂 JSON,但 JSON 处理海量三维顶点非常臃肿;二进制(Protobuf / .brep 字符串)快但解析麻烦。建议:第一版原型先用冗长但人/LLM 都易读的 JSON 跑通,验证闭环后再换 Protobuf + 极简标识符 追求性能。
6 个月里程碑(对齐 06 实践看板)
| 月 | 路线 A | 路线 B | 合并产物 |
|---|---|---|---|
| 1 | TopExp_Explorer 遍历打印 | Standard_Failure 捕获、防闪退 | — |
| 2 | BRepMesh 三角化 + 法向/曲率 | FaultyContour/StripeStatus 定位坏边 | — |
| 3 | nlohmann/json 几何切片协议 | 故障上下文解析器(夹角/最小宽度) | — |
| 4 | — | — | C++ Controller 合并 → 智能验尸报告 JSON |
| 5 | — | — | Python Agent 接收报告 + Prompt 链设计 + 沙箱回滚 |
| 6 | — | — | 圆角自动生成→测试→纠错闭环 Harness 雏形 + 质量评估(BRepCheck/GProp) |
与现有项目的衔接
第 5–6 月的 Agent 闭环可直接借鉴 CADSmith 双循环 与 build123d#1224 坏边探测原型,可视化前端可用你自己的 Print。