AI 机械 CAD 工作室 - 项目总结
6 min read214 字项目
分享:
一、项目概述
这次做了一个 AI 驱动的生成式机械设计平台。用户输入自然语言描述(比如"做一个轻量化NEMA17电机支架,适配M4螺丝"),系统会自动解析设计意图、生成多个设计方案、进行工程约束检查,最后输出可制造的 3D 模型。
从最初的"CAD 参数化生成工具"升级为"生成式机械设计工作站",核心变化是引入了工程智能层。
技术栈:
- 前端:Next.js 14 + Three.js + TailwindCSS(工业暗色主题)
- 后端:Python FastAPI + build123d(CAD 建模)+ SQLAlchemy(数据存储)
- 部署:后端通过 Cloudflare 隧道对外服务,前端静态导出由 FastAPI 托管
- 域名:cad.myonlyheart.xyz
二、核心模块
1. 工程约束检查引擎(Constraint Engine)
在生成 CAD 模型之前,先检查参数是否满足制造约束:
- FDM 3D 打印检查:壁厚(最小 1.2mm)、孔径(最小 2.0mm)、悬垂角度(最大 45 度)
- 标准件验证:公制螺栓通孔(M2-M8)、NEMA 电机安装孔(NEMA17/23/34)、轴承配合(608/625/6001)
- 几何封闭性检查
关键设计:每个检查失败时会返回可修复标记,系统自动修正参数(比如壁厚不够就自动加厚)。
API:POST /api/v1/constraint/check
2. 设计空间生成器(Design Space Generator)
给定一个零件类型和基本需求,自动生成多个设计方案供用户对比:
- 支持的变体策略:支架类 4 种(标准/轻量化/加强/薄壁)、电机座 4 种、齿轮 3 种
- 每个方案附带性能估算:重量等级、强度等级、打印时间
- 自动成本估算:基于材料密度和体积,计算材料费和电费
- 推荐机制:根据用户优先级(轻量化/刚性/易打印/低成本)自动推荐最优方案
API:POST /api/v1/design/generate
3. 自动装配引擎(Assembly Engine)
将多个零件按约束关系自动组装:
- 对齐求解:孔对孔、轴中心对齐、Z 轴对齐
- 装配约束:固定连接、插入配合、滑动配合、间隙配合
- 约束循环检测
- 自动生成 build123d 装配代码
API:POST /api/v1/assembly/build
4. LLM 设计理解层
自然语言到工程设计意图的解析:
- 设计意图解析:从"轻量化电机支架,适配M4螺丝"中提取零件类型、约束条件、优先级
- 关键词映射:载荷等级(light/medium/heavy)、材料(PLA/ABS/PETG/TPU/Nylon)、优先级(lightweight/rigid/printable/fast_print/low_cost)
- 支持规格识别:螺栓规格(M2-M8)、电机类型(NEMA17/23/34)、轴承型号(608/625/6001)
核心接口:POST /api/v1/generate-variants(一站式:自然语言 → 多方案)
三、前端升级
方案对比组件(VariantSelector)
- 卡片式展示多个设计方案,带性能指标(重量/强度/打印时间,颜色编码)
- "推荐"和"需修复"标记
- 点击选择方案后自动生成对应 STL
- 底部成本对比表
设计分析面板(AnalysisPanel)
- 设计意图摘要:解析出的零件类型、约束条件、优先级排序
- 约束检查总览:通过/失败状态
- 问题详情列表:严重级别、是否可自动修复
- 自动修复记录和剩余需手动处理的问题
四、完整数据流
用户输入自然语言 → LLM 设计理解层解析意图 → 设计空间生成器生成 4 个方案 → 约束检查引擎验证每个方案 → 成本估算器计算对比数据 → 前端展示方案选择器 + 分析面板 → 用户选择方案 → build123d 生成 CAD 模型 → 导出 STL/STEP → 3D 预览
五、部署变更
从 Vercel + Railway 迁移到本地 + Cloudflare 隧道:
- 后端运行在本地 Windows 机器,通过 uvicorn 提供服务
- 前端改为静态导出(Next.js output: 'export'),由 FastAPI 直接托管
- 单一入口:所有请求通过 cad.myonlyheart.xyz 进入,FastAPI 同时提供 API 和静态页面
- 隧道配置:在现有 Cloudflare 命名隧道中添加 cad.myonlyheart.xyz → localhost:8000 路由
- 启动脚本:start_cad.bat 一键启动
六、访问方式
本地:http://localhost:8000 公网:https://cad.myonlyheart.xyz API 文档:http://localhost:8000/docs