docs: CHANGELOG v1.0.0-beta.1 + README update
CHANGELOG: complete history from v0.1.0 to v1.0.0-beta.1 README: module overview, format support table, updated badges
This commit is contained in:
+111
-142
@@ -1,173 +1,142 @@
|
|||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
## [3.5.0] — 2026-07-24
|
## [1.0.0-beta.1] — 2026-07-27
|
||||||
|
|
||||||
### 性能+实战
|
### 首次完整功能版本
|
||||||
- 布尔运算缓存加速(mesh_cache + AABB 预检)
|
|
||||||
- 测量工具:distance / surface_area / volume / centroid
|
|
||||||
- 实战零件示例:法兰(flange)+ 齿轮(gear)
|
|
||||||
- 参数特征树:FeatureNode 递归求值 + FeatureHistory undo/redo
|
|
||||||
- 装配约束:Coincident / Concentric / Tangent / Distance / Parallel / Perpendicular / Angle
|
|
||||||
|
|
||||||
## [3.4.0] — 2026-07-24
|
ViewDesignEngine 从零到完整几何引擎,覆盖 B-Rep、曲面、网格、格式交换、CAM、工程图、装配全栈能力。
|
||||||
|
|
||||||
### 制造就绪
|
### 新增 (Added)
|
||||||
- B-Rep 布尔集成面分割(质量大幅提升)
|
|
||||||
- CAM 刀具路径:offset_contour + contour_toolpath + pocket_toolpath + G-code 导出
|
|
||||||
- NURBS 曲面-曲面求交(递归细分 + Newton 精化)
|
|
||||||
|
|
||||||
## [3.3.0] — 2026-07-24
|
**B-Rep 核心**
|
||||||
|
- 完整边界表示 (Vertex/Edge/Loop/Face/Shell/Body)
|
||||||
|
- TrimmedSurface 裁剪曲面(p-curve + winding number)
|
||||||
|
- SSI 布尔运算(面-面求交→分割→分类→缝合)
|
||||||
|
- 容错建模(tolerant edges/vertices,间隙桥接,重叠解决)
|
||||||
|
- 拓扑修复(heal_gaps/heal_slivers/heal_orientation/heal_topology)
|
||||||
|
- 自适应容差系统(全局+局部+PerFace+ToleranceChain)
|
||||||
|
- 欧拉操作(MEV/KEV/MEF/KEF/KEMR/MEKR)
|
||||||
|
- 直接建模(push_pull/tweak_face/move_face/replace_face)
|
||||||
|
- 钣金展开(K-factor + 折弯扣除表)
|
||||||
|
- FFD 自由变形(Bezier volume lattice)
|
||||||
|
- 水密性验证 + 容差诊断 + 设计规则检查 + 质量评分
|
||||||
|
|
||||||
### 工业强化
|
**曲线与曲面**
|
||||||
- B-Rep face splitting(split_face_by_plane)
|
- NURBS 曲线/曲面(阶次/节点/权重/控制点完整支持)
|
||||||
- WebGL 3D 查看器(viewer/index.html,拖放 GLB/STL)
|
- G0/G1/G2/G3 连续性分析与过渡
|
||||||
- 教程文档 3 篇(快速开始 / SDF / B-Rep)
|
- 曲面延伸 + N边填充 + 变半径/滚动球过渡
|
||||||
- 模糊测试(SDF / Boolean / Format round-trip)
|
- 生成曲面(Sweep/Loft/Net Surface)
|
||||||
- DEB 打包(packaging/build-deb.sh)
|
- 曲面编辑(Match Surface G0-G3 / Control Point Edit)
|
||||||
|
- 鲁棒曲面求交(三阶段:AABB→Newton 1e-12→奇异点)
|
||||||
|
- 曲线工具(投影/偏移/连接/螺旋线/等参线)
|
||||||
|
- A级曲面分析(高光线/反射线/斑马纹/等照度/曲率梳/拐点线/棋盘格)
|
||||||
|
|
||||||
## [3.2.0] — 2026-07-24
|
**网格处理**
|
||||||
|
- 半边数据结构 (HalfedgeMesh)
|
||||||
|
- Delaunay 2D/3D 三角剖分
|
||||||
|
- QEM 网格简化 / Laplacian/Taubin/HC/Bilateral 平滑
|
||||||
|
- Marching Cubes + 自适应分辨率
|
||||||
|
- 网格布尔运算 / 质量评估 / 测地线
|
||||||
|
- FEA 网格生成(四面体/边界层棱柱/六面体 sweep-map-submap-multi_block)
|
||||||
|
- 逆向工程(点云→Poisson重建→NURBS拟合)
|
||||||
|
- CAE 格式导出(Abaqus/ANSYS/Nastran)
|
||||||
|
|
||||||
### CI/CD + 3MF + 装配体
|
**空间索引与碰撞**
|
||||||
- CI/CD 配置(.gitea/workflows/build.yml)
|
- BVH (SAH) / Octree / KD-Tree / R-Tree (STR)
|
||||||
- Python 绑定(pyproject.toml + setup.py)
|
- GJK/EPA 碰撞检测 / SAT / Möller-Trumbore 射线-三角形
|
||||||
- 3MF 格式导入/导出(零外部依赖 ZIP 实现)
|
|
||||||
- B-Rep 装配体树(Assembly + AssemblyNode)
|
|
||||||
- 性能基准修复 + 基线报告
|
|
||||||
|
|
||||||
## [3.1.0] — 2026-07-24
|
**SDF 隐式建模**
|
||||||
|
- 15+ 隐式图元 + CSG 树操作
|
||||||
|
- SDF→Mesh 转换 + 梯度优化
|
||||||
|
- 可微分几何 + Torch 集成
|
||||||
|
|
||||||
### 文档 + 示例 + NURBS 操作
|
**数据交换**
|
||||||
- Doxygen API 文档(76 头文件,483 页 HTML)
|
- STEP AP203/214/242 导入导出
|
||||||
- Gitea Wiki(12 页在线 API 参考)
|
- IGES 5.3 导入导出
|
||||||
- Markdown API 参考手册(6942 行)
|
- Parasolid XT 文本+二进制导入导出
|
||||||
- 3D 打印示例(08_3d_print)
|
- ACIS SAT 文本+二进制导入导出
|
||||||
- B-Rep 制造示例(09_brep_fab)
|
- JT (ISO 14306) 导入导出
|
||||||
- Python SDF 优化示例
|
- IFC (BIM) 导入
|
||||||
- NURBS 高级操作(offset / trim / blend / ruled / coons / extrude)
|
- STL/OBJ/PLY/glTF/GLB/3MF 导入导出
|
||||||
- Marching Cubes SEGFAULT 修复
|
- PDF 3D 导出
|
||||||
|
|
||||||
|
**CAM 制造**
|
||||||
|
- 2.5轴/3轴加工(粗加工层切 + 精加工平行/环绕)
|
||||||
|
- 5轴加工(侧刃/多轴粗精加工 + 机床运动学)
|
||||||
|
- 高级策略(自适应清除/摆线铣削/残料加工/清根/恒接触角)
|
||||||
|
- 钻孔循环(G81/G83/G84)+ 螺纹铣削 + 探测循环
|
||||||
|
- 刀库管理 + 8种后处理器(Fanuc/Siemens/Heidenhain/Mazak/Okuma/Haas/DMG/通用)
|
||||||
|
- 切屑减薄 + HSM + 刀具寿命管理 + 刀柄碰撞检测
|
||||||
|
|
||||||
## [3.0.0] — 2026-07-24
|
**工程图**
|
||||||
|
- 投影视图(三视图+等轴测)+ 剖视图(全剖/局部剖/阶梯剖)
|
||||||
|
- 隐藏线消除(HLR)+ BOM 物料清单
|
||||||
|
- 自动标注(线性/角度/半径/直径)+ 智能放置
|
||||||
|
- GD&T 14种符号(ASME Y14.5)+ MMC/LMC/RFS
|
||||||
|
- PMI/MBD 3D标注 + ISO/ANSI/JIS 制图标准
|
||||||
|
- DXF 导出
|
||||||
|
|
||||||
### 全线测试通过(476+ / 476+)
|
**装配体**
|
||||||
|
- 装配树 + 3D约束求解器(Newton-Raphson + DOF分析)
|
||||||
|
- 干涉检查 + 运动仿真(旋转/滑动/圆柱/球面/平面副)
|
||||||
|
- 爆炸视图 + 大装配LOD(三级)+ 装配阵列(5种模式)
|
||||||
|
|
||||||
#### S13 — IGES 导入/导出
|
**性能与基础设施**
|
||||||
- 导入:22 种实体类型(弧、线、B-Spline、圆环、球面等)→ B-Rep
|
- OpenMP 全并行(MC/布尔/求交/分类)
|
||||||
- 导出:B-Rep → 80 列卡片式文件
|
- SIMD 向量化(SSE/AVX/NEON 自适应)
|
||||||
|
- 无锁数据结构(LockFreeQueue/Stack + ConcurrentHashMap)
|
||||||
|
- 内存池 + CoW 智能指针 + NUMA感知分配
|
||||||
|
- 事务模式(Command/UndoManager/崩溃恢复日志)
|
||||||
|
- 精确谓词(GMP自适应精度)
|
||||||
|
- 增量更新引擎 + B-Rep拓扑压缩 + IGA分析准备
|
||||||
|
|
||||||
#### S12 — 可微分几何
|
**测试与质量**
|
||||||
- 自动微分引擎 + 梯度驱动优化 + Torch 桥 + Python API
|
- CI/CD 自动化(.github/workflows)
|
||||||
|
- 回归测试套件(退化几何/极端坐标/薄壁件/大面数)
|
||||||
|
- 模糊测试框架(SDF/布尔/格式往返+持续模式)
|
||||||
|
- 性能基准(布尔/MC/IO)
|
||||||
|
- clang-tidy 静态分析配置
|
||||||
|
|
||||||
#### S11 — SDF 隐式建模
|
### 已知问题 (Known Issues)
|
||||||
- 15+ 图元 + CSG 树 + SDF→Mesh + Python bindings
|
|
||||||
|
|
||||||
#### 全线 bugfix(41→0)
|
- 切触/共面布尔运算需更多边界case测试
|
||||||
- SDF NaN/边界 + 操作符号 + B-Rep 顶点ID + Parser + 布尔 ON-边界分类
|
- 部分 TrimmedSurface 路径未经过工业级验证
|
||||||
|
- 二进制格式(XT/SAT/JT)为基础实现,未覆盖所有实体类型
|
||||||
|
- 缺乏真实用户场景的鲁棒性验证(此版本仅供内部评估)
|
||||||
|
|
||||||
#### Phase A — GLTF/GLB + 管线示例
|
---
|
||||||
|
|
||||||
|
## 历史版本 (v0.x)
|
||||||
|
|
||||||
## [2.0.0] — 2026-07-24
|
以下为 v0.1.0 至 v3.5.0 的开发历程,已归档。
|
||||||
|
|
||||||
### Sprint 10 — B-Rep 完善 + STEP 导入导出 + 工程健壮性
|
### [3.5.0] — 2026-07-24
|
||||||
- **B-Rep 建模补齐**:fillet(恒定半径滚动球倒圆)、chamfer(等距倒角)、shell(抽壳,含侧壁连接面)完整实现
|
- 布尔运算缓存加速 + 测量工具
|
||||||
- **STEP 导入** (`import_step`):ISO 10303-21 解析器,支持 AP203/AP214 标准几何与拓扑实体
|
- 实战零件示例 + 参数特征树 + 装配约束
|
||||||
- **STEP 导出** (`export_step`):BrepModel → STEP AP214 字符串/文件,含曲线/曲面类型自动检测
|
|
||||||
- **B-Rep 布尔运算**:brep_union / brep_intersection / brep_difference,基于面面求交 + 内/外分类 + 缝合
|
|
||||||
- **B-Rep 验证** (`validate`):水密性、悬边、自相交、方向一致性、欧拉示性数检查
|
|
||||||
- **测试**:新增 5 个测试文件(fillet/chamfer/shell、STEP 导入/导出、B-Rep 布尔、B-Rep 验证),共 47 项测试
|
|
||||||
|
|
||||||
## [1.0.0] — 2026-07-24
|
### [3.4.0] — 2026-07-24
|
||||||
|
- B-Rep 布尔集成面分割 + CAM 刀具路径 + NURBS 曲面-曲面求交
|
||||||
|
|
||||||
### 首个稳定版本
|
### [3.3.0] — 2026-07-24
|
||||||
|
- B-Rep face splitting + WebGL 3D 查看器 + 教程文档 + DEB 打包
|
||||||
|
|
||||||
所有 9 个 Sprint 完成,全部模块实现并通过测试。
|
### [3.2.0] — 2026-07-24
|
||||||
|
- CI/CD 配置 + Python 绑定 + 3MF 格式 + B-Rep 装配体树
|
||||||
|
|
||||||
**指标**: 7,800+ 行源码,2,300+ 行头文件,143 测试 100% 通过
|
### [3.1.0] — 2026-07-24
|
||||||
|
- Doxygen API 文档 + Gitea Wiki + 3D打印/B-Rep制造示例 + NURBS高级操作
|
||||||
|
|
||||||
#### M3 性能基准(本轮完成)
|
### [3.0.0] — 2026-07-24
|
||||||
- BVH/Delaunay/Curves/Spatial/Boolean 5 套 benchmark 全部通过
|
- 全线测试通过(476+/476+)+ IGES导入导出 + 可微分几何 + SDF隐式建模
|
||||||
- 性能报告: `docs/benchmark-report.md`
|
|
||||||
|
|
||||||
#### M3 修复(本轮完成)
|
### [2.0.0] — 2026-07-24
|
||||||
- **Delaunay3D**: circumcenter Eigen QR 求解,空外接球验证
|
- B-Rep 完善(fillet/chamfer/shell)+ STEP 导入导出 + B-Rep 布尔 + 验证
|
||||||
- **B-Rep**: is_valid ID 查找,add_surface/add_edge 返回下标
|
|
||||||
- **BooleanMesh**: ray-tri 交点容差 + 面上偏移
|
|
||||||
|
|
||||||
|
### [1.0.0] — 2026-07-24
|
||||||
|
- 首个稳定版本:7800+行源码,143 测试 100% 通过
|
||||||
|
|
||||||
|
### [0.9.0] — 2026-07-23
|
||||||
|
- 性能基准测试套件 + Sprint 9 完成
|
||||||
|
|
||||||
## [0.9.0] — 2026-07-23
|
### [0.1.0] — 2026-07-23
|
||||||
|
- 基础设施层 + 几何核心层 + 构建系统
|
||||||
### M3 里程碑起步 — 性能基准测试套件
|
|
||||||
- **新增 `bench/` 目录**:Google Benchmark 驱动的性能基准测试套件
|
|
||||||
- **bench_bvh**:N=1K/10K/100K 随机三角形 SAH 构建 + 1K 射线最近命中查询
|
|
||||||
- **bench_delaunay**:N=100/1K/10K 随机点 2D Bowyer-Watson 三角剖分
|
|
||||||
- **bench_boolean**:两个球体 (N=100/500 面) 3D union/intersection 运算
|
|
||||||
- **bench_curves**:N=10K/100K 次 Bezier/BSpline evaluate 吞吐量
|
|
||||||
- **bench_spatial**:N=1K/10K/100K 点 R-Tree STR 构建 + KD-Tree 构建;kNN(n=10) 查询
|
|
||||||
- **构建集成**:`BUILD_BENCHMARKS` 选项 (默认 OFF),Google Benchmark 通过 FetchContent 自动下载
|
|
||||||
- **CTest 集成**:`ctest -R bench_` 一键运行全部基准
|
|
||||||
|
|
||||||
### Sprint 9 — 3D Delaunay/B-Rep/Boolean 测试补全
|
|
||||||
- **测试新增**:test_delaunay_3d(6 个用例)、test_boolean_mesh(22 个用例)、test_brep(17 个用例)
|
|
||||||
- **3D Delaunay 测试**:空输入、正四面体、Delaunay 空外接球性质验证、退化点(共面/共线)
|
|
||||||
- **3D 网格布尔测试**:相交/不相交/包含场景的 union/intersection/difference/sym_diff、空网格边界、点分类、invert/merge 辅助函数
|
|
||||||
- **B-Rep 测试**:make_box/make_sphere/make_cylinder 实体创建、拓扑查询(face_edges/edge_faces/vertex_edges)、to_mesh 离散化、有效性验证、空模型边缘情况
|
|
||||||
- **构建更新**:tests/CMakeLists.txt 添加 brep 子目录,mesh/boolean CMakeLists 添加新测试
|
|
||||||
- **文档更新**:开发计划 S9 状态更新为进行中
|
|
||||||
|
|
||||||
## [0.8.0] — 2026-07-23
|
|
||||||
|
|
||||||
### Sprint 8 收尾 — spatial + mesh
|
|
||||||
- **KD-Tree 完善**:priority-queue kNN、ray query、remove 支持
|
|
||||||
- **Octree 完善**:ray query 补充
|
|
||||||
- **mesh_simplify**:QEM 简化实现验证
|
|
||||||
|
|
||||||
## [0.7.0] — 2026-07-23
|
|
||||||
|
|
||||||
### 模块补全
|
|
||||||
- **3D 网格布尔运算**:mesh_union/intersection/difference/sym_diff + BVH 射线投射
|
|
||||||
- **网格平滑扩展**:HC Laplacian(体积保持)、双边滤波(特征保留)
|
|
||||||
- **网格质量评估**:三角形/四面体质量、质量报告(A-F 分级)
|
|
||||||
- **R-Tree 完整实现**:STR bulk-loading、分层查询、kNN priority-queue
|
|
||||||
- **碰撞检测扩展**:ray-aabb/sphere/mesh/plane、tri-tri 交线
|
|
||||||
- **曲线曲面补全**:Bezier/BSpline 解析导数、自适应细分
|
|
||||||
- **core 补全**:distance(6 种扩展)、polygon(三角剖分、凸包、简化)
|
|
||||||
- **foundation 补全**:OBJ 纹理坐标、STL ASCII/Binary 双格式
|
|
||||||
|
|
||||||
### 测试覆盖扩展
|
|
||||||
- 新增 7 个测试文件:polygon、distance、r_tree、ray、quality、smooth
|
|
||||||
- 测试从 11 文件/25 用例 → 17 文件/92 用例(100% 通过)
|
|
||||||
|
|
||||||
### 修复
|
|
||||||
- exact_predicates 匿名 namespace 泄漏
|
|
||||||
- RTree insert/remove 自赋值 bug
|
|
||||||
- mesh_quality 纵横比公式归一化
|
|
||||||
|
|
||||||
### 文档
|
|
||||||
- 开发计划 S8 状态更新
|
|
||||||
|
|
||||||
## [0.1.0] — 2026-07-23
|
|
||||||
|
|
||||||
### 新增
|
|
||||||
- 基础设施层(foundation):数学类型、公差系统、精确谓词、OBJ/STL 读写
|
|
||||||
- 几何核心层(core):点、线、面、三角形、AABB、几何变换、距离计算、凸包
|
|
||||||
- 曲线曲面层(curves):Bezier/B-Spline/NURBS 曲线与曲面、离散化
|
|
||||||
- 网格处理层(mesh):半边数据结构、Delaunay 2D 三角剖分
|
|
||||||
- 空间索引层(spatial):BVH(SAH 构建)
|
|
||||||
- 碰撞检测层(collision):GJK 算法、Möller-Trumbore 射线-三角形相交
|
|
||||||
- 布尔运算层(boolean):2D 多边形 Sutherland-Hodgman 裁剪
|
|
||||||
- 构建系统:CMake + FetchContent(Eigen, GTest 自动下载)
|
|
||||||
- 测试框架:Google Test,11 个测试文件
|
|
||||||
- 示例程序:6 个可运行示例
|
|
||||||
|
|
||||||
### v0.8.0 时已全部完成 ✅
|
|
||||||
|
|
||||||
(以下为初始规划时的待完成清单,现已全部实现)
|
|
||||||
- 网格简化(QEM) ✅
|
|
||||||
- 网格平滑(Laplacian/Taubin/HC/Bilateral) ✅
|
|
||||||
- 3D 网格布尔运算 ✅
|
|
||||||
- Octree、KD-Tree、R-Tree 完整实现 ✅
|
|
||||||
- 3D Delaunay 剖分 ✅
|
|
||||||
- B-Rep 支持 ✅
|
|
||||||
- Python 绑定 ✅
|
|
||||||
|
|||||||
@@ -1,195 +1,74 @@
|
|||||||
1|# ViewDesignEngine — 高性能 CAD 计算几何引擎
|
# ViewDesignEngine — 高性能 CAD 几何引擎
|
||||||
2|
|
|
||||||
3|C++17 全栈计算几何引擎。从底层数学工具到 B-Rep 拓扑建模、SDF 隐式建模、可微分几何、工业格式互操作,一条龙覆盖。
|
|
||||||
4|
|
|
||||||
5|[](https://git.hdtime.space/ViewDesignEngine/ViewDesignEngine/actions)
|
|
||||||
6|[](tests/)
|
|
||||||
7|[](CHANGELOG.md)
|
|
||||||
8|[](CMakeLists.txt)
|
|
||||||
9|[](pyproject.toml)
|
|
||||||
10|
|
|
||||||
11|## 快速开始
|
|
||||||
12|
|
|
||||||
13|### C++ 构建
|
|
||||||
14|
|
|
||||||
15|```bash
|
|
||||||
16|# Docker 构建环境(推荐)
|
|
||||||
17|docker exec vde-builder bash -c "cd /ws/ViewDesignEngine && cmake -B build && cmake --build build -j\$(nproc)"
|
|
||||||
18|
|
|
||||||
19|# 本地构建
|
|
||||||
20|cmake -B build -DCMAKE_BUILD_TYPE=Release
|
|
||||||
21|cmake --build build -j$(nproc)
|
|
||||||
22|
|
|
||||||
23|# 运行测试
|
|
||||||
24|cd build && ctest --output-on-failure
|
|
||||||
25|
|
|
||||||
26|# 运行示例
|
|
||||||
27|./build/examples/07_pipeline/pipeline_demo # SDF → GLB 全流程
|
|
||||||
28|```
|
|
||||||
29|
|
|
||||||
30|**依赖**: CMake ≥ 3.16, C++17, Eigen 3, GoogleTest(自动下载)
|
|
||||||
31|
|
|
||||||
32|### Python 安装
|
|
||||||
33|
|
|
||||||
34|```bash
|
|
||||||
35|# 从源码安装(推荐)
|
|
||||||
36|pip install .
|
|
||||||
37|
|
|
||||||
38|# 开发模式(可编辑安装)
|
|
||||||
39|pip install -e .
|
|
||||||
40|
|
|
||||||
41|# 仅 CMake 构建(不安装到 site-packages)
|
|
||||||
42|cmake -B build_py -DVDE_BUILD_PYTHON=ON -DCMAKE_BUILD_TYPE=Release
|
|
||||||
43|cmake --build build_py -j$(nproc)
|
|
||||||
44|
|
|
||||||
45|# 测试导入
|
|
||||||
46|PYTHONPATH=build_py/python python3 -c "import vde; print(vde.__version__)"
|
|
||||||
47|```
|
|
||||||
48|
|
|
||||||
49|**Python 依赖**: CMake ≥ 3.16, C++17, Eigen 3(自动下载), pybind11 ≥ 2.10
|
|
||||||
50|
|
|
||||||
## 模块能力总览
|
|
||||||
|
|
||||||
| 模块 | 命名空间 | 能力 | 头文件 | 测试 | 行数 |
|
C++17 全栈 B-Rep 几何内核。对标 Parasolid/ACIS,覆盖曲面建模、网格处理、格式交换、CAM 制造、工程图、装配体。
|
||||||
|------|---------|------|--------|:--:|:----:|
|
|
||||||
| `foundation` | `vde::foundation` | 数学类型 (Point3D/Vector3D/Matrix4x4)、公差系统、精确谓词、STL/OBJ/PLY/GLTF/3MF 读写、工业格式 (STEP/IGES/JT/XT/SAT/IFC/PDF3D) | 15 | ~30 | ~3,200 |
|
[](CHANGELOG.md)
|
||||||
| `core` | `vde::core` | 多边形、Voronoi、凸包、ICP、距离计算、对象池、事务、拓扑压缩、CAM 2.5D/5轴/高级加工策略、刀路优化、并行调度、内存池 | 20 | ~40 | ~5,800 |
|
[](CMakeLists.txt)
|
||||||
| `curves` | `vde::curves` | Bézier / B-Spline / NURBS 曲线曲面、自适应细分、曲面求交、曲面延伸、曲面连续性 (G0-G3)、曲面分析、曲面光顺、精确偏移、Class-A 曲面、IGA 准备 | 18 | ~50 | ~4,500 |
|
[](LICENSE)
|
||||||
| `mesh` | `vde::mesh` | 半边网格、Delaunay 2D/3D、CDT、QEM 简化、网格平滑、网格布尔、网格修复、Alpha Shapes、参数化、测地线、曲率、Marching Cubes (并行)、LOD、逆向工程、点云处理、FEA 网格 (四面体/六面体/棱柱)、可视化质量 | 22 | ~60 | ~6,200 |
|
[]()
|
||||||
| `spatial` | `vde::spatial` | BVH (SAH + 增量)、Octree、KD-Tree、R-Tree (STR) | 5 | ~30 | ~2,100 |
|
[](tests/)
|
||||||
| `boolean` | `vde::boolean` | 2D Sutherland-Hodgman、3D 网格布尔 (并/交/差)、多边形偏移 | 5 | ~40 | ~1,800 |
|
[](include/vde/)
|
||||||
| `collision` | `vde::collision` | GJK/EPA 距离与检测、SAT、射线-三角形 (Möller-Trumbore)、三角交线 | 5 | ~30 | ~1,500 |
|
|
||||||
| `brep` | `vde::brep` | 边界表示 (B-Rep) 拓扑建模、基本体、布尔运算、SSI 布尔、抽壳/倒圆/倒角、STEP/IGES/DXF 导入导出、验证、拓扑修复 (容错建模)、裁剪曲面、直接建模、FFD 自由变形、GDT 标注、PMI/MBD、自动标注、制图/爆炸视图、装配约束求解 (Newton-Raphson/运动链)、装配 LOD、紧固件库、钣金设计、特征识别/去特征、高级过渡面、高级修复、图纸标准 (ISO/ASME/JIS) | 55 | ~120 | ~14,500 |
|
## 快速开始
|
||||||
| `sdf` | `vde::sdf` | 15+ 隐式图元 (球/盒/柱/环/锥…)、CSG 树、光滑并/交/差、自动微分 (正向/反向)、梯度优化 (Adam/SGD)、点云拟合、SDF → Mesh | 6 | ~189 | ~2,800 |
|
|
||||||
| `sketch` | `vde::sketch` | 2D 草图约束求解器 | 2 | ~10 | ~600 |
|
```bash
|
||||||
| `capi` | `vde::capi` | C ABI 导出,跨语言互操作 (Python/Java/C#/Rust 等) | 1 | — | ~400 |
|
# Docker 构建(推荐)
|
||||||
| **合计** | | **11 模块,~900+ 测试,71K+ 行纯内核代码** | **~154** | **~900** | **~71,000** |
|
docker run --rm -v $(pwd):/ws -w /ws vde-builder:latest \
|
||||||
69|
|
bash -c "cmake -B build && cmake --build build -j\$(nproc)"
|
||||||
70|| 格式 | 导入 | 导出 | 说明 |
|
|
||||||
71||------|------|------|------|
|
# 运行测试
|
||||||
72|| STEP (AP203/214) | ✅ | ✅ | 工业 CAD 交换标准 |
|
cd build && ctest --output-on-failure -E Benchmark
|
||||||
73|| IGES (5.3) | ✅ | ✅ | 传统制造业格式 |
|
```
|
||||||
74|| glTF 2.0 / GLB | — | ✅ | 实时 3D / Web 查看 |
|
|
||||||
75|| STL | — | ✅ | 3D 打印 |
|
**依赖**: CMake ≥ 3.16, C++17, Eigen 3, GoogleTest(自动下载)
|
||||||
76|| OBJ | — | ✅ | 通用网格 |
|
|
||||||
77|| PLY | — | ✅ | 点云/网格 |
|
## 模块总览
|
||||||
78|
|
|
||||||
79|## 特色功能
|
| 模块 | 命名空间 | 关键能力 |
|
||||||
80|
|
|------|---------|----------|
|
||||||
81|### 🔮 SDF 隐式建模
|
| `foundation` | `vde::foundation` | 数学类型、公差、精确谓词、STEP/IGES/XT/SAT/JT/IFC/STL/OBJ/PLY/GLTF/3MF |
|
||||||
82|```cpp
|
| `core` | `vde::core` | 多边形、凸包、ICP、CAM策略(3轴/5轴)、SIMD、事务、压缩 |
|
||||||
83|#include <vde/sdf/sdf_primitives.h>
|
| `curves` | `vde::curves` | NURBS 曲线曲面、G0-G3连续、Sweep/Loft/Net、曲面分析 |
|
||||||
84|#include <vde/sdf/sdf_operations.h>
|
| `mesh` | `vde::mesh` | 半边网格、Delaunay、QEM、Marching Cubes、FEA网格、逆向工程 |
|
||||||
85|#include <vde/sdf/sdf_tree.h>
|
| `spatial` | `vde::spatial` | BVH (SAH)、Octree、KD-Tree、R-Tree (STR) |
|
||||||
86|
|
| `boolean` | `vde::boolean` | 2D/3D布尔、SSI面-面求交 |
|
||||||
87|// 光滑并集
|
| `collision` | `vde::collision` | GJK/EPA、SAT、Möller-Trumbore |
|
||||||
88|auto shape = SdfNode::smooth_union(
|
| `brep` | `vde::brep` | B-Rep拓扑、SSI布尔、直接建模、装配、工程图、PMI/GD&T |
|
||||||
89| SdfNode::sphere(1.5),
|
| `sdf` | `vde::sdf` | 15+隐式图元、CSG树、可微分几何、SDF→Mesh |
|
||||||
90| SdfNode::box(Point3D(1, 1, 1)),
|
| `sketch` | `vde::sketch` | 2D草图约束求解 |
|
||||||
91| 0.3
|
| `capi` | `vde::capi` | C API 跨语言互操作 |
|
||||||
92|);
|
|
||||||
93|double d = evaluate(shape, Point3D(0, 0, 0)); // SDF 值
|
## 格式支持
|
||||||
94|```
|
|
||||||
95|
|
| 格式 | 导入 | 导出 | 说明 |
|
||||||
96|### ⚡ 可微分几何 + torch 集成
|
|------|------|------|------|
|
||||||
97|```cpp
|
| STEP (AP203/214/242) | ✅ | ✅ | 工业 CAD 交换标准 |
|
||||||
98|#include <vde/sdf/sdf_gradient.h>
|
| IGES (5.3) | ✅ | ✅ | 传统制造业格式 |
|
||||||
99|#include <vde/sdf/sdf_optimize.h>
|
| Parasolid XT | ✅ | ✅ | Siemens 原生格式 |
|
||||||
100|
|
| ACIS SAT/SAB | ✅ | ✅ | Dassault 原生格式 |
|
||||||
101|// 拟合 SDF 到点云
|
| JT (ISO 14306) | ✅ | ✅ | 轻量化可视化格式 |
|
||||||
102|auto sphere = SdfNode::sphere(1.0);
|
| IFC | ✅ | — | BIM 建筑信息模型 |
|
||||||
103|auto result = fit_to_point_cloud(sphere, point_cloud, 0.01, 100);
|
| glTF 2.0 / GLB | ✅ | ✅ | 实时 3D / Web |
|
||||||
104|// result.optimized_shape → 优化后的形状
|
| STL / OBJ / PLY | ✅ | ✅ | 通用网格 / 3D打印 |
|
||||||
105|```
|
| 3MF | ✅ | ✅ | 3D 打印标准 |
|
||||||
106|
|
|
||||||
107|### 🔧 B-Rep 工业建模
|
## 测试
|
||||||
108|```cpp
|
|
||||||
109|#include <vde/brep/modeling.h>
|
| 类别 | 状态 |
|
||||||
110|#include <vde/brep/brep_boolean.h>
|
|------|------|
|
||||||
111|
|
| 核心回归测试(退化/极端/薄壁/大面数) | ✅ |
|
||||||
112|auto box = make_box(2, 2, 2);
|
| 模糊测试(SDF/布尔/格式往返+持续模式) | ✅ |
|
||||||
113|auto shelled = shell(box, -1, 0.15); // 抽壳
|
| 性能基准(布尔/MC/IO) | ✅ |
|
||||||
114|auto filleted = fillet(box, 0, 0.3); // 倒圆
|
| CI/CD (GitHub Actions) | ✅ |
|
||||||
115|auto result = brep_union(a, b); // 布尔并
|
|
||||||
116|```
|
## 文档
|
||||||
117|
|
|
||||||
118|## 代码示例
|
- [版本管理规范](docs/VERSIONING.md)
|
||||||
119|
|
- [竞品深度分析](docs/27-竞品分析.md)
|
||||||
120|完整示例见 [`examples/`](examples/):
|
- [严谨差距分析](docs/30-严谨差距分析.md)
|
||||||
121|- `01_hello_triangle` — 基础几何
|
- [曲面追赶计划](docs/31-曲线曲面深度追赶计划.md)
|
||||||
122|- `02_bezier` — 曲线求值
|
- [CHANGELOG](CHANGELOG.md)
|
||||||
123|- `03_mesh` — 网格操作
|
|
||||||
124|- `04_delaunay` — 三角剖分
|
## 许可证
|
||||||
125|- `05_boolean` — 布尔运算
|
|
||||||
126|- `06_collision` — 碰撞检测
|
Apache License 2.0 — 详见 [LICENSE](LICENSE)
|
||||||
127|- `07_pipeline` — **SDF → Mesh → GLB 完整管线**
|
|
||||||
128|
|
|
||||||
129|## 测试
|
|
||||||
130|
|
|
||||||
131|| 类别 | 测试数 | 状态 |
|
|
||||||
132||------|--------|------|
|
|
||||||
133|| 核心 + 曲线 + 网格 + 空间 + 碰撞 | ~120 | ✅ |
|
|
||||||
134|| B-Rep 建模 + 验证 | ~70 | ✅ |
|
|
||||||
135|| STEP 导入/导出 | 31 | ✅ |
|
|
||||||
136|| IGES 导入/导出 | 39 | ✅ |
|
|
||||||
137|| SDF 隐式建模 | 189 | ✅ |
|
|
||||||
138|| 可微分几何 | 76 | ✅ |
|
|
||||||
139|| GLTF/GLB 导出 | 6 | ✅ |
|
|
||||||
140|| 草图约束 | — | ✅ |
|
|
||||||
141|| **合计** | **~476** | **100%** |
|
|
||||||
142|
|
|
||||||
143|## 工程指标
|
|
||||||
144|
|
|
||||||
145|- **语言**: C++17,零外部运行时依赖(仅 header-only Eigen + GTest)
|
|
||||||
146|- **测试**: 500+ 用例,100% 通过
|
|
||||||
147|- **编译**: GCC 11+ / Clang 16+,零错误零警告
|
|
||||||
148|- **格式支持**: STEP、IGES、glTF/GLB、STL、OBJ、PLY
|
|
||||||
149|
|
|
||||||
150|## 文档
|
|
||||||
151|
|
|
||||||
153|- [开发计划](docs/00-开发计划.md) — 版本规划 + Sprint 划分
|
|
||||||
154|- [v3.1 计划](docs/10-v3.1-开发计划.md) — 下一阶段路线图
|
|
||||||
155|- [CHANGELOG](CHANGELOG.md) — 版本历史
|
|
||||||
156|- [构建指南](docs/06-部署维护/01-构建指南.md)
|
|
||||||
157|
|
|
||||||
158|## v6.0 新功能(计划中) 🔌
|
|
||||||
159|
|
|
||||||
161|
|
|
||||||
162|```cpp
|
|
||||||
163|#include <vde/plugin/plugin_system.h>
|
|
||||||
164|
|
|
||||||
165|// 插件管理器:动态加载第三方扩展
|
|
||||||
166|vde::plugin::PluginManager mgr;
|
|
||||||
167|mgr.load_plugin_dir("/usr/lib/vde/plugins");
|
|
||||||
168|
|
|
||||||
169|// 查找并使用插件
|
|
||||||
170|auto* exporter = mgr.get_plugin("io.export.gltf");
|
|
||||||
171|exporter->execute("export", {{"path", "output.glb"}}, &mesh, nullptr);
|
|
||||||
172|```
|
|
||||||
173|
|
|
||||||
174|**核心能力**:
|
|
||||||
175|- **动态加载**: 运行时 dlopen/LoadLibrary,无需重新编译 VDE
|
|
||||||
176|- **版本兼容**: PluginManifest 声明约束,自动检查兼容性
|
|
||||||
177|- **插件隔离**: 崩溃不影响主程序,独立 .so/.dylib/.dll
|
|
||||||
178|- **注册宏**: `VDE_REGISTER_PLUGIN(MyPlugin)` 一行注册
|
|
||||||
179|- **清单文件**: `plugin.json` 加速发现和验证
|
|
||||||
180|
|
|
||||||
181|**插件类型**:
|
|
||||||
182|| 类型 | 说明 | 示例 |
|
|
||||||
183||------|------|------|
|
|
||||||
184|| IO_IMPORT | 格式导入器 | USDZ, FBX, 3DS |
|
|
||||||
185|| IO_EXPORT | 格式导出器 | USDZ, X3D, AMF |
|
|
||||||
186|| GEOMETRY_FILTER | 几何过滤器 | 平滑、简化、重网格 |
|
|
||||||
187|| CUSTOM_TOOL | 自定义工具 | 应力分析、拓扑优化 |
|
|
||||||
188|
|
|
||||||
190|
|
|
||||||
191|### 开发者生态
|
|
||||||
192|
|
|
||||||
193|- 📘 **[开发者指南](docs/dev-guide/)** — 7 篇完整文档覆盖架构/API/构建/测试/贡献/插件
|
|
||||||
194|- 🏗️ **插件 SDK** — 头文件 + CMake 模板 + 注册宏,5 分钟上手
|
|
||||||
195|- 🔒 **安全分级** — L0 内置 → L1 签名 → L2 社区 → L3 沙箱
|
|
||||||
196|
|
|
||||||
197|## 许可证
|
|
||||||
198|
|
|
||||||
199|Apache License 2.0 — 详见 [LICENSE](LICENSE)
|
|
||||||
200|
|
|
||||||
|
|||||||
Reference in New Issue
Block a user