Community编程与开发github.com

leewsimpson/claudesk

从仓库的 Python 脚本通过 Fusion MCP 在 Fusion 360 中构建或重建外壳。当更改外壳几何体或参数、添加功能,或 Fusion 模型缺失或过时时使用。

claudesk 是什么?

该技能通过在 Autodesk Fusion 360 中运行本地 Python 脚本来管理物理外壳的 CAD 模型。它将 `scripts/` 目录中的 Python 代码作为几何体的唯一真实来源,将 Fusion 文档视为可丢弃的渲染结果,防止通过 Fusion GUI 进行手动编辑。它利用 MCP(模型上下文协议)工具 `fusion` 在 Fusion 中执行 runner 脚本。其工作流程是:参数化编辑,在 `enclosure.py` 中修改 `P` 字典,在 `wslib.py` 中使用 mm 单位的辅助函数重建几何体,然后运行 runner。它还集成了 `fusion-inspect` 技能以进行无头验证,并通过导入 STEP 模型 `ESP32-S3-Touch-AMOLED-1_75.stp` 自动初始化新的 Fusion 设计。该技能特别适用于迭代硬件设计、快速测试参数化更改以及持续集成管道,确保 CAD 模型与源代码保持同步。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/leewsimpson/claudesk/tree/HEAD/3d-model/.claude/skills/fusion-build

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

在 Fusion 中构建外壳

scripts/ 中的脚本是真实来源。Fusion 文档是它们的可丢弃渲染结果。修改脚本后重建。在 Fusion GUI 中进行的手动编辑在下一次构建时会丢失。

步骤

  1. Fusion 就绪。 使用空参数运行下面的 runner。如果没有活动设计,则创建一个设计,并将 boardmodel/ESP32-S3-Touch-AMOLED-1_75.stp 导入到根节点,使用单位标识(importManager.createSTEPImportOptions + importToTarget)。当根节点中出现了 occurrence ESP32-S3-TOUCH-AMOLED-1_75_ASM:1 时即就绪。
  2. 编辑。 参数位于 scripts/enclosure.py 顶部的 P 字典中。由此派生的值放在 derived() 中。几何体放在 build_shell / build_cap / build_refs 中。辅助函数放在 scripts/wslib.py 中。
  3. 使用 runner 重建。build(overrides) 接受一个字典用于快速实验,例如 {'lattice': False}(无格子的重建约需 1 秒;使用 v2 精细编织格子约需 12 秒)。当它打印出 built in … 且没有 traceback 时即完成。
  4. 验证,使用 fusion-inspect 技能。只有当检查打印出 PASS 并且您已经查看了截图时,构建才算完成。

Runner(粘贴为 MCP script)

import sys, importlib
REPO = r'C:\Github\claudesk\3d-model\scripts'  # 您的克隆中 3d-model/scripts 的绝对路径
if REPO not in sys.path: sys.path.insert(0, REPO)
import wslib, enclosure, checks
for m in (wslib, enclosure, checks): importlib.reload(m)

def run(_context: str):
    enclosure.build()          # 或 enclosure.build({'sphere_d': 90})

Fusion 的 Python 会在运行之间缓存模块。始终保留 reload 行,否则编辑不会生效。

如果 mcp__fusion__* 工具缺失

当 MCP 服务器在会话启动时连接失败(例如 Fusion 尚未运行),请检查 Fusion 是否已启动(netstat -ano | grep 27182 显示 LISTENING)。然后让用户用 /mcp 重新连接,或者直接调用端点:将 runner 保存到文件并运行 python scripts/fmcp.py script runner.py。 要截取屏幕截图,请运行 python scripts/fmcp.py shot out.png [direction]。

约定

  • 通过 wslib(P()、box()、cyl_y() 等)以 mm 为单位工作。只有原始的 API 调用会看到 Fusion 的 cm,通过 wslib.MM 转换。
  • 使用临时 B-Rep 建模(wslib.tbm() 和 union/cut/intersect 辅助函数),然后使用 add_bodies 提交。这样速度快,不需要时间轴,并且在参数化和直接设计中都能工作。
  • 每次构建都会删除并重新创建顶层组件 Enclosure(Shell、Cap)和 Refs。Refs 包含我们尚未有 CAD 的零件的鬼影体(PlugGhost、SpeakerGhost)。它们仅用于干涉检查,从不导出。当新的外购零件对装配有影响时,请为其添加鬼影体。
  • 框架:导入的板级 STEP。+Y 是观察方向,玻璃前面板位于 y=2.78,USB-C 口朝向 -X,桌面位于 -Z 下方,由 base_tilt(30°)后倾,使屏幕朝上面向用户(derived()['down'])。
  • 电路板数据来自测量 STEP。使用脚本测量并将结果记录在 CLAUDE.md 中,而不是从 PDF 猜测。
  • 让异常传播。traceback 是 MCP 返回的唯一失败信号。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能