Fusionでのエンクロージャのビルド
scripts/内のスクリプトが真実の源です。Fusionドキュメントはそれらの使い捨てレンダリング結果です。スクリプトを変更してリビルドしてください。Fusion GUIでの手動編集は次回ビルド時に失われます。
手順
- Fusionの準備。 以下のランナーを空のボディで実行します。アクティブなデザインがない場合は作成し、
boardmodel/ESP32-S3-Touch-AMOLED-1_75.stpをルートにIdentityでインポートします(importManager.createSTEPImportOptions+importToTarget)。ルートにオカレンスESP32-S3-TOUCH-AMOLED-1_75_ASM:1があれば完了です。 - 編集。 パラメータは
scripts/enclosure.pyの先頭にあるPdictにあります。それらから導出される値はderived()に記述します。ジオメトリはbuild_shell/build_cap/build_refsに記述します。ヘルパーはscripts/wslib.pyにあります。 - リビルド ランナーを使用して実行します。
build(overrides)はdictを受け取り、素早い実験が可能です。例:{'lattice': False}(ラティスなしのリビルドは約1秒、v2ファインニットで約12秒)。トレースバックなしでbuilt in …と表示されれば完了です。 - 確認
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が返す唯一の失敗シグナルです。