swforge v1.4.1 功能清单
用 Python / 命令行 / MCP 驱动本机 SolidWorks 建模、配国标材质、装配配合、查干涉、出 GB 工程图 —— 每一步都回读验证
实测环境:SolidWorks 2025 SP5.0 · Windows · Python 3.10+ v1.4 新增尺寸公差与粗糙度;238 项离线测试、13 项实机自检,详见 标注用法与验收
pip install swforge
一句话
不确定结果对不对的自动化,不算自动化。
同类工具普遍是「调用没报错就算成功」。swforge 是每一步都把结果读回来核对:
- 建完读实体数和体积
- 赋完材质读密度
- 加完配合读位置有没有变
- 出完图读尺寸值对不对
- 查完干涉读精确体积和涉及零件
一、建模
| 功能 | 状态 | 说明 |
|---|---|---|
| 长方体 / 板 | ✅ | box / plate |
| 管(X/Y/Z 三向) | ✅ | tube_x / tube_y / tube_z,可设壁厚 |
| 圆柱(三轴可选) | ✅ | cylinder |
| 旋转体 | ✅ | revolve |
| 圆角 / 倒角 | ✅ | fillet / chamfer |
| 按 JSON 描述建零件 | ✅ | swforge build spec.json,不写代码也能建 |
| 分色 + 回读验证 | ✅ | apply_colors / read_colors |
回读实测:建 100×20×50 的板 → 回读体积 100000.0 mm³(理论 100000),偏差 0.000%
二、材质(同类项目都没有)
| 功能 | 状态 | 说明 |
|---|---|---|
| 20 个 GB 国标牌号 | ✅ | 见下表 |
| 自动生成 SW 材质库 | ✅ | swforge materials |
| 密度回读验证 | ✅ | 用质量/体积反算 |
内置牌号:
Q235 Q355 45 40Cr 20CrMnTi 65Mn GCr15 Cr12MoV
HT200 QT500-7 06Cr19Ni10 022Cr17Ni12Mo2
6061-T6 7075-T6 2A12 ZL104 ZCuSn10P1 H62 ...
⚠️ 一个真实存在的坑:SolidWorks 默认密度是 1000 kg/m³(水的密度)。 不赋材质时它不报错,但质量会错 7.85 倍。 swforge 赋完材质会用 mass/volume 反算密度,实测 7850 kg/m³。
三、装配与配合
| 功能 | 状态 | 说明 |
|---|---|---|
| 加组件 / 定位 / 固定 | ✅ | mm → m 自动换算 |
重合配合 coincident |
✅ | 简单件自动路径;显式路径支持明确平面 |
| 显式配合选面 | ✅ | 持久面引用、局部/装配坐标、原生实体身份、轴距/平面间距回读 |
同心配合 concentric |
⚠️ | 复杂零件上自动选面不可靠 |
| 读配合明细 | ✅ |
⚠️ 已知限制:支架(Ø16 孔)配销(Ø15.6)时,
concentric把销放到 x=0 而不是孔所在的 x=80,产生 2 处假干涉。已记录在docs/issue-log.md。
四、干涉检查 ⭐ 最强项
| 功能 | 状态 | 说明 |
|---|---|---|
| 单零件多实体干涉 | ✅ | body_interference |
| 装配体干涉 | ✅ | check_interference |
| 精确干涉体积 | ✅ | 不是「有/没有」 |
| 指出涉及哪两个零件 | ✅ |
实测:两块 20mm 立方沿 X 重叠 10mm
理论值 10 × 20 × 20 = 4000 mm³
实测 4000.000 mm³ 偏差 0.00%
输出 {'volume_mm3': 4000.0, 'components': ['A-1', 'B-1']}
修掉了一个隐蔽 bug:
GetInterferences在 pywin32 下是属性不是方法, 调用抛的异常被吞掉,导致「计数 1、明细空」持续存在——调用方知道有干涉, 但不知道是哪两个零件。
五、工程图
| 功能 | 状态 | 说明 |
|---|---|---|
| 三视图 + GB 图框 + 标题栏 | ✅ | A3 / A4 |
| 受控尺寸标注(默认) | ✅ | 9 个尺寸,跨视图去重,不重叠 |
| 全量标注(可选) | ⚠️ | 22 个,会重叠 —— 保留兼容 |
| 按视图朝向选标注轴 | ✅ | 修掉右视图标 114(应为 120)的错值 |
| 视图排版归一 | ✅ | normalize_layout |
| 出图后自动缩放至适合 | ✅ | 否则只显示半个图框 |
| PDF 导出 + 验证 | ✅ | |
| 粗糙度三种符号 | ✅ | 单个/批量;轮廓边原生附着、贴边/引线、随视图移动;坐标用米 |
| 尺寸公差 | ✅ | 对称/双向/极限/配合;偏差用毫米,名义值不变,拒绝歧义匹配 |
尺寸对比(同一个 20 特征支架):
SolidWorks 默认全量标注 22 个,全堆在一侧互相重叠,图不可用
swforge 受控标注 9 个,无重叠,值全部正确
六、批量与自动化
| 功能 | 状态 | 实测 |
|---|---|---|
| 一个文件夹 → 一批工程图 | ✅ | 5 个零件 15.7 秒,5/5 成功 |
| PDF 图集拼接 | ✅ | atlas |
| 垃圾体 / 碎片清理 | ✅ | purge |
七、资源管理
| 功能 | 状态 | 说明 |
|---|---|---|
| 文档数监控 | ✅ | SolidWorks 硬上限 8 个 |
安全清扫 sweep_documents |
✅ | |
| 三档资源守卫 | ✅ | ok / warn / critical |
八、BOM 明细表 ⚠️ 部分完成
| 功能 | 状态 | 说明 |
|---|---|---|
| 读明细(合并计数 + 读材料) | ✅ | 底板×1 + 垫片×3 → 2 种 4 件 |
| CSV 导出 | ✅ | 带 UTF-8 BOM,Excel 不乱码 |
| 尊重「从明细表排除」 | ✅ | |
| 插 BOM 表到工程图 | ⚠️ | 能建 3×3 表,但位置不可控 |
实测输出:
种类 2 项,共计 4 件
1. 垫片 x3 [Q235]
2. 底板 x1 [Q235]
缺材料:[]
⚠️ 插表位置问题:
TableAnnotation.GetPosition在 pywin32 下取不到, 位置既读不了也改不了,需要 C# 早期绑定。数据部分不受影响,可正常使用。
九、自检与诊断 ⭐ 独有
| 功能 | 状态 | 实测 |
|---|---|---|
swforge selftest(13 项实机自检) |
✅ | 13项,结果见实机验收报告 |
capabilities --api(28 项 API 反射探测) |
✅ | 0.43 秒 |
| 连接探针 | ✅ | |
| 文档包络测量 | ✅ | |
| 活动文档守卫(多客户端并发) | ✅ | 被抢走后能检测并抢回 |
自检 13 项:
[PASS] 连接与版本 SolidWorks 33.5.0,往返 1 ms
[PASS] 文档切换后真正激活 3 次切换全部正确(每次都回读标题)
[PASS] 资源守卫与清扫 峰值 3/8,清扫后 0
[PASS] 几何回读准确 体积 100000.0 mm³,偏差 0.000%
[PASS] 材质真的赋上 密度反算 7850 kg/m³(Q235 标准 7850)
[PASS] 干涉体积精确 4000.0 mm³(理论 4000),偏差 0.00%
[PASS] 配合真正加成功 X=[60.0, 0.0] → [0.0, 0.0]
[PASS] 出图与尺寸值正确 6 个尺寸 [20.0, 100.0, 160.0]
[PASS] 活动文档守卫 被切到 'st_cc_b' 后检测到并抢回
[PASS] API 反射探测 28 项,可用 28 项
⭐ 其他 6 个同类项目都没有这个功能。 而且它能回答一个别人回答不了的问题:「换一台机器,这些功能还能用吗?」 换个 SolidWorks 版本、换台电脑,跑一次
selftest就知道。
十、三种调用方式
| 方式 | 数量 | 用途 |
|---|---|---|
| CLI 子命令 | 14 个 | 命令行 / 脚本 / 批处理 |
| MCP 工具 | 22 个 | Claude Desktop / Cursor / Cline / Codex / Windsurf / DSH |
| Python API | 52 个导出 | 写自己的程序 |
MCP 已用官方客户端实测握手通过(协议 2025-11-25)。
服务器会返回 17 行 instructions 教 Agent 怎么用,不需要你额外教它。
十一、明确没做的
| 缺什么 | 影响 |
|---|---|
| 形位公差 / 完整工艺审核 | 未支持形位公差;图纸仍需工程审核 |
| ✅ v1.2 已支持 | |
| 爆炸视图 | 装配说明做不了 |
| 钣金 / 焊件 / 齿轮 | 这三个专题完全没做 |
| ✅ v1.2 已解决(靠锚点 + 正确幅面模板) | |
| 复杂零件配合选面 | 见第三节 |
| SolidWorks 版本兼容 | 只测过 2025 SP5.0 |
十二、安装与验证
pip install "swforge[mcp,pdf]"
前提:Windows + SolidWorks(手动启动好)+ Python 3.10+
装完先跑这个,它会告诉你这台机器上哪些能力真的可用:
swforge selftest
十三项检查在真实 SolidWorks 上跑,耗时见报告。 失败时会指出是哪一环、对应同类项目的哪个已知问题,不是笼统的「失败」。
一句话总结
能做:建模 → 国标材质 → 装配 → 精确干涉 → GB 工程图 → 批量出图 → BOM 数据, 每一步都有回读验证。
不能做:形位公差、钣金焊件齿轮、免审核直接投产。
验证能力:13 项实机自检 + 精确干涉体积 + GB 材质库。
仓库:https://github.com/mwdandoms/swforge PyPI:https://pypi.org/project/swforge/ 文档站:https://mwdandoms.github.io/swforge/ 许可:MIT