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

テキストからFusion 360パラメトリックCAD生成

自然言語による機械部品の説明、調整、ファスナーBOM要求、分解組立図、およびキネマティックアニメーションを、Autodesk Fusion 360上で100%ネイティブなパラメトリック3D CADモデルとアセンブリに変換します。

テキストからFusion 360パラメトリックCAD生成 とは?

このスキルは、ユーザーが自然言語で機械オブジェクトや部品、アセンブリを説明した際に、Autodesk Fusion 360のMCPサーバーを介して完全パラメトリックなCADモデルを自動生成するエキスパートエージェントです。6フェーズの決定論的CADワークフローに従い、スケッチ、構築平面、ユーザーパラメータ、押出/回転/ジョイントフィーチャーなどネイティブなFusion 360タイムライン機能のみを使用し、メッシュ変換は行いません。スキルは、寸法の曖昧さ解消、バリエーションの探索(ショールームパターン)、標準ファスナー(DIN規格)の自動配置、分解図の作成、高速アセンブリアニメーションGIFの生成をサポートします。また、数学的自己検証、ワークスペース分離、参照ライブラリ(prompt-to-geometry-patterns等)の活用、変更履歴の記録など、プロフェッショナルな設計レビューとバージョン管理に必要な機能を備えています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kamish76/To-Fusion-Skill-Sets/tree/HEAD/skills/text-to-fusion

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

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

ドキュメント

Text to Fusion 360 純粋パラメトリックCADスキル

ユーザーが機械オブジェクト、部品、改造、アクセサリトレイ、ファスナー仕様、分解組立図、またはキネマティックアニメーションを自然言語で説明し、参照用の3Dファイル(.3mf/.stl → 3mf-to-fusion を使用)やビジュアルメディア(.png/.mp4 → media-to-fusion を使用)を提供しない場合は、以下の6フェーズの決定論的CADワークフローに従ってください。

厳格なCAD命令:

  • すべてのジオメトリを、Fusion 360タイムライン内のネイティブなスケッチ、構築平面、ユーザーパラメータ、押出/回転/ジョイントフィーチャーを使用して再構築してください。生のメッシュボディ(root.meshBodies.add)やファセットメッシュ変換を決して生成しないでください。
  • すべてのコードは、execute_api_script内でセンチメートル(cm = mm / 10.0)を使用してクリーンに実行される必要があります。
  • get_screenshotを使用して、生成または変更されたすべてのボディを常に目視確認してください。

フェーズ0: 事前確認とワークスペース調整

  1. Fusion 360 MCPセッションの有効性を確認: fusion-mcpツールexecute_api_scriptを使用してカナリアプローブを実行:

    def run(context):
        import adsk.core, adsk.fusion
        app = adsk.core.Application.get()
        if not app or not adsk.fusion.Design.cast(app.activeProduct):
            raise RuntimeError("アクティブなFusion 360設計ドキュメントが開いていません。")
        print("FUSION_MCP_READY")
    

    即時失敗ルール: プローブが失敗した場合は停止し、ユーザーにAutodesk Fusion 360を開くよう指示してください。

  2. ワークスペースとモノレポルーティング:

    • プライマリリポジトリ: アクティブなCADモノレポまたはプロジェクトルート(CAD_MONOREPO_ROOTまたは現在のワークスペース)。
    • 厳格な分離保証: リポジトリルートに一時ファイル、スクリプト、レンダリングを作成したり、shared/を変更したりしないでください。
    • 完全に新しいモデルを開始する場合は、専用のフォルダをスキャフォールディング:
      python3 <path_to_skills>/text-to-fusion/scripts/scaffold_text_model.py "<Model_Name>"
      
    • モデルスクリプトをmodels/<NN>_<Model_Name>/scripts/に、ビジュアルレンダリングをmodels/<NN>_<Model_Name>/renders/に、中間ワークスペースファイルをmodels/<NN>_<Model_Name>/workspace/に保存します。
    • 汎用CADヘルパーを../../shared/(fusion_client、cad_primitives、hardware_library、scene_animator)からインポートします。
  3. ドメインリファレンス: カスタムジオメトリを作成する前に、ローカル参照ライブラリを参照してください:

    • references/prompt-to-geometry-patterns.md — 自然言語をパラメトリックスケッチ拘束に変換します。
    • references/exploded-view-guidelines.md — 分解ベクトル、ゴールデンガイドロッド、正投影フレーミング。
    • references/assembly-animation-pipeline.md — Matrix3DオカレンストランスフォームアニメーションとGIFコンパイル。
    • references/variant-management-and-undo.md — 安全なA/Bバリアントショーケースと非破壊的な非表示。

