Files
ViewDesignEngine/docs/dev-guide/README.md
T

107 lines
3.9 KiB
Markdown
Raw Normal View History

# ViewDesignEngine 开发者指南
欢迎来到 ViewDesignEngine (VDE) 开发者文档。本指南面向希望理解 VDE 内部架构、贡献代码或基于 VDE 构建应用的开发者。
## 文档导航
| 文档 | 说明 |
|------|------|
| [架构概览](architecture.md) | 模块依赖关系图、数据流、分层架构设计 |
| [API 总览](api-overview.md) | 公开 API 接口一览、命名空间规范、核心类型 |
| [构建指南](building.md) | 从源码构建、Docker 环境、CMake 选项、依赖管理 |
| [测试指南](testing.md) | 测试框架、编写测试、运行测试、覆盖率 |
| [贡献指南](contributing.md) | 代码规范、提交流程、Code Review、分支策略 |
| [插件系统设计](plugin-system.md) | 插件架构、生命周期、动态加载、清单文件 |
## 快速开始
```bash
# 克隆仓库
git clone ssh://git@localhost:22/hm/ViewDesignEngine.git
cd ViewDesignEngine
# Docker 构建(推荐)
docker run --rm -v $PWD:/ws vde-builder:latest bash -c \
"cd /ws && cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j\$(nproc)"
# 本地构建
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
# 运行测试
cd build && ctest --output-on-failure
```
## 项目结构
```
ViewDesignEngine/
├── CMakeLists.txt # 顶层 CMake
├── cmake/ # CMake 模块 (CompilerSettings 等)
├── include/vde/ # 公开头文件
│ ├── foundation/ # 基础数学、I/O、公差
│ ├── core/ # 几何核心、CAM
│ ├── curves/ # 曲线曲面
│ ├── mesh/ # 网格处理
│ ├── spatial/ # 空间索引
│ ├── boolean/ # 布尔运算
│ ├── collision/ # 碰撞检测
│ ├── brep/ # B-Rep 建模
│ ├── sdf/ # SDF 隐式建模
│ ├── sketch/ # 草图约束
│ └── plugin/ # 插件系统 (v6.0+)
├── src/ # 实现文件(按模块分目录)
├── tests/ # 单元测试
├── bench/ # 性能基准
├── examples/ # 示例程序
├── python/ # Python 绑定
└── docs/ # 文档
```
## 关键概念
### 命名空间
所有 VDE 代码位于 `vde::` 命名空间下,按模块分子命名空间:
```cpp
namespace vde::foundation { /* 基础设施 */ }
namespace vde::core { /* 几何核心 */ }
namespace vde::curves { /* 曲线曲面 */ }
namespace vde::mesh { /* 网格处理 */ }
namespace vde::spatial { /* 空间索引 */ }
namespace vde::boolean { /* 布尔运算 */ }
namespace vde::collision { /* 碰撞检测 */ }
namespace vde::brep { /* B-Rep 建模 */ }
namespace vde::sdf { /* SDF 隐式建模 */ }
namespace vde::sketch { /* 草图约束 */ }
namespace vde::plugin { /* 插件系统 */ }
```
### 依赖关系
- **L0 foundation**: 零上游依赖(仅 Eigen
- **L1 core**: 依赖 foundation
- **L2 curves**: 依赖 core
- **L3 mesh**: 依赖 core + brep
- **L4 spatial**: 依赖 core
- **L5 boolean/collision**: 依赖 L1-L4
- **brep**: 依赖 curves + mesh + collision
- **sdf**: 依赖 core + mesh
- **plugin**: 依赖 foundation(独立于其他模块)
### 设计原则
1. **零开销抽象** — 模板与编译期多态,避免不必要的虚函数
2. **数据驱动** — SoA 布局优化缓存命中率
3. **不可变优先** — 几何实体默认不可变,变换返回新实体
4. **RAII 资源管理** — 智能指针管理所有资源
5. **单一依赖** — 仅依赖 Eigen,不引入 Boost
## 相关文档
- [项目开发计划](../00-开发计划.md)
- [系统架构设计](../02-概要设计/01-系统架构设计.md)
- [CHANGELOG](../../CHANGELOG.md)
- [API 参考手册](../API-REFERENCE.md)