docs: v5 comprehensive plan — close all competitive gaps in one version
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:
@@ -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
|
||||
|
||||
**现状**: 头文件存在,实现为 stub,Face 仍用完整 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 14306,Siemens 主导的轻量化格式
|
||||
- [ ] **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 先实现子集,逐步扩展 |
|
||||
Reference in New Issue
Block a user