
当 AI 开始进入 CAD,最难的部分从来不是"画出一个看起来像零件的形状",而是把意图稳定地变成可保存、可导出、可重开、可审查、可制造的工程文件。
这正是我开源 SolidWorks Automation Skill 的原因。
项目地址:https://github.com/wzyn20051216/solidworks-automation-skill
截至本文发布前,项目已获得 952 Stars、92 Forks。但比数字更重要的是:它正在尝试回答一个更具体的问题------如何让 AI 不只是"会谈 CAD",而是真正进入本地工程软件,完成建模、出图、导出和复核。
一、为什么要做这个项目
今天很多 AI + CAD 演示遵循同一条路径:
- 用户输入一句自然语言;
- 大模型生成一段宏或脚本;
- 软件里出现一个模型;
- 演示结束。
这很有视觉冲击力,却离工程交付还有很长的距离。
真实的机械设计任务,还要继续追问:
- 单位是否正确?SolidWorks API 的长度单位是米,需求往往以毫米表达;
- 草图是否闭合,特征是否真正重建成功?
- 选边、选面能否跨语言版本稳定工作?
- 螺纹孔是"看起来像孔",还是可回读的真实 Thread?
- 工程图有没有漏标、尺寸碰撞和图框侵入?
- STEP、PDF、DXF、SLDPRT、SLDDRW 是否真的生成并能重新打开?
- 自动化结果失败时,是继续"假装成功",还是明确阻断并给出证据?
所以,这个项目的目标不是做一个更花哨的宏生成器,而是建立一条有能力边界、有证据链、有复核门禁的 CAD 自动化流水线。

