Files
ViewDesignEngine/docs/28-v5.0-补齐计划.md
T
茂之钳 0df9e77eac
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
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
2026-07-26 19:53:49 +08:00

10 KiB
Raw Blame History

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 先实现子集,逐步扩展