Skip to the content.

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 已支持
爆炸视图 装配说明做不了
钣金 / 焊件 / 齿轮 这三个专题完全没做
BOM 表定位 ✅ 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