把自然语言变成可制造 CAD:开源 SolidWorks Automation Skill 的工程化实践

当 AI 开始进入 CAD,最难的部分从来不是"画出一个看起来像零件的形状",而是把意图稳定地变成可保存、可导出、可重开、可审查、可制造的工程文件。

这正是我开源 SolidWorks Automation Skill 的原因。

项目地址:https://github.com/wzyn20051216/solidworks-automation-skill

截至本文发布前,项目已获得 952 Stars、92 Forks。但比数字更重要的是:它正在尝试回答一个更具体的问题------如何让 AI 不只是"会谈 CAD",而是真正进入本地工程软件,完成建模、出图、导出和复核。


一、为什么要做这个项目

今天很多 AI + CAD 演示遵循同一条路径:

  1. 用户输入一句自然语言;
  2. 大模型生成一段宏或脚本;
  3. 软件里出现一个模型;
  4. 演示结束。

这很有视觉冲击力,却离工程交付还有很长的距离。

真实的机械设计任务,还要继续追问:

  • 单位是否正确?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。

一个可靠代理不应立刻"凭感觉开画",而应依次完成:

  1. 解析尺寸、基准和制造语义;
  2. 检查环境、版本和目标格式;
  3. 选择已验证的建模路径;
  4. 创建、重建并保存原生文件;
  5. 导出中性格式;
  6. 回读包围盒、特征或 B-Rep;
  7. 生成多视角预览和审查报告;
  8. 对无法自动确认的项目保留人工门禁。

这也是 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 "画得更像",而是让每一次生成都有依据、有产物、有边界、有责任人

相关推荐
广西生活网1 小时前
启元机器人接入腾讯 WorkBuddy 具身智能打通虚实服务新链路
人工智能
花花鱼1 小时前
SpringBoot + Vue3 解决HTML反转义导致JSON解析失败的方案
人工智能·ai
H0311169851 小时前
QuestMobile之外的数据分析平台信息整理:月狐数据、友盟+、GrowingIO
人工智能
桃西西呀1 小时前
Agent说做完了,其实什么都没改:静默失败原因拆解
人工智能·llm·agent
骑士雄师1 小时前
鉴权遗留问题
人工智能
政企项目老覃1 小时前
大模型 Agent 自主任务编排:电商客服地址解析从 12% 失败率到 2.1% 的落地复盘
人工智能·程序人生·算法
DQQzero1 小时前
豆包工作来了:AI办公三国杀的牌桌重组
人工智能·ai·大模型·办公