Files
ViewDesignEngine/docs/22-v4.4-开发计划.md
T
茂之钳 fcf25e561d feat(v4.4): complete remaining v4.1-v4.4 features + precision tolerance + Euler ops
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
2026-07-26 16:49:37 +08:00

94 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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