转载自公众号:敢敢AUTOHUB
0. 简介
这次在 Ubuntu 桌面上做了三个项目:Blender 天安门模型、KiCad STM32F405 CAN 控制板,以及 FreeCAD MID360 内嵌式护框和顶部十字拱架。三个软件都打开了真实窗口,保留了可编辑工程、终端控制入口和实际截图。下面按安装、提示词、操作与结果整理;提示词是多轮操作后归纳的复用版本,并不代表一次输入就能得到最终成品。
OpenAI 官方文档(https://developers.openai.com/api/docs/models/gpt-6-astra) 列出了 gpt-6-astra 的代码、计算机操作和 MCP 工具能力。具体 CAD 操作仍要接上软件插件或 API;本文使用 Codex 调用这些工具。
1. 安装环境
| 软件 | 本机实测版本与安装方式 | 控制接口 | 安装来源 |
|---|---|---|---|
| Blender | 3.0.1,项目目录内解包安装 | Blender MCP 1.9.1 | Blender(https://www.blender.org/download/) · blender-mcp(https://github.com/ahujasid/blender-mcp) |
| KiCad | 10.0.6,AppImage | 官方 IPC,Python 包 kicad-python 0.8.0 | KiCad Linux(https://www.kicad.org/download/linux/) · IPC 文档(https://dev-docs.kicad.org/en/apis-and-binding/ipc-api/) |
| FreeCAD | 0.19.2,系统已有安装 | FreeCAD MCP 0.1.22,以及插件的 XML-RPC | FreeCAD(https://www.freecad.org/downloads.php) · freecad-mcp(https://github.com/neka-nat/freecad-mcp) |
先安装桌面软件和 uv。下方依赖安装命令供新环境使用,本命令都从项目根目录运行:
2. Blender:搭建天安门
2.1 安装与连接
安装固定版本的 MCP 服务和配套插件。以下插件目录对应本机 Blender 3.0,其他版本要修改目录:
uv venv .cad_tools/blender-mcp-venv --python /usr/bin/python3
uv pip install --python .cad_tools/blender-mcp-venv/bin/python blender-mcp==1.9.1
DISABLE_TELEMETRY=true
BLENDERMCP_ADDONS_DIR="$HOME/.config/blender/3.0/scripts/addons"
.cad_tools/blender-mcp-venv/bin/blender-mcp install-addon
codex mcp add blender
--env DISABLE_TELEMETRY=true --env BLENDER_HOST=127.0.0.1
--env BLENDER_MCP_SAFE_MODE=1
-- "$PWD/.cad_tools/blender-mcp-venv/bin/blender-mcp"
在 Blender 插件设置中启用 Interface: MCP for Blender,再启动侧栏里的连接服务。使用 enable_blender_mcp.py 自动启用插件,监听 127.0.0.1:9876。新注册的 MCP 可在新 Codex 会话中加载,注册语法见 Codex MCP 文档。
2.2 提示词
上游 README 的示例包括 “Create a sphere and place it above the cube” 和 “Point the camera at the scene, and make it isometric”。对应到建筑任务,可以明确对象、几何要求、视角和交付文件:
连接当前打开的 Blender,先读取场景对象,不要删除已有无关对象。
创建一个可编辑的天安门风格模型:红色城台、五个真正贯通的拱形门洞、
双层金色屋顶、柱廊、台阶、旗杆,以及可正常显示的中文标语。
按建筑部件命名,设置正面、斜俯视、侧面和细节四个相机。
完成后在当前窗口切换视角,检查门洞贯通和文字显示,打包字体,
保存 .blend,并输出四张 1600×1000 的实测渲染图。
2.3 打开、控制与效果
先在一个终端打开窗口:
blender assets/blender_tiananmen.blend --python cad_lab/enable_blender_mcp.py
窗口显示后,在另一个终端执行。视角切换会直接反映在同一个 Blender 窗口中:
blender-control inspect
blender-control exec cad_lab/blender_view_aerial.py
blender-control exec cad_lab/blender_view_front.py
最终工程包含 690 个对象、4 个相机和 5 个贯通门洞,中文字体已打包。门洞射线检查和墙柱对照检查均通过。它是按建筑特征搭建的演示模型,未按测绘图复原尺寸。
3. KiCad:STM32F405 CAN 控制板
3.1 安装与连接
本机用 KiCad 10.0.6 AppImage,已提供 kicad、eeschema、pcbnew 和 kicad-cli 命令。打开 PCB 编辑器,在偏好设置中启用 API server,再重启编辑器;本机配置项 api.enable_server 已设为 true。
uv venv .cad_tools/kicad-automation-venv --python /usr/bin/python3
uv pip install --python .cad_tools/kicad-automation-venv/bin/python kicad-python==0.8.0
Python 包名是 kicad-python,导入名是 kipy。它通过 IPC 连接正在运行的编辑器。本项目的 kicad-control 使用这个官方接口;另一个本机命令 kicad-python 则运行 AppImage 内置 Python,供旧 pcbnew 脚本使用,两者不要混淆。本次没有注册第三方 KiCad MCP 服务。
3.2 提示词
网络参考采用 KiCad MCP 项目的提示模板,包括 fix_drc_violations、analyze_components 和 pcb_manufacturing_checklist。本次把它们整理成电路约束和检查要求:
在 KiCad 中建立 STM32F405RGT6 非隔离 CAN 控制板,板框 75×60 mm。
输入 5V,经反接保护和 AP2112K-3.3 供电;补齐 MCU 去耦、VCAP1/2、
8MHz 晶振、复位、BOOT 和 SWD。CAN 使用 SN65HVD230、NUP2105L,
CANH/CANL 接到端子,120Ω 终端电阻通过跳线选择。
先完成原理图与网表,再布局布线,保留四个安装孔。
在真实编辑器中显示原理图和 PCB,按报告修正 ERC、DRC、未连接项
及原理图一致性问题,最后保存工程并导出 3D PNG、STEP。
3.3 打开、控制与效果
先打开 PCB 编辑器;查看原理图时可执行下方 eeschema 命令:
pcbnew cad_lab/stm32f405_can/stm32f405_can.kicad_pcb
# 在另一个终端按需打开原理图
eeschema cad_lab/stm32f405_can/stm32f405_can.kicad_sch
在另一个终端查询当前板子、选中器件或清除选择:
kicad-control inspect
kicad-control select U2
kicad-control clear
最终 PCB 为 75×60 mm、40 个封装、305 段走线、3 个过孔。布局后使用 FreeRouting 完成自动布线,再由 KiCad 检查;最终 ERC、DRC、未连接项和原理图一致性问题均为 0。这些是设计文件检查结果,尚未进行打板、上电和实物 CAN 通信测试。
遇到 Output already exists. Export aborted.,在 STEP 导出命令中加 --force:
kicad-cli pcb export step --force --subst-models
--output cad_lab/stm32f405_can/stm32f405_can.step
cad_lab/stm32f405_can/stm32f405_can.kicad_pcb
4. FreeCAD:MID360 护框与顶部十字拱架
4.1 安装与连接
使用 neka-nat/freecad-mcp。它由 FreeCAD 内的插件和外部 MCP 服务组成;本次固定仓库版本,安装到独立 Python 环境:
git clone <https://github.com/neka-nat/freecad-mcp.git> .cad_tools/freecad-mcp
git -C .cad_tools/freecad-mcp checkout 3da6db5f71a7b74d1b69d295d1ba89233ad622b5
uv venv .cad_tools/freecad-mcp-venv --python 3.12.11
uv pip install --python .cad_tools/freecad-mcp-venv/bin/python ./.cad_tools/freecad-mcp
mkdir -p "$HOME/.FreeCAD/Mod"
ln -s "$PWD/.cad_tools/freecad-mcp/addon/FreeCADMCP" "$HOME/.FreeCAD/Mod/FreeCADMCP"
codex mcp add freecad
-- "$PWD/.cad_tools/freecad-mcp-venv/bin/freecad-mcp" --host 127.0.0.1
重启 FreeCAD,在 MCP Addon 工作台点击 Start RPC Server。不同系统及 FreeCAD 版本的插件目录以仓库说明为准。本机 0.19 的 PySide 兼容层缺少 QtWidgets 别名,已在 启动宏中兼容;freecad-live 会打开 GUI、启动回环 RPC 并恢复工程。MCP 协议握手和 15 项工具发现已经通过,报告在这里。
4.2 提示词
上游提示策略要求先 get_objects() 查询已有对象,再建模、读回属性并截图验证。本次加入了 Livox 官方尺寸和官方下载页中的手册、STEP 与视场模型:机身 65×65×60 mm,四个 M3 孔深 5 mm,孔距 48×36 mm。
在当前 FreeCAD 窗口中,导入 MID360 官方 STEP 作为尺寸参考,
用可编辑的原生特征建立内嵌式护框:130×130×4 mm 金属散热底板,
低位护框外宽 100 mm、壁厚 3 mm、高 24 mm,保留接头开口和通风窗。
顶部增加可拆卸十字拱架,跨过雷达半圆形顶部,通过四个孔固定。
雷达安装孔按官方 48×36 mm 布置,检查安装间隙、实体碰撞和视场遮挡。
不能把顶部拱架写成无遮挡;另保留拆下拱架后的扫描配置。
在 GUI 中展示装配和顶视图,修改一个参数后恢复,保存并重开 FCStd,
导出保护组件 STEP 和独立拱架 STL,再回读检查。
4.3 打开、控制与效果
打开窗口:
freecad-live
窗口显示后,在另一个终端执行。freecad-control 直接调用同一插件的 XML-RPC 接口,MCP 客户端则通过外部服务调用插件:
freecad-control inspect
freecad-control exec cad_lab/mid360_view_top.py
freecad-control exec cad_lab/mid360_open_scan.py
freecad-control exec cad_lab/mid360_view_assembly.py
最终工程包含 65 个对象,底板、低位护框和顶部拱架均为有效实体。拱架可独立拆装,总装高度约 87 mm,拱架与雷达的最小几何间隙约 13.06 mm。已在真实 GUI 中将拱架厚度从 3 mm 改到 6 mm,再恢复;保存重开后,特征和参数仍然有效。
十字拱架会遮挡部分扫描视场。 与官方视场实体的布尔交集约 3551 mm³,这只是几何交集,不能换算成扫描丢点率。拆掉顶部拱架后,底板与低位护框的视场交集均为 0。当前交付是可编辑机械原型,尚未做冲击、温升或实物点云测试,也未验证某一具体机身的安装空间。
284