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
94 lines
3.4 KiB
Markdown
94 lines
3.4 KiB
Markdown
# 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
|