Communityコーディング&開発github.com

leewsimpson/claudesk

リポジトリ内のPythonスクリプトからFusion MCPを介してFusion 360内のエンクロージャをビルドまたはリビルドします。エンクロージャの形状やパラメータを変更する場合、機能を追加する場合、またはFusionのモデルが見つからないか古くなっている場合に使用します。

claudesk とは?

このスキルは、Fusion 360の3DモデルをPythonスクリプドからプログラム的に管理・ビルドするためのものです。スクリプトを唯一の真実源(source of truth)とし、Fusionドキュメントは使い捨てのレンダリング結果として扱います。`scripts/`内のPythonコードを編集し、MCPランナーでビルドすることで、手動のFusion GUI編集による変更は次回ビルド時に失われます。これにより、設計プロセスをコードベースで管理でき、継続的インテグレーションやバージョン管理に適しています。主にClaude Code(MCPベース)環境で動作し、エンクロージャ設計のパラメトリック変更、機能追加、再現可能なビルドを実現します。本体のビルドにはwslibによる一時B-Repモデリングを使用し、高速な設計反復を可能にしています。

対応✓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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Fusionでのエンクロージャのビルド

scripts/内のスクリプトが真実の源です。Fusionドキュメントはそれらの使い捨てレンダリング結果です。スクリプトを変更してリビルドしてください。Fusion GUIでの手動編集は次回ビルド時に失われます。

手順

  1. Fusionの準備。 以下のランナーを空のボディで実行します。アクティブなデザインがない場合は作成し、boardmodel/ESP32-S3-Touch-AMOLED-1_75.stpをルートにIdentityでインポートします(importManager.createSTEPImportOptions + importToTarget)。ルートにオカレンスESP32-S3-TOUCH-AMOLED-1_75_ASM:1があれば完了です。
  2. 編集。 パラメータはscripts/enclosure.pyの先頭にあるP dictにあります。それらから導出される値はderived()に記述します。ジオメトリはbuild_shell / build_cap / build_refsに記述します。ヘルパーはscripts/wslib.pyにあります。
  3. リビルド ランナーを使用して実行します。build(overrides)はdictを受け取り、素早い実験が可能です。例: {'lattice': False}(ラティスなしのリビルドは約1秒、v2ファインニットで約12秒)。トレースバックなしでbuilt in …と表示されれば完了です。
  4. 確認 fusion-inspectスキルを使用して検証します。チェックがPASSと表示され、スクリーンショットを確認した時点でビルドは完了です。

ランナー(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で再接続を依頼するか、直接エンドポイントを呼び出します。ランナーをファイルに保存し、python scripts/fmcp.py script runner.pyを実行します。スクリーンショットの場合は、python scripts/fmcp.py shot out.png [方向]を実行します。

規約

  • mm単位でwslib(P()、box()、cyl_y()など)を使用して作業します。生の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の計測から得られます。PDFから推測するのではなく、スクリプトで計測してCLAUDE.mdに記録します。
  • 例外は伝播させます。トレースバックがMCPが返す唯一の失敗シグナルです。

Individual skills in this repo

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

関連スキル