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
|