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

3.4 KiB
Raw Blame History

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 容差传播 (本轮新增)

  • ToleranceChain 类 — RSS 合成累积容差
    • push(op_name, tol), cumulative(), max_step(), depth()
  • 7 项新测试

1.4 集成

  • brep_validate.cpp 硬编码 1e-6 → ToleranceConfig::global().vertex_merge
  • brep_validate.cpp 硬编码 1e-9 → ToleranceConfig::global().point_on_surface
  • brep_heal.cpp — 已零硬编码

测试

  • ToleranceChain: 7 项新测试
  • 原有容差测试: 14 项保持

2. 🧬 欧拉操作

2.1 数据结构

  • EulerOp — 静态方法模式的欧拉操作引擎
  • EulerOpResult — 含新建/删除元素 ID + 错误信息
  • BrepModel friend 声明

2.2 核心操作

  • MEV — 边上插入顶点,分裂边
  • KEV — 移除顶点,合并共线边
  • MEF — 面内建边,分裂面
  • KEF — 删除边,合并共面
  • KEMR — 删除内环边
  • MEKR — 内环建边

2.3 验证

  • euler_poincare(body) — 计算 V - E + 2F - L
  • 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 修改 状态更新

待做

  • Linux 编译验证 — 编译成功,增量更新 15/15 测试通过
  • Windows 节点编译验证 — 需在 Win 端编译运行测试
  • 提交 Gitea — commit 8c3edcb