目标:系统掌握 OCCT 全部模块,为后续使用 Qt + OpenGL 或 Flutter 自研 CAD 应用打基础。 基于本仓库分支
V8_0_0,源码组织为src/<Module>/<Toolkit>/<Package>。 ✅ 全部 9 个模块(0–8)已完成深入拆解,共 85 篇深入文档。 📌 想快速查「该怎么做 / 别踩什么坑」?直接看 工程最佳实践汇总。 🛠️ 要动手搭 Qt 视口?跟 Qt 视口从零搭建 Checklist(10 阶段逐项打勾)。 🧠 想懂「为什么这样设计」?看 设计理念与工程经验系列(00–08 全 9 篇已完成,逐模块讲技术选择背后的权衡;08 收官 是八条贯穿主线的总图)。一页纸版见 设计原则速查卡。 🏗️ 想把这些智慧落到你自研 CAD 的具体设计?看 应用设计系列(19 篇专项,覆盖参数化 CAD 几乎所有硬核设计决策):
- OCCT 官方共 7 大模块(见
adm/MODULES),本教程为每个模块设计 10 个由易到难的阶梯计划,外加「环境上手(0)」与「集成实战(8)」两章。 - 两层结构:
- 模块索引页(如
04-visualization.md)= 10 阶速览 + 深入文档目录表。 - 深入文档子文件夹(如
04/)= 每个阶梯/主题一篇详解,含可运行代码、实践任务、验收里程碑,类名全部对照 V8_0_0 源码核实。
- 模块索引页(如
- 推荐顺序:先 00-getting-started 把环境与 DRAW 跑起来 → 按 1→7 模块推进 → 最后用 08-integration 落到 Qt/Flutter 应用。
- 强烈建议边学边用 DRAW(模块 7)做原型:先用 Tcl 命令验证思路,再写 C++,效率最高。
| # | 模块 | 作用 | 索引页 | 深入文档 |
|---|---|---|---|---|
| 0 | 环境与上手 | 构建 OCCT、跑通 DRAW、第一个程序 | 00-getting-started.md | 00/ · 5 篇 |
| 1 | Foundation Classes | 基础类型、句柄、集合、数学 (TKernel TKMath) |
01-foundation-classes.md | 01/ · 9 篇 |
| 2 | Modeling Data | 几何与拓扑数据结构 (TKG2d TKG3d TKGeomBase TKBRep) |
02-modeling-data.md | 02/ · 11 篇 |
| 3 | Modeling Algorithms | 建模算法:布尔/扫掠/圆角/网格 (TKPrim TKBO TKFillet…) |
03-modeling-algorithms.md | 03/ · 11 篇 |
| 4 | Visualization ⭐ | 三维显示与交互 (TKService TKV3d TKOpenGl…) |
04-visualization.md | 04/ · 11 篇 |
| 5 | Application Framework (OCAF) | 文档/属性/撤销重做/持久化 (TKLCAF TKCAF…) |
05-application-framework.md | 05/ · 10 篇 |
| 6 | Data Exchange | STEP/IGES/STL/glTF 等格式交换 (TKDESTEP TKXCAF…) |
06-data-exchange.md | 06/ · 10 篇 |
| 7 | Draw Test Harness | Tcl 脚本测试/原型工具 (TKDraw DRAWEXE) |
07-draw-test-harness.md | 07/ · 10 篇 |
| 8 | 集成实战 ⭐ | 把 OCCT 接到 Qt+OpenGL / Flutter | 08-integration-qt-flutter.md | 08/ · 8 篇 |
⭐ = 与「Qt+OpenGL / Flutter 自研 CAD」目标最直接相关,建议重点投入。
FoundationClasses (TKernel, TKMath) ← 一切的基础
│
ModelingData (gp/Geom/TopoDS/BRep) ← 几何与拓扑的“名词”
│
ModelingAlgorithms (BRepPrimAPI/BRepAlgoAPI)← 建模的“动词”
│
┌────┴───────────────┬──────────────┐
Visualization DataExchange OCAF
(AIS/V3d/OpenGl) (STEP/IGES/glTF) (TDocStd/XDE)
│
Draw (DRAWEXE) ← 贯穿全程的脚本/调试工具
│
集成实战 (Qt+OpenGL / Flutter FFI) ← 把以上汇成应用
| 阶段 | 做什么 | 主要文档 |
|---|---|---|
| 1 | 环境 + DRAW + 几何拓扑地基 | 00/ · 01/ · 02/ · 07/ |
| 2 | 建模 + 数据交换 | 03/ · 06/ |
| 3 | 可视化(显示/拾取/导航/离屏) | 04/ ⭐ |
| 4 | Qt 桌面集成 | 04/11-qt-integration · 08/02~08/04 |
| 5 | 文档/撤销/参数化 | 05/ |
| 6 | (可选)Flutter FFI / glTF 查看器 | 08/05~08/06 |
| 7 | 打包部署 | 08/07 |
全教程的分阶段路线图 + 高频坑清单 + 「功能→模块」速查见 08/08-roadmap-and-pitfalls——可当施工总图。
- 包前缀即领域:
gp_=几何基元、Geom_/Geom2d_=参数几何、TopoDS_=拓扑、BRep=边界表示、AIS_=交互显示、TDF_/TDataStd_=OCAF、*Control_/RW*=数据交换。 ...API结尾:面向用户的高层封装(如BRepPrimAPI_MakeBox、BRepAlgoAPI_Fuse、GeomAPI_PointsToBSpline)。日常开发优先用*API类。- 句柄
Handle(T):OCCT 的引用计数智能指针,配合Standard_Transient派生类做内存管理(值类型 vs 句柄类型见 01/01)。 TK= ToolKit(动态库),src/<Module>/<TK>/<Package>/是物理布局;类名前缀=包名,据此可反推文件路径(见 00/01)。
仓库 dox/user_guides/ 内有 Markdown 版用户指南,与模块一一对应:
foundation_classes、modeling_data、modeling_algos、visualization/vis、ocaf、step/iges/xde/de_wrapper、shape_healing、mesh、draw_test_harness。学到对应模块时配合阅读。
官方示例(含 Qt)见独立仓库 Open-Cascade-SAS/OCCT-Samples。
.wolf/tutorial/
├── README.md 本文件(教程总索引)
├── best-practices.md 9 模块工程最佳实践汇总 + 高频坑速查
├── checklist-qt-viewport.md Qt 视口从零搭建端到端 checklist(10 阶段 + 验证门)
├── rationale/ 设计理念与工程经验系列 00–08(讲“为什么这样设计”+八条贯穿主线总图,全 9 篇已完成)+ 设计原则一页纸速查卡
├── applied/ 应用设计系列(把智慧落到你自研 CAD 的具体设计:特征树+命名方案…)
├── 00-getting-started.md + 00/ (5 篇:仓库/构建/DRAW/首程序/工作流)
├── 01-foundation-classes.md + 01/ (9 篇:句柄/字符串/集合/系统/单位精度/gp/math/曲线数学/RTTI)
├── 02-modeling-data.md + 02/ (11 篇:几何vs拓扑/2D/曲线/曲面/适配器/拓扑类型/遍历/数据访问/构造/IO/局部属性)
├── 03-modeling-algorithms.md + 03/ (11 篇:总览/边线/面体/扫掠/变换/布尔/圆角/偏置/网格/分析/修复)
├── 04-visualization.md + 04/ (11 篇:架构/视图/显示/属性/相机/选择/自定义对象/图元/高级渲染/后端/Qt集成)
├── 05-application-framework.md + 05/ (10 篇:概念/标签树/属性/命名/事务/持久化/二进制/XML/函数/可视化TObj)
├── 06-data-exchange.md + 06/ (10 篇:总览/STEP入出/IGES/XDE/带元数据/网格/glTF/VRML原生/健壮管线)
├── 07-draw-test-harness.md + 07/ (10 篇:认识/造型/看图/探查/布尔/交换/脚本/测试/自定义命令/工程武器)
└── 08-integration-qt-flutter.md + 08/ (8 篇:架构/Qt工程/视口/外壳/FFI/渲染策略/打包/路线图)
文档输出位置遵循本项目规则:所有生成文档统一放在
.wolf/下(此处为.wolf/tutorial/),不新建docs/,不写入全局~/.claude。