# ViewDesignEngine v4.4 — 精确容差系统 + 欧拉操作 > 制定: 2026-07-25 | 状态: ✅ 完成 > > 进度: ✅ M1 精确容差 | ✅ M2 欧拉操作 | ✅ Linux 编译验证 | ⏳ Windows 编译验证 继 v4.2 共享拓扑稳定性修复后,v4.4 继续 B-Rep 地基加固。 **实际情况:tolerance.h 已有大部分 fuzzy 比较和自适应容差**,本轮主要补充 ToleranceChain + 集成到 validate + 新增欧拉操作模块。 --- ## 1. 🔬 精确容差系统 ✅ ### 1.1 Fuzzy 比较基础设施 ✅(已有) - `fuzzy_equal`, `fuzzy_zero`, `fuzzy_gt/lt/gte/lte` - `fuzzy_equal_vec`, `fuzzy_equal_point`, `fuzzy_parallel`, `fuzzy_perpendicular` ### 1.2 自适应容差 ✅(已有) - `ToleranceConfig` 结构体:按操作类型设置容差 - `adaptive_tolerance(model_size, base_tol)` - `model_tolerance(body)` ### 1.3 容差传播 ✅(本轮新增) - [x] `ToleranceChain` 类 — RSS 合成累积容差 - `push(op_name, tol)`, `cumulative()`, `max_step()`, `depth()` - [x] 7 项新测试 ### 1.4 集成 ✅ - [x] `brep_validate.cpp` 硬编码 1e-6 → `ToleranceConfig::global().vertex_merge` - [x] `brep_validate.cpp` 硬编码 1e-9 → `ToleranceConfig::global().point_on_surface` - [x] `brep_heal.cpp` — 已零硬编码 ### 测试 - [x] ToleranceChain: 7 项新测试 - [x] 原有容差测试: 14 项保持 --- ## 2. 🧬 欧拉操作 ✅ ### 2.1 数据结构 - [x] `EulerOp` — 静态方法模式的欧拉操作引擎 - [x] `EulerOpResult` — 含新建/删除元素 ID + 错误信息 - [x] `BrepModel` friend 声明 ### 2.2 核心操作 - [x] MEV — 边上插入顶点,分裂边 - [x] KEV — 移除顶点,合并共线边 - [x] MEF — 面内建边,分裂面 - [x] KEF — 删除边,合并共面 - [x] KEMR — 删除内环边 - [x] MEKR — 内环建边 ### 2.3 验证 - [x] `euler_poincare(body)` — 计算 V - E + 2F - L - [x] `verify_euler(body)` — 验证 EP ≥ 2 ### 测试 — 20 项 - EulerPoincare_Cube, VerifyEuler_Cube - MEV: 4 项(分裂/四分之一参数/拒绝边界/模型保持有效) - KEV: 3 项(合并/拒绝非度2/拒绝非共线) - MEF: 3 项(分裂/拒绝同顶点/拒绝顶点不在面内) - KEF: 2 项(合并分裂面/不崩溃) - KEMR: 1 项(拒绝边界边) - 欧拉不变性: 3 项(MEV后/MEF→KEF往返/MEV→KEV往返) - 辅助: 1 项(VertexDegree) --- ## 修改文件汇总 | 文件 | 操作 | 说明 | |------|------|------| | `include/vde/brep/tolerance.h` | 修改 | 新增 ToleranceChain 类 | | `src/brep/tolerance.cpp` | 修改 | 实现 ToleranceChain | | `src/brep/brep_validate.cpp` | 修改 | 硬编码容差 → ToleranceConfig | | `include/vde/brep/euler_op.h` | **新建** | 欧拉操作头文件 | | `src/brep/euler_op.cpp` | **新建** | 欧拉操作实现(~350行) | | `include/vde/brep/brep.h` | 修改 | 添加 friend 声明 | | `tests/brep/test_tolerance.cpp` | 修改 | +7 项 ToleranceChain 测试 | | `tests/brep/test_euler_op.cpp` | **新建** | 20 项欧拉操作测试 | | `tests/brep/CMakeLists.txt` | 修改 | 添加 test_euler_op | | `src/CMakeLists.txt` | 修改 | 添加 euler_op.cpp, dxf_import.cpp | | `docs/22-v4.4-开发计划.md` | 修改 | 状态更新 | --- ## 待做 - [x] **Linux 编译验证** — 编译成功,增量更新 15/15 测试通过 - [ ] **Windows 节点编译验证** — 需在 Win 端编译运行测试 - [x] 提交 Gitea — commit 8c3edcb