LzzCad:一款开源的 AI + CAD/CAM 软件

> 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**:选择底面圆,输入高度和顶面半径

**交互流程**:

  1. 点击 Ribbon 按钮进入创建模式

  2. 鼠标拖拽确定尺寸

  3. 弹出对话框输入高度(支持负值向下拉伸)

  4. 生成实体并添加到模型树

3. 特征操作

3.1 拉伸(Extrude)

将 2D 草图沿 Z 轴方向拉伸生成 3D 实体:

**特色功能**:

  • 支持 Face(实体)和 Wire(曲面)两种模式

  • 自动检测草图是否闭合

  • 支持正负高度值

3.2 旋转(Revolve)

将草图绕指定轴旋转生成回转体:

**特色功能**:

  • 支持 X/Y/Z 轴选择

  • 可设置旋转角度(0-360°)

  • 圆绕 Y 轴旋转可生成圆环

3.3 扫掠(Sweep)

将截面轮廓沿路径扫掠生成实体:

**交互流程**:

  1. 点击"扫掠"按钮进入模式

  2. 选择截面轮廓

  3. 选择扫掠路径

  4. 生成扫掠实体

4. AI 助手

集成 DeepSeek API,实现自然语言交互:

  • **文件操作**:"打开 STEP 文件"、"保存模型"

  • **视图操作**:"显示前视图"、"放大视图"

  • **建模辅助**:"画一个圆"、"创建立方体"

**实现方式**:

  1. 用户输入自然语言命令

  2. 通过 DeepSeek API 解析意图

  3. 调用相应的功能函数执行操作

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. 编译运行

使用指南

  1. **草图模式**:点击 Ribbon 中的草图按钮(Point/Line/Circle/Arc)

  2. **建模模式**:点击基本体按钮,按提示操作

  3. **特征操作**:先绘制草图,再点击拉伸/旋转/扫掠按钮

  4. **AI 交互**:在日志面板输入自然语言命令

  5. **颜色修改**:选中模型,在属性面板点击颜色按钮

参与贡献

欢迎开发者参与贡献:

贡献指南

  1. Fork 项目

  2. 创建功能分支:`git checkout -b feature/xxx`

  3. 提交代码:`git commit -m "feat: xxx"`

  4. 推送分支:`git push origin feature/xxx`

  5. 创建 Pull Request

许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。

**如果觉得这个项目对你有帮助,欢迎点赞、收藏、转发!**

相关推荐
rain_sxr17 小时前
浏览器跑大模型:WebGPU 端侧推理的加载、回退与性能工程
人工智能
薛定e的猫咪17 小时前
Codex全套科研技能汇总
人工智能·深度学习
码农学院18 小时前
跨平台AI搜索优化的统一策略与引擎差异适配方法
人工智能
赫文派18 小时前
K3 与 Kimi Code 实战:模型到终端 Agent
人工智能·ai编程
z123456777918 小时前
2026年企业AI办公工具深度评测:钉钉悟空平替横向选型指南
人工智能·钉钉
网易云信18 小时前
网易智企入选《2026人工智能发展白皮书》,帝王蟹引领“智能增效”场景
人工智能·agent
老兵发新帖18 小时前
Transformer最新小样本学习能力分析
人工智能
阿虎儿18 小时前
Dify Failed to invoke tool: Aborted: Maximum execution steps exceeded: 501 > 500
人工智能
后端小肥肠18 小时前
用它做的第一条视频自然流就是投流的 3 倍,我做了个抖音全栈运营 Skill
人工智能·aigc·agent