> GitHub:https://github.com/tableli/LzzCad
> 技术栈:Qt 5.14 + OpenCASCADE + DeepSeek API
> 版本:v0.2
概述
LzzCad 是一款基于 Qt 和 OpenCASCADE 开发的开源 CAD/CAM 软件,旨在提供轻量级、易于使用的 3D 建模解决方案。项目融合了 AI 技术,支持自然语言交互,降低学习门槛。
功能亮点
-
✅ 交互式 2D 草图绘制
-
✅ 3D 基本体建模(Box/Sphere/Cylinder/Cone)
-
✅ 特征操作(Extrude/Revolve/Sweep)
-
✅ AI 自然语言命令交互
-
✅ 完整的视图控制(六面视图、ViewCube)
-
✅ 属性面板(颜色修改、变换操作)
-
✅ 模型树管理(可见性切换)
-
✅ 命令模式实现 Undo/Redo
技术架构
MVVM 架构设计
项目采用经典的 MVVM 架构,确保代码的可维护性和扩展性:
┌─────────────┐ ┌───────────────┐ ┌─────────────┐
│ View │ │ ViewModel │ │ Model │
│ OccView │─────▶│ OccViewModel │─────▶│GeometryModel│
│ LzzCad │◀─────│ │◀─────│ │
│(UI层) │ │ (业务逻辑层) │ │ (数据层) │
└─────────────┘ └───────────────┘ └─────────────┘
-
**View 层**:负责 UI 渲染和用户交互
-
**ViewModel 层**:处理业务逻辑,转发信号
-
**Model 层**:管理几何数据和形状对象
核心技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| Qt | 5.14.2 | GUI 框架、信号槽机制 |
| OpenCASCADE | 7.5.0 | 3D 几何建模内核 |
| DeepSeek API | - | AI 命令解析 |
| C++ | 17 | 主要开发语言 |
项目目录结构
LzzCad/
├── View/ # 视图层
│ ├── OccView.h/cpp # OCC 视图组件
│ ├── PropertyPanel.h/cpp # 属性面板
│ └── ModelTree.h/cpp # 模型树
├── ViewModel/ # 视图模型层
│ └── OccViewModel.h/cpp # 业务逻辑
├── Model/ # 数据模型层
│ └── GeometryModel.h/cpp # 几何数据管理
├── Command/ # 命令模式
│ └── Command.h/cpp # 命令基类
├── image/ # 图标资源
│ └── ribbon/ # Ribbon 按钮图标
├── LzzCad.h/cpp # 主窗口
└── LzzCad.pro # Qt 工程文件
功能模块
1. 草图绘制
支持基本的 2D 图形绘制:
-
**点(Point)**:单击鼠标创建红色点标记
-
**线(Line)**:两点确定一条蓝色直线
-
**圆(Circle)**:中心 + 半径创建紫色圆
-
**圆弧(Arc)**:三点确定一段橙色圆弧
**技术实现**:使用 OpenCASCADE 的 `GC_MakeArcOfCircle` 进行圆弧创建,确保方向正确。
2. 基本体建模
支持交互式创建 3D 基本体:
-
**Box**:选择对角点,输入高度
-
**Sphere**:选择中心点,输入半径
-
**Cylinder**:选择底面圆,输入高度
-
**Cone**:选择底面圆,输入高度和顶面半径
**交互流程**:
-
点击 Ribbon 按钮进入创建模式
-
鼠标拖拽确定尺寸
-
弹出对话框输入高度(支持负值向下拉伸)
-
生成实体并添加到模型树
3. 特征操作
3.1 拉伸(Extrude)
将 2D 草图沿 Z 轴方向拉伸生成 3D 实体:
**特色功能**:
-
支持 Face(实体)和 Wire(曲面)两种模式
-
自动检测草图是否闭合
-
支持正负高度值
3.2 旋转(Revolve)
将草图绕指定轴旋转生成回转体:
**特色功能**:
-
支持 X/Y/Z 轴选择
-
可设置旋转角度(0-360°)
-
圆绕 Y 轴旋转可生成圆环
3.3 扫掠(Sweep)
将截面轮廓沿路径扫掠生成实体:
**交互流程**:
-
点击"扫掠"按钮进入模式
-
选择截面轮廓
-
选择扫掠路径
-
生成扫掠实体
4. AI 助手
集成 DeepSeek API,实现自然语言交互:
-
**文件操作**:"打开 STEP 文件"、"保存模型"
-
**视图操作**:"显示前视图"、"放大视图"
-
**建模辅助**:"画一个圆"、"创建立方体"
**实现方式**:
-
用户输入自然语言命令
-
通过 DeepSeek API 解析意图
-
调用相应的功能函数执行操作
5. 视图控制
-
**六面视图**:Top/Bottom/Left/Right/Front/Back
-
**ViewCube**:3D 视角切换组件
-
**显示模式**:着色/线框/隐藏线
-
**Undo/Redo**:基于命令模式的撤销重做
6. 属性面板
-
**颜色修改**:点击颜色按钮选择模型颜色
-
**变换面板**:平移、旋转、缩放操作
-
**形状检查器**:显示选中对象的类型和参数
核心代码示例
草图绘制
```cpp
// 圆弧绘制核心代码
Handle(Geom_Circle) circle = GC_MakeCircle(startPoint, midPoint, endPoint).Value();
double startParam = circle->Parameter(startPoint);
double endParam = circle->Parameter(endPoint);
Handle(Geom_TrimmedCurve) arc = new Geom_TrimmedCurve(circle, startParam, endParam);
```
特征操作
```cpp
// 拉伸
BRepPrimAPI_MakePrism prism(wire, gp_Vec(0, 0, height));
TopoDS_Shape extrudedShape = prism.Shape();
// 旋转
BRepPrimAPI_MakeRevol revol(wire, axis, angle);
TopoDS_Shape revolvedShape = revol.Shape();
// 扫掠
BRepOffsetAPI_MakePipe pipe(path, profile);
TopoDS_Shape sweptShape = pipe.Shape();
```
命令模式
```cpp
class Command {
public:
virtual void execute() = 0;
virtual void undo() = 0;
bool m_executed = false;
};
开发路线图
Phase 1:基础完善
-
草图工具增强(约束、尺寸标注)
-
视图优化(渲染性能、阴影效果)
-
稳定性修复
Phase 2:高级建模
-
Loft 放样功能
-
布尔运算(Union/Difference/Intersection)
-
倒角和圆角
-
阵列和镜像
Phase 3:CAM 功能
-
刀具库管理
-
刀路生成(2.5D 铣削)
-
G 代码输出
-
刀路仿真
Phase 4:AI 增强
-
特征识别
-
智能刀路优化
-
本地模型支持
Phase 5:高级功能
-
装配设计
-
自由曲面建模
-
更多数据交换格式
快速开始
环境要求
-
Qt 5.14.2 或更高版本
-
OpenCASCADE 7.5.0 或更高版本
-
Visual Studio 2019 或更高版本
编译步骤
```bash
1. 克隆项目
git clone https://github.com/tableli/LzzCad.git
2. 打开 Qt Creator
3. 加载 LzzCad.pro 文件
4. 配置 OpenCASCADE 路径
5. 编译运行
使用指南
-
**草图模式**:点击 Ribbon 中的草图按钮(Point/Line/Circle/Arc)
-
**建模模式**:点击基本体按钮,按提示操作
-
**特征操作**:先绘制草图,再点击拉伸/旋转/扫掠按钮
-
**AI 交互**:在日志面板输入自然语言命令
-
**颜色修改**:选中模型,在属性面板点击颜色按钮
参与贡献
欢迎开发者参与贡献:
-
⭐ Star 项目:https://github.com/tableli/LzzCad
-
📧 联系作者:2521403134@qq.com
贡献指南
-
Fork 项目
-
创建功能分支:`git checkout -b feature/xxx`
-
提交代码:`git commit -m "feat: xxx"`
-
推送分支:`git push origin feature/xxx`
-
创建 Pull Request
许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。
**如果觉得这个项目对你有帮助,欢迎点赞、收藏、转发!**