CAD Studio 桌面端:建模、开孔、图纸、检查与导出被放进同一个本地工作台。
二、它不是单一脚本,而是四层协同系统
SolidWorks Automation Skill 同时提供三种平级入口:
| 入口 | 适合谁 | 价值 |
|---|---|---|
| Skill | 使用支持 skills 的 AI 客户端 | 让代理获得结构化的 SolidWorks 工作流与规则 |
| MCP Server | Codex、Claude Code、Cursor、Windsurf 等 | 把本地 CAD 能力暴露成可调用工具 |
| CLI / Python API | 自动化开发者、测试与 CI 场景 | 直接编排建模、导出、诊断和审查 |
| CAD Studio | 更偏好图形界面的工程用户 | 管理项目、任务、预览、复核和交付 |
它们并不是四套互相割裂的实现,而是共用同一组能力定义、脚本、证据格式和审查逻辑。
整体链路可以概括为:
text
自然语言需求
↓
VibeCAD 参数化规划与约束检查
↓
能力路由(Python / C# PIA / Add-in / OCCT / 外部求解器)
↓
SolidWorks 原生建模或开放格式后端
↓
保存、导出、重开、B-Rep / FeatureData 回读
↓
多视角预览 + JSON 证据 + 工程师最终复核
这里最关键的设计,不是"大模型能生成多少代码",而是每一步是否有明确输入、输出和失败语义。
三、核心原则:能力清单必须比宣传文案更诚实
仓库根目录的 capabilities.yaml 是唯一能力真源。
一个能力只有在指定 SolidWorks 版本、指定工作流和指定证据条件下完成回归,才会被标记为已验证。尚未完成真机回归的能力,不会被包装成"已支持的无人值守交付"。
当前项目采用了类似下面的分级:
- verified / stable:已有稳定真机证据,可进入常规工作流;
- pilot:已完成受控案例,但仍要求人工复核;
- experimental:用于探索或规划,不能直接等同于生产能力;
- blocked:缺少许可证、后端、接口稳定性或回归证据时明确阻断。
这套机制看似克制,却是 AI 工程工具能否被信任的基础。
对工程软件而言,"不知道"并不可怕;真正危险的是把"可能成功"报告成"已经交付"。
四、已经覆盖了哪些能力
项目目前覆盖的主干能力包括:
1. 零件与特征建模
- 草图、拉伸、旋转、圆角、倒角、阵列;
- 真实攻丝语义的 M3 / M4 / M5 / M6 / M8 螺纹孔;
- CNC 安装座中的语义选边、可变半径、Full Round、Setback、G2 组合;
- 参数驱动的标准渐开线直齿轮实体;
- 配置创建、切换、尺寸与属性管理。
2. 装配体与运动
- 组件插入、固定与常用 Mate;
- 干涉检查、爆炸视图;
- Motion Study 与恒速旋转马达;
- Pack and Go 基础回归与引用清单。
3. 工程图与交付
- 第一角投影、三视图、等轴测图、剖视图;
- 尺寸链、孔表、BOM;
- SLDPRT、SLDASM、SLDDRW、STEP、STL、IGES、PDF、DXF 等导出;
- 使用 PyMuPDF 检查 PDF 中真实的文字边界和明显重叠。
4. 开放格式与高级能力
- 无 SolidWorks 环境下,通过 OCCT / OCP 写入 STEP、IGES、BREP、STL、OBJ、GLB;
- DXF、SVG、PDF、PNG 的二维无头输出;
- CalculiX 线性静力、受限非线性、面接触与网格收敛序列;
- 受控的曲面 Loft、Sweep、Knit、Thicken;
- 钣金、焊件、Routing、DFM 等试点工作流。

桌面端不仅展示结果,也显式呈现参数、检查状态和复核门禁。
五、一个有代表性的真机案例:复杂测试件工程图
仓库中的复杂工程图案例并非概念动画。
solidworks-engineering-drawing 子技能在 SolidWorks 2026 SP01.1 中读取 NIST 公共领域复杂测试件,核对 141.421 × 141.421 × 17 mm 包围盒,并生成:
- 原生
SLDPRT; - 原生
SLDDRW; - 可交付
PDF; evidence/review JSON结构化证据。
工程图包含标准视图、等轴测图、A-A 剖视和 10 个必需尺寸。当前相关定向测试为 70 项通过,实验产物的 PDF 可提取文字边界为 0 重叠。

从原生零件到工程图、PDF 与结构化审查证据,所有环节都保留可复核产物。
需要强调的是:工程图能力当前仍属于 pilot。自动检查可以发现缺失输出和明显碰撞,但图框、尺寸链、孔表和制造语义仍要求工程师最终目视确认。
这不是"能力不足的免责声明",而是工程自动化应有的责任边界。
六、最快的接入方式
方式 A:作为 Skill 安装
bash
npx github:wzyn20051216/solidworks-automation-skill
如果客户端支持直接导入 Skill,也可以使用:
bash
claude skill add https://github.com/wzyn20051216/solidworks-automation-skill
方式 B:通过 Smithery 安装 MCP
bash
npm install -g @smithery/cli
smithery mcp add wzyn20051216/solidworks-automation-skill --client codex --config '{}'
安装后建议先执行健康检查:
text
solidworks_health_check
方式 C:手动克隆
bash
git clone https://github.com/wzyn20051216/solidworks-automation-skill.git
cd solidworks-automation-skill
python -m pip install -r requirements.txt
python scripts/cad_studio.py doctor
不要一开始就安装所有可选依赖。先根据任务运行 doctor,再按 remediations 补齐 SolidWorks、AutoCAD、OCP、CalculiX 或网格转换环境,维护成本会低很多。
七、最小 Python 示例
下面这段代码会连接 SolidWorks,新建零件,在前视基准面画一个矩形并拉伸 10 mm:
python
import sys
sys.path.insert(0, r"./scripts")
from sw_preflight import run_preflight
from sw_connect import connect_solidworks, mm, new_document
from sw_part import start_sketch, sketch_rectangle, end_sketch, extrude_boss
run_preflight()
sw, _ = connect_solidworks()
model = new_document(sw, "part")
start_sketch(model, "Front Plane")
sketch_rectangle(model, 0, 0, mm(50), mm(30))
sketch_name = end_sketch(model)
extrude_boss(model, sketch_name, mm(10))
print("零件创建完成")
mm() 并不是装饰函数。SolidWorks API 以米作为基本长度单位,把毫米需求显式转换,是避免"模型生成了,但缩放错了 1000 倍"的第一道防线。
八、自然语言真正应该驱动什么
安装完成后,用户可以给代理这样的任务:
text
用 SolidWorks 新建一个 120 × 80 × 10 mm 的安装板,
四角各打一个 φ6 通孔,孔中心距两侧边均为 10 mm;
保存为 plate.sldprt,导出 STEP,
并生成四视图预览和 review_report.json。
一个可靠代理不应立刻"凭感觉开画",而应依次完成:
- 解析尺寸、基准和制造语义;
- 检查环境、版本和目标格式;
- 选择已验证的建模路径;
- 创建、重建并保存原生文件;
- 导出中性格式;
- 回读包围盒、特征或 B-Rep;
- 生成多视角预览和审查报告;
- 对无法自动确认的项目保留人工门禁。
这也是 VibeCAD 子技能存在的意义:让"自然语言"先变成一份可检查的参数化设计计划,再变成软件动作。

项目从"能运行的自动化脚本"逐步走向"可管理、可复核、可交付的本地工程工作台"。
九、项目适合哪些人
如果你属于下面几类用户,这个项目可能值得关注:
- 希望用 Python / C# 自动化 SolidWorks 的机械工程师;
- 正在开发 CAD Agent、工业 Copilot 或本地 MCP 工具的 AI 工程师;
- 需要批量建模、批量导出、工程图生成与自动复核的团队;
- 希望研究"AI 如何进入真实桌面工程软件"的开发者;
- 想为中文机械设计工作流补齐 GB/T 图纸、孔表、尺寸链与制造审查的人。
当然,它并不适合把 AI 输出直接当作安全认证结论。涉及承载、疲劳、接触、材料失效、模具与 Class-A 曲面时,仍应由具备资质的工程师完成最终判断。
十、开源意味着一起把边界做实
SolidWorks Automation Skill 采用 MIT License。
我更希望它成为一个可被验证、被质疑、被扩展的工程自动化底座,而不是一次性的演示项目。欢迎大家:
- Star 项目,关注后续真机回归;
- 提交 Issue,报告具体版本、语言环境和复现步骤;
- 贡献新的稳定 API 封装、测试件和审查规则;
- 一起完善钣金、焊件、工程图、装配、FEA 与开放格式后端。
GitHub:https://github.com/wzyn20051216/solidworks-automation-skill
如果你也在做 SolidWorks 自动化、AI CAD、MCP 或智能制造,欢迎在评论区交流你的真实场景。工程自动化的下一步,不是让 AI "画得更像",而是让每一次生成都有依据、有产物、有边界、有责任人。