fcf25e561d
v4.1 收尾: - IncrementalUpdateEngine: dirty flag propagation, cache invalidation - LargeAssembly: InstanceCache, assembly instancing - STEP import: robust/graceful parsing with skip tracking v4.3 分析工具: - Mass properties (volume, centroid, inertia tensor) - Clearance analysis, wall thickness analysis - Enhanced drawing: hidden-line removal, offset sections, BOM - DXF import (LINE/CIRCLE/ARC/LWPOLYLINE/SPLINE → B-Rep extrusion) v4.4 地基加固: - ToleranceChain: RSS cumulative tolerance propagation (7 tests) - Euler operations: MEV/KEV/MEF/KEF/KEMR/MEKR (20 tests) - Replace hardcoded tolerances with ToleranceConfig in validate - Fix incremental_update test API mismatch (15/15 pass on Linux) Docs: - v4.1-v4.4 development plans + roadmap updated - v4.4 marked complete on Linux 30 files, +3424/-210
3.4 KiB
3.4 KiB
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/ltefuzzy_equal_vec,fuzzy_equal_point,fuzzy_parallel,fuzzy_perpendicular
1.2 自适应容差 ✅(已有)
ToleranceConfig结构体:按操作类型设置容差adaptive_tolerance(model_size, base_tol)model_tolerance(body)
1.3 容差传播 ✅(本轮新增)
ToleranceChain类 — RSS 合成累积容差push(op_name, tol),cumulative(),max_step(),depth()
- 7 项新测试
1.4 集成 ✅
brep_validate.cpp硬编码 1e-6 →ToleranceConfig::global().vertex_mergebrep_validate.cpp硬编码 1e-9 →ToleranceConfig::global().point_on_surfacebrep_heal.cpp— 已零硬编码
测试
- ToleranceChain: 7 项新测试
- 原有容差测试: 14 项保持
2. 🧬 欧拉操作 ✅
2.1 数据结构
EulerOp— 静态方法模式的欧拉操作引擎EulerOpResult— 含新建/删除元素 ID + 错误信息BrepModelfriend 声明
2.2 核心操作
- MEV — 边上插入顶点,分裂边
- KEV — 移除顶点,合并共线边
- MEF — 面内建边,分裂面
- KEF — 删除边,合并共面
- KEMR — 删除内环边
- MEKR — 内环建边
2.3 验证
euler_poincare(body)— 计算 V - E + 2F - Lverify_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 |
修改 | 状态更新 |
待做
- Linux 编译验证 — 编译成功,增量更新 15/15 测试通过
- Windows 节点编译验证 — 需在 Win 端编译运行测试
- 提交 Gitea — commit 8c3edcb