Skip to the content.

快速开始

1. 装

pip install "swforge[mcp,pdf]"

可选依赖:

附加项 装什么
[mcp] MCP 服务器(30 个工具),给 Claude / Cursor 这类智能体用
[pdf] PDF 导出与渲染验证
[dev] 开发用(pytest 等)

国内网络慢的话用镜像:

pip install "swforge[mcp,pdf]" --index-url https://pypi.tuna.tsinghua.edu.cn/simple

镜像同步有延迟,刚发版那几小时可能还没有。装不到就换官方源。


2. 先启动 SolidWorks

这一步必须手动做。 工具不会替你启动它——因为启动一个 CAD 是用户的决定, 工具擅自拉起一个几百 MB 的进程不合适。

启动后确认主窗口是可见的、没有卡在启动画面。


3. 自检

swforge selftest

这一步会花大约 1 分钟,在真实 SolidWorks 上建零件、出图、装装配。

九项全 PASS 才说明这台机器上功能完整。 有 FAIL 就把输出贴出来—— 每一项失败都对应一个具体的能力缺口,不是笼统的「跑不起来」。

只跑某一项:

swforge selftest --only interference

4. 建第一个零件

from swforge import PartBuilder

b = PartBuilder("测试.SLDPRT", material="Q235")
b.box("底板", 0, 160, 0, 20, 0, 100)
b.cylinder("孔", axis="y", x=80, y=20, z=50, r=8, h=20)
r = b.build()

print(f"成功 {r.ok}  实体 {r.bodies}  质量 {r.mass_kg:.3f} kg  体积 {r.volume_mm3:.0f} mm³")

尺寸单位一律 mm。

build() 返回值里最重要的三项:

字段 含义
ok 是否成功(不只是「没抛异常」)
bodies 从 SolidWorks 回读到的实体数
mass_kg / volume_mm3 从 SolidWorks 回读的质量和体积

5. 出工程图

from swforge import produce, add_dimensions

r = produce("测试.SLDPRT", "测试.SLDDRW", paper="A3")
# {'ok': True, 'views': 3, 'page': 'A3'}

d = add_dimensions("测试.SLDDRW", curated=True, internal=1)
# {'mode': 'curated', 'after': 9, ...}

curated=True(默认)只标总尺寸和几个最大跨度的内部特征尺寸,并跨视图去重。

想要旧的全量标注(会重叠):

add_dimensions("测试.SLDDRW", curated=False)

6. 装配与干涉

from swforge import AssemblyBuilder, MateBuilder, check_interference

ab = AssemblyBuilder("总装.SLDASM")
ab.add("底板.SLDPRT", x=0, y=0, z=0, fixed=True)
ab.add("立柱.SLDPRT", x=60, y=0, z=0)
ab.build()

# 同心配合:把第二个零件拉到第一个的轴线上
before = MateBuilder("总装.SLDASM").apply()
res = MateBuilder("总装.SLDASM").concentric(0, 1).apply()
print("配合前", before["component_boxes_center_mm"])
print("配合后", res["component_boxes_center_mm"])

# 干涉检查
print(check_interference("总装.SLDASM"))
# {'ok': True, 'interference_count': 1,
#  'interferences': [{'volume_mm3': 4000.0, 'components': ['a-1', 'b-1']}]}

干涉体积是本项目最有说服力的能力之一:给出的不只是「有干涉」, 而是精确体积和涉及哪两个零件。


7. 接智能体(可选)

MCP 配置见 README 的 MCP 一节。最短形式:

{
  "mcpServers": {
    "swforge": {
      "command": "python",
      "args": ["-m", "swforge.server"]
    }
  }
}

服务器会在握手时返回 17 行使用说明,Agent 不需要你额外教它。


常见问题

连不上 SolidWorks

swforge ping

看报错:

报错 原因 怎么办
MK_E_UNAVAILABLE SolidWorks 没启动,或启动了但没注册 手动启动 SW,等主窗口出现
连接成功但操作失败 同时有多个 SolidWorks 实例 关掉多余的,只留一个

多个实例是最常见的坑:Dispatch 找不到已注册实例时会自己新开一个, 于是有了两个,互相抢连接。用任务管理器确认只有一个 SLDWORKS.EXE。

中文乱码

控制台编码问题,设一下环境变量:

$env:PYTHONIOENCODING = "utf-8"
chcp 65001

文档名额不足

SolidWorks 默认只允许同时打开 8 个文档。

swforge resources          # 看当前几个
swforge resources --sweep  # 清理临时文档