前几天看到有到大佬使用WorkBuddy+FreeCad进行AI建模。然后偶然又看到一个新出来的AI开发的建模软件SolidCraft。随后就在WorkBuddy中尝试给安信可UNO-ET485板子给建模一个外壳。
从建模软件的安装,建模软件MCP的安装全程都在WorkBuddy中提示进行。相当于全程指挥一个小弟干活。
AI:WorkBuddy(Agent 模式)|几何内核:SolidCraft v0.18.1|模型:AiPi-UNO-ET485

1、SolidCraft
SolidCraft 是一个跑在本地的参数化三维内核(OCCT),同样把建模能力全部暴露成命令:画方块、开孔、倒圆角,本质上都是一条命令。
solid.box length=58.02 width=73.26 height=9.40 corner=[-2.34,-2.34,-4.40] solid.cylinder diameter=2.40 height=3.10 base=[2.54,15.24,-2.90] operation=cut solid.fillet edges=[[-2.34,-2.34,0.3],...] radius=3.5
它比 FreeCAD 更适合丢给 AI 的地方在于:每次操作都有返回值、体积和拓扑报告,AI 能自己判断这一步到底做成了没有,而不是"看起来做了"。
2、SolidCraft MCP
MCP 是 AI 和内核之间的连接器,把上面这些命令封装成 16 个工具:建模(execute)、文档(open/save/export)、检查(measure/body_topology/inspect)、出图(screenshot,支持剖切和爆炸)。
安装两步:
① 拿到 solidcraft-cli.exe(v0.18.1),放进固定目录。
② 交由 WorkBuddy 写 mcp.json,写完去连接器里手动信任一次:
{
"mcpServers": {
"solidcraft": {
"command": "...\\solidcraft-cli.exe",
"args": ["mcp",
"--allow-path", "C:\\Users\\lx\\Documents\\SolidCraft",
"--allow-path", "C:\\Users\\lx\\Downloads"]
}
}
}注意 --allow-path:它只认显式列出来的目录,不列就拒绝读写,报错还很像"文件不存在"。这一条卡了我一会儿。
3、我给WorkBuddy说了什么提示词
整个过程我没画过一根线,只发了 8 句话。原话如下:
| 1 | "把 solidcraft 的 mcp 安装进来" | 装 v0.18.1、写配置、跑通 16 个工具 |
| 2 | "给 3D_AiPi-UNO-ET485.step 这个电路板做一个外壳,保留 typec 接口和 rk45 接口,上下两个外壳安装,电路板上有两个螺丝孔用来固定" | 解析 309 个体,反求板轮廓、孔位、接口包络,出两件壳初稿 |
| 3 | "rj45 接口和外壳之间仅保留 0.1mm 的装配公差,typec 也是,另外壳体边缘都用圆角" | 窗口收到 16.40×11.60 / 9.14×3.36,立角 R3.5、沿口 R1.2 |
| 4 | "typec 口也要和 rj45 一样和外壳贴合" | 发现 Type-C 端面比 RJ45 靠后 1.23,加 1.2 深沉台,可见深度 1.508 → 0.308 |
| 5 | "模型上看着有一些毛刺,修复一下" | 查出是 STEP 里 188 个零体积片体,不在壳体上;工程 33 MB → 237 KB |
| 6 | "typeC 口要圆角处理" | 从 STEP 解出连接器四角 R1.0,窗口改 R1.1,四边仍是 0.100 |
| 7 | "螺丝使用 M2*8 圆头,修改模型适配" | 算出 8 < 12.1(从顶部够不着),把装配方向翻转成底部装入,牙合 4.1 |
| 8 | "装配图有吗" | 出爆炸图、剖面图、螺柱近景 |
(第 2 条我打错成 "rk45",它没纠正,直接按 RJ45 做了。)
为什么这些话都很短? 因为它们给的是约束,不是操作:
约束:"0.1 的装配公差"、"边缘都要圆角"、"和 RJ45 一样贴合"、"M2×8 圆头";
操作:"先画 58×73 的方块,再掏内腔,然后倒角……"——这些它自己会排,说多了反而添乱。
真正决定成品能不能用的,是那句"仅保留 0.1mm"和"要贴合"。约束写清楚,操作交给它。
4、从 STEP 到两件壳
喂资料:、手上直接有这块板的 3D STEP,309 个体、33 MB,板子、连接器、每个元件都在里面。丢给它,让它先建初稿。
给数据:板子多大、孔在哪、连接器伸出多少,全得从 STEP 里量,不许估。
309 个 body 逐个算包围盒,按体积比排序,找出 PCB 本体(53.31 × 68.55 × 1.0)和两个 ⌀2.85 的螺丝孔;
接口开窗不用包围盒,而是取连接器在壁厚区间内的所有边端点(RJ45 取了 802 个、Type-C 112 个)求极值 —— 那才是真正"穿墙"的一段。
修改:时间全花在这,六个坑都是真踩的。
M3 装不进去:板孔只有 ⌀2.85,只能过 M2.5。按"常见规格"套,直接报废一版。
内腔圆角啃板角:板子下两角是 R0.99 圆弧,内腔给 R1.2 时最深侵入 0.44,板塞不进去。改 R0.3,最小净空 +0.184。
"毛刺"不在壳体上:188 个零体积片体 + 8 个薄片(覆铜、丝印、焊盘),渲染出来像一层毛。删不掉(中文体名过 MCP 会坏),最后只导出两个壳体另存。
Type-C 不是方口:四角 R1.0,窗口按"外偏 0.1"取 R1.1,直边不动、半径 +0.1,四角四边处处 0.1,是同形而不是勉强包住。
布尔留下空腔:沉孔与底面共面时留下封口面,shells=3(内部藏了两个封闭空腔,切片软件直接报错)。修法一句话:刀具两端各穿出 0.1。
M2×8 从顶部够不着:头下杆长只有 8,而顶壳沉孔底到板面要走 9(立柱)+1(板)+牙合 ≈ 12.1。于是把方向翻过来,螺丝从底壳底部装入,头埋进 ⌀4.0 沉孔,牙做在顶壳立柱上。

验收:不是看图,是让它自查——每次改完跑同一套:
| 拓扑 | shells = 1 | 底 52 面 / 顶 48 面,均 1 |
| 实体性 | STL 非流形边 = 0 | 5012 / 5314 三角,均 0,水密 |
| 体积 | STL 与内核差 < 0.1% | 差 0.05% |
| 特征反查 | 孔的 z/r 区间对得上 | 底壳孔 z −4.400..0,r 1.200..2.000,孔口无封口面 |
四条全过才导出 STL。渲染图只用来发现"哪里看着怪",从不拿来验收——那个"毛刺"就是最好的反例。
5、结果

打印完把板子放进去,两颗 M2×8 从底下拧紧,RJ45 和 Type-C 正好贴住窗口,缝隙 0.1;Type-C 的 1.2 深沉台让两个口观感也一致了。
| 外形 | 58.02 × 73.26 × 17.20 |
| 分型面 | Z = 5.00 |
| 壁厚 / 板厚 | 2.00 / 1.20 |
| 板边净空 | 0.353 每边 |
| 圆角 | 立角 R3.5 / 沿口 R1.2 / 内腔角 R0.3 |
有 0.1 公差插不进去的,把脚本里的 G = 0.1 改成 0.15~0.2 重跑即可,其余参数不动。
我要赚赏金