フェーズ1: 曖昧さの解消とパラメトリック仕様

ユーザーが会話的にジオメトリを説明する場合、不足しているエンジニアリング制約を特定して形式化します:

  1. エンベロープと主要寸法:
    • 全体のバウンディングボックス($W \times D \times H$、単位mm)。
    • 最小肉厚(構造部品のデフォルトは2.0 - 2.5 mm、内部仕切りは1.6 mm)。
    • 3Dプリンターベッドサイズ制限(例 220 × 220 × 250 mm)。
  2. マスターユーザーパラメータの登録(design.userParameters): 常に主要寸法をユーザーパラメータとして公開し、ユーザーがワンクリックで再スケールできるようにします:
    def set_user_param(design, name, expr_str, units="mm", comment=""):
        existing = design.userParameters.itemByName(name)
        if existing:
            existing.expression = expr_str
            return existing
        return design.userParameters.add(
            name, adsk.core.ValueInput.createByString(expr_str), units, comment
        )
    

フェーズ2: バリアントステージングと可逆的探索

ユーザーが設計オプションを要求した場合(「第2案を見せて」「蓋なしバージョンを試して」):

  1. ショールームパターン:
    • 実験的なオプションを専用コンポーネント(例 Sample_Options_Showroom:1)にモデリングします。
    • バリアントを仮想ワークスペースフロア上に横並びに配置し(例 $Y = -350\text{ mm}$ または $X = -200\text{ mm}$)、特徴的な外観(Rack_Desert_Tan、Rack_Matte_White)を適用します。
    • ラベル付きの横並び概要スクリーンショットを撮影します。
  2. 非破壊的採用:
    • ユーザーが勝者を選択したら、選択されたボディをアクティブアセンブリにクローンします(InSitu_Tier3_Option2)。
    • 却下されたショールームのボディは bRepBody.isLightBulbOn = False で非表示にします。
    • 下流のタイムライン参照を壊す可能性のあるオブジェクトに対して、決して body.deleteMe() を呼び出さないでください。

フェーズ3: 標準ファスナーとハードウェアBOM合成

ユーザーがネジ、ナット、または組み立てハードウェアを要求した場合:

  1. ハードウェア標準化:
    • すべてのピボットと構造ジョイントには、デフォルトでDIN 7991 M3皿ネジとDIN 934 M3六角ナットを使用します。
  2. 標準ポケット寸法:
    • 六角ナットポケット: 二面幅(AF)5.70 mm(5.50 mmナットに対してFDMクリアランス+0.20 mm)、深さ**2.50 mm**。
    • ネジ穴: $\varnothing 3.20\text{ mm}$の貫通穴で、90°円錐形の皿穴($\varnothing 6.20\text{ mm} \times 1.80\text{ mm}$)。
    • 保持ワッシャー: 3Dプリントワッシャー($\varnothing 9.50\text{ mm}$ OD × $\varnothing 3.20\text{ mm}$ ID × 1.80 mm厚、90°皿穴)で、ピボットボスの先端をクランプし、リンクバーが自由に回転できるようにします。
  3. テンプレート配置ルール:
    • マスターハードウェアテンプレート(Template_DIN_7991_M3x10、Template_DIN_934_M3)は isLightBulbOn = True に設定する必要があります。
    • テンプレートは地下深く(Z = -500.0 cm)に配置し、アセンブリ内の子インスタンスは表示されたまま、テンプレートが完全に画面外に表示されないようにします。

