docs: v5 comprehensive plan — close all competitive gaps in one version
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 32s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled

4 milestones, 16 modules, ~12K lines, ~535 new tests:
M1: TrimmedSurface + SSI boolean + topology healing + tolerance system
M2: G2/G3 continuity + surface extension + advanced blend + analysis
M3: Large assembly LOD + constraint solver + full CAM + direct modeling
M4: Industrial formats (JT/XT/SAT/IFC/AP242) + GPU + Python + docs

Target: 72% industrial capability (up from 55%), surpass OCCT
This commit is contained in:
茂之钳
2026-07-26 19:53:49 +08:00
parent 581ee4dc0a
commit 0df9e77eac
+293
View File
@@ -0,0 +1,293 @@
# ViewDesignEngine v5 — 补齐差距,对标工业级
> 制定: 2026-07-26 | 基于: `docs/27-竞品分析.md`
>
> 目标: 一个版本内补齐核心缺失,达到 OCCT 85%+ 能力覆盖,部分维度超越
---
## 版本策略
v5 是一个大型版本,按 **4 个里程碑 (M1-M4)** 分阶段交付。每个里程碑聚焦一个维度。
```
v4.6(当前) ──→ M1: 地基加固 ──→ M2: 高级曲面 ──→ M3: 装配+制造 ──→ M4: 生态+格式
2周 2周 2周 1周
```
---
## M1 — 🏗️ 地基加固(B-Rep 达到工业级)
> 对标: Parasolid 的核心健壮性
### 1.1 TrimmedSurface 深度集成 🔴 P0
**现状**: 头文件存在,实现为 stubFace 仍用完整 NurbsSurface
**目标**: Face 的几何定义从 NurbsSurface 切换到 TrimmedSurface
- [ ] `TrimmedSurface` 完整实现:基曲面 + p-curve 裁剪环列表
- [ ] `evaluate(u,v)` — 先判断 (u,v) 是否在裁剪区域内
- [ ] `BrepModel::Face` 重构使用 TrimmedSurface 作为几何
- [ ] `to_mesh()` — 裁剪曲面 tessellation(带边界的三角化)
- [ ] 重构 `modeling.cpp` 中所有 make_* 函数适配新 Face
- [ ] 测试:矩形裁剪球面 → 球面片、圆柱面 + 孔
### 1.2 鲁棒 SSI 基布尔 🔴 P0
**现状**: centroid 分类 + 面分割,退化情况不可靠
**目标**: 全 SSI (Surface-Surface Intersection) 管线
- [ ] Step 1: 对每个面对,计算曲面交线 (SSI) — 复用递归细分 + 牛顿精化
- [ ] Step 2: 用交线分割两个面(生成 TrimmedSurface
- [ ] Step 3: 对分割后的面片段分类 IN/OUT(射线投射 + 精确谓词)
- [ ] Step 4: 缝合保留的面片段
- [ ] 集成 GMP 精确谓词到分类关键路径
- [ ] 性能:Union_BoxAndCylinder 从 ~1.8s → 目标 ~0.3s
- [ ] 测试:分离/接触/重叠/包含四种场景 × union/intersect/diff
### 1.3 拓扑修复增强 🟡 P1
- [ ] `heal_gaps` — 合并距离 < tolerance 的顶点/边
- [ ] `heal_slivers` — 移除零面积/退化面
- [ ] `heal_orientation` — 统一面方向(已被包围面法线朝外)
- [ ] `heal_topology` — 一站式修复流水线
- [ ] STEP 导入后自动调用 heal
- [ ] 测试:修复后的 body 通过 validate()
### 1.4 容差系统完善 🟡 P1
- [ ] 全局 + 局部两级容差:`ToleranceConfig::global()` + `per_face_tolerance`
- [ ] `fuzzy` 比较替代所有硬编码 1e-6/1e-9
- [ ] 自适应容差:大模型自动放宽
- [ ] 测试:不同尺度模型的容差行为
### M1 交付物
| 模块 | 新增文件 | 预估行数 | 测试 |
|------|---------|---------|------|
| TrimmedSurface 重构 | 修改 8 个现有文件 | ~800 | ~20 |
| SSI 布尔 | rewrite `brep_boolean.cpp` | ~1200 | ~25 |
| 拓扑修复 | rewrite `brep_heal.cpp` | ~600 | ~15 |
| 容差系统 | rewrite `tolerance.cpp` | ~400 | ~10 |
---
## M2 — 🎨 高级曲面(对标 CGM)
> 对标: CATIA CGM 的 A 级曲面能力
### 2.1 G2/G3 连续性分析 🔴 P1
- [ ] `continuity_type(curve_a, curve_b, point)` → G0/G1/G2/G3
- [ ] `surface_continuity(surf_a, surf_b, edge)` → 沿公共边的连续性
- [ ] 曲率梳 (curvature comb) 数据生成
- [ ] 斑马纹 (zebra stripe) 数据生成 — 等参线反射
- [ ] 测试:G0/G1/G2/G3 连续体正确分类
### 2.2 曲面延伸 + N边填充 🟡 P2
- [ ] `extend_surface(surface, edge_id, distance, continuity)` — 沿边界延伸
- [ ] `n_sided_fill(boundary_curves, continuity)` — N 边孔洞填充
- [ ] `blend_surfaces(surf_a, surf_b, radius)` — 两面过渡
- [ ] 测试:延伸后连续性验证
### 2.3 变半径 + 多面过渡 🟡 P2
- [ ] `variable_radius_blend(edge, r_start, r_end)` — 实现(替换 stub
- [ ] `multi_face_blend(faces, radius)` — 多面同时过渡
- [ ] 滚动球算法实现(脊线追踪 + 自交检测)
- [ ] 三面交角处理
### 2.4 曲面分析工具集
- [ ] `curvature_map(surface)` → 高斯/平均/主曲率
- [ ] `draft_analysis` — 拔模面生成(替换 stub
- [ ] `deviation_analysis(surf_a, surf_b)` — 两面偏差
- [ ] 测试:分析结果与解析曲面对比
### M2 交付物
| 模块 | 新增文件 | 预估行数 | 测试 |
|------|---------|---------|------|
| G2/G3 连续性 | `surface_continuity.h/.cpp` | ~500 | ~12 |
| 曲面延伸+N边 | `surface_extension.h/.cpp` | ~700 | ~15 |
| 高级过渡 | rewrite `advanced_blend.cpp` | ~800 | ~12 |
| 曲面分析 | `surface_analysis.h/.cpp` | ~600 | ~10 |
---
## M3 — 🔗 装配 + 🏭 制造
> 对标: Parasolid 大装配 + Mastercam CAM
### 3.1 大装配 LOD 实现 🟡 P1
- [ ] `AssemblyLOD` — 三级 LOD:完整 / 简化 / 包围盒
- [ ] 视距驱动自动切换
- [ ] `InstanceCache` 集成 — 共享几何去重
- [ ] `SpatialIndex` 加速装配遍历(BVH/R-Tree
- [ ] 性能测试:10K 零件 < 100ms 遍历
### 3.2 装配约束求解器 🟡 P1
- [ ] 3D 约束图构建(coincident/concentric/tangent/distance/angle/parallel
- [ ] 约束求解:自由度分析 + Newton 迭代
- [ ] 联动求解:修改一个约束 → 传播更新
- [ ] 过度约束检测 + 报告
### 3.3 完整 CAM 策略 🟡 P2
- [ ] `roughing_toolpath` — 层切粗加工
- [ ] `finishing_toolpath` — 平行/环绕精加工
- [ ] `drilling_toolpath` — 钻孔循环
- [ ] 刀库 (Tool Library) — 平底刀/球头刀/钻头
- [ ] 后处理框架 — Fanuc/Siemens/Heidenhain
- [ ] 加工仿真 — 材料去除可视化数据
### 3.4 直接建模操作 🔴 P2
- [ ] `tweak_face(body, face_id, delta)` — 面偏移
- [ ] `move_face(body, face_id, transform)` — 面移动
- [ ] `replace_face(body, face_id, new_surface)` — 面替换
- [ ] `push_pull(body, face_id, distance)` — 推拉
- [ ] 邻面自动延伸/裁剪以保持水密
### M3 交付物
| 模块 | 新增文件 | 预估行数 | 测试 |
|------|---------|---------|------|
| 大装配 LOD | `assembly_lod.h/.cpp` | ~500 | ~10 |
| 约束求解器 | rewrite `constraint_solver.cpp` | ~800 | ~15 |
| 完整 CAM | `cam_strategies.h/.cpp` | ~1200 | ~20 |
| 直接建模 | `direct_modeling.h/.cpp` | ~900 | ~18 |
---
## M4 — 🌐 生态 + 格式
> 对标: Parasolid/ACIS 的互操作生态
### 4.1 工业格式实现 🔴 P1
- [ ] **JT 导入导出** — ISO 14306Siemens 主导的轻量化格式
- [ ] **Parasolid XT 导入** — 读写 Siemens 原生格式
- [ ] **ACIS SAT 导入** — 读写 Dassault 原生格式
- [ ] **IFC 导入** — BIM 标准格式(建筑信息模型)
- [ ] **STEP AP242** — 扩展 AP203/214,支持 PMI
### 4.2 GPU 加速实现 🟡 P1
- [ ] `gpu_marching_cubes` — CUDA 体素并行(替换 stub)
- [ ] `gpu_mesh_simplify` — GPU QEM 简化
- [ ] `gpu_rendering` — 基于 OpenGL 的实时预览(可选)
### 4.3 Python 绑定扩展 🟡 P2
- [ ] `vde.brep` — B-Rep 建模模块绑定
- [ ] `vde.sdf` — SDF 建模 + 优化绑定
- [ ] `vde.cam` — CAM 刀路绑定
- [ ] `vde.assembly` — 装配体绑定
- [ ] pip 包自动构建(CI/CD
### 4.4 文档 + 测试 🟡 P2
- [ ] 开发者指南 (`docs/dev-guide/`)
- [ ] 架构文档 — 模块依赖图、数据流
- [ ] API 参考手册更新到 v5
- [ ] 回归测试套件从 987 → 目标 1500+
- [ ] 模糊测试框架增强
- [ ] CI/CD 流水线(Linux + Windows + macOS
### M4 交付物
| 模块 | 新增文件 | 预估行数 | 测试 |
|------|---------|---------|------|
| 工业格式 | 5 个实现文件 | ~2000 | ~30 |
| GPU 加速 | rewrite `gpu_acceleration.cpp` | ~600 | ~8 |
| Python 绑定 | 4 个绑定模块 | ~800 | ~15 |
| 文档+测试 | 5 个文档 + 测试增强 | — | +~300 |
---
## 📊 v5 总览
### 模块统计
| 里程碑 | 模块数 | 新增文件 | 预估代码行数 | 新增测试 |
|--------|--------|---------|-------------|---------|
| **M1 — 地基** | 4 | ~8 修改 | ~3,000 | ~70 |
| **M2 — 曲面** | 4 | ~4 新 | ~2,600 | ~49 |
| **M3 — 装配制造** | 4 | ~4 新 | ~3,400 | ~63 |
| **M4 — 生态** | 4 | ~9 新 | ~3,400 | ~353 |
| **合计** | **16** | **~25** | **~12,400** | **~535** |
### 完成后规模预估
| 指标 | v4.6 当前 | v5 完成后 | 增长 |
|------|----------|----------|------|
| 源文件 | 50 | ~75 | +25 |
| 头文件 | 50 | ~58 | +8 |
| 代码行数 | ~15K | ~27K | +80% |
| 测试用例 | 987 | ~1520 | +54% |
### 完成后能力对标
| 维度 | v4.6 | v5 目标 | 对标 |
|------|------|---------|------|
| B-Rep 核心 | 80% | **90%** | OCCT 同级 |
| 曲面建模 | 60% | **75%** | 超越 OCCT |
| 装配体 | 50% | **75%** | 接近 Parasolid |
| 工程图 | 60% | 60% | 保持 |
| 数据交换 | 70% | **85%** | 超越 OCCT |
| 制造 CAM | 30% | **65%** | 基础可用 |
| 性能 | 40% | **60%** | GPU 可用 |
| 生态 | 20% | **35%** | Python+文档完善 |
| **综合** | **55%** | **72%** | ✅ 超越 OCCT |
---
## 🗺️ 执行路线
```
Week 1-2: M1 地基加固
├─ TrimmedSurface 深度集成
├─ SSI 布尔重写
├─ 拓扑修复增强
└─ 容差系统完善
Week 3-4: M2 高级曲面
├─ G2/G3 连续性 + 分析
├─ 曲面延伸 + N边填充
├─ 高级过渡曲面
└─ 曲面分析工具集
Week 5-6: M3 装配 + 制造
├─ 大装配 LOD
├─ 约束求解器
├─ 完整 CAM 策略
└─ 直接建模
Week 7: M4 生态 + 格式
├─ 工业格式 (JT/XT/SAT/IFC/AP242)
├─ GPU 加速实现
├─ Python 绑定扩展
└─ 文档 + 测试增强
Week 8: 集成测试 + 发布
├─ 全量回归 (目标 1500+ 0 failures)
├─ 性能基准刷新
├─ Changelog + Release Notes
└─ Git tag v5.0.0
```
---
## ⚡ 风险与缓解
| 风险 | 概率 | 缓解 |
|------|------|------|
| SSI 布尔耗时超预期 | 中 | 先完成核心场景,边界 case 逐步覆盖 |
| TrimmedSurface 重构影响面大 | 中 | 逐个 make_* 迁移,保持旧接口兼容 |
| GPU 开发环境受限 | 低 | CUDA 和纯 CPU fallback 双路径 |
| 工业格式逆向工程 | 高 | JT/XT/SAT 先实现子集,逐步扩展 |