フェーズ4: 分解図とテクニカルイラスト

ユーザーが部品の組み立て方を図示するよう要求した場合:

  1. 線形分解オフセット:
    • リンクバーを主軸に沿って外側にオフセット($+X$ 方向に 35 - 50 mm)。
    • 構造スタンドまたはフレームをY方向に後方にオフセット(+45 - 60 mm)。
    • モジュラードロップインインサートをZ方向に上方にオフセット(+40 - 50 mm)。
  2. ゴールデンアライメントガイドロッド:
    • 細い円筒ロッド($\varnothing 1.2 - 1.4\text{ mm}$、外観Rack_Mustard_YellowまたはGold - Polished)を、すべてのネジ/ピボットジョイント軸に沿って、最内部のネジ頭から最外部のナットまで押し出します。
    • すべてのロッドを専用コンポーネント Opened_Explosion_Guides にグループ化します。
  3. 正投影カメラ設定: cam.cameraType = OrthographicCameraType を設定し、バウンディング範囲をターゲットにして、遠近歪みのない平行な軸を確保します。

フェーズ5: 高速アセンブリアニメーションパイプライン

ユーザーが部品が所定の位置に組み立てられるアニメーションGIFを要求した場合:

  1. オカレンスベースのシーングラフリギング:
    • 移動する各アセンブリを専用のOccurrence(Anim_Bars、Anim_Stand、Anim_Fasteners)にグループ化します。
    • フレームループ内でfeatures.moveFeatures.add()を使用しないでください(フレームあたり約2.2秒のタイムライン再構築が発生します)。
    • 直接 occ.transform = Matrix3D(0.005秒/フレーム)を再割り当てします。
  2. マルチステージスムーズステップ: スムーズステップイージング $s(\tau) = 3\tau^2 - 2\tau^3$ を段階的なサブアセンブリ間隔($t \in [0.0, 1.0]$)に適用します:
    • スタンドドッキング: $t \in [0.00, 0.40]$
    • リンクバーシート: $t \in [0.15, 0.60]$
    • 保持ワッシャーシート: $t \in [0.30, 0.70]$
    • ファスナークランプ: $t \in [0.40, 0.92]$
    • ガイドフェード: guides_occ.isLightBulbOn = (t < 0.88)
  3. スクリプト内バッチレンダリングとピンポンコンパイル:
    • フレームを直接ディスクにレンダリング: vp.saveAsImageFile('/tmp/frames/frame_%03d.png', 800, 800)。
    • PIL.Imageを使用してコンパイル: 28フレーム(45ms)→ 28フレームホールド(50ms)→ 26逆方向フレーム(45ms)→ 20フレームホールド分解(50ms)。
    • 128色適応パレットとFloyd-Steinbergディザリング(約2.3 MB)で量子化。
    • ブラウザチャット画像キャッシュを無効にするために、ユニーク/バージョン管理されたファイル名(例 _final.gif)を使用します。

フェーズ6: 数学的自己検証とDevBrain同期

  1. 合わせ面を数学的に検証:
    • 予期しないギャップ(「置き去りに見える」)のある部品が現れた場合は、ワールド座標を検査します: delta = target_face.x - moving_face.x。
    • 正確な数学的デルタを適用し、推測で調整しないでください。
  2. ラップアップとメモリ同期を実行:
    • スコープされた変更をアクティブなCADリポジトリにコミットします。
    • 新しいメカニズム、許容ルール、またはAPIの癖を解決した場合は、references/に記録し、CHANGELOG.mdに変更をログします。

Individual skills in this repo

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

関連スキル