著者:副業の宮殿|製造業に携わる現役エンジニア。技術士試験対策書籍をKindleで複数出版。技術ブログ「副業の宮殿」にて製造業DX・AI活用の情報を発信中。

「AIにCADソフトを直接操作させて、設計までやらせる」 ― ついにそんな時代が来ました。

Anthropic社のClaudeがFusion 360をMCP(Model Context Protocol)経由で操作できるようになり、自分のPCで動いているFusion 360に対してClaudeが直接スケッチを描き、回転体を作り、フィレットをかけ、慣性モーメントまで計算してくれる ― 私自身マウスを一切動かさずに、対話だけで物理的に意味のある設計が完成しました。

本記事では、実際にClaude × Fusion 360 MCPで「最強のコマ」と「モウセンゴケ用3Dプリンタ鉢」を設計した一連の流れを、技術的な詰まりポイントも含めて記録します。


この記事でわかること

  • Claude × Fusion 360 MCPの仕組み(ローカルPCのFusionを動かす)
  • 実際の動作確認の流れ(接続診断スクリプト)
  • 物理最適化された「最強のコマ」をAIに設計させる手順
  • 既存プロジェクトを引き継いだ「3Dプリンタ鉢ROSHU」の自動モデリング
  • MCP経由でつまずいたポイントとその対処

Fusion 360 MCPとは何か

MCP(Model Context Protocol)は、AIモデルが外部ツールと直接やり取りするための標準プロトコルです。Autodesk社が提供するFusion 360向けMCPアドインを入れることで、ClaudeなどのMCP対応AIがFusion 360を直接操作できるようになります。

仕組みはシンプルです:

ユーザーのPC (Windows)
└─ Fusion 360 本体
    └─ Autodesk Fusion MCP アドイン
        ├─ デザインWS (3Dモデリング)
        ├─ シミュレーションWS (解析)
        ├─ ドローイングWS (図面)
        └─ 製造WS (CAM、NCコード)

Claudeから見える窓口は fusion_mcp_execute(Pythonスクリプト実行)と fusion_mcp_update(undo/redo)の2つだけ。この fusion_mcp_execute でFusion APIのPythonコードを送り込むことで、3Dモデリング、解析、図面作成、CAM、すべて1つのMCP経由で実行可能になります。

つまり「AIに指示を出す」だけで「ローカルPCのFusion 360が実際に動く」 ― これがMCPの破壊力です。


接続診断 ― そもそも繋がっているのか

最初にやるべきは接続確認です。Fusion 360が起動していてMCPアドインが動作していれば、Claudeから簡単なスクリプトを送って応答を確認できます。

私が使った診断スクリプトはこちら:

python
import adsk.core, os, socket

def run(_context: str):
    app = adsk.core.Application.get()
    print(f'Fusion version: {app.version}')
    print(f'Hostname: {socket.gethostname()}')
    print(f'User: {os.environ.get("USERNAME", "unknown")}')
    doc = app.activeDocument
    if doc:
        print(f'Active document: {doc.name}')
    print(f'Open documents: {app.documents.count}')

返ってきた結果:

Fusion version: 2702.1.58
Hostname: cits24
User: cits24
Active document: 無題
Open documents: 1

重要なポイント: ホスト名が自分のPC名になっていることで、Anthropicのクラウドではなく自分の手元のFusion 360を操作しているのだと確認できます。Claudeが操作しているのは紛れもなく目の前のPCで、もし自分がマウスでスケッチを描いている最中ならClaudeのスクリプトは衝突します。

過去ファイルへのアクセスも可能

接続が確認できた後、過去に作ったCADファイルにもアクセスできるか試しました。

python
data = app.data
hub = data.activeHub
proj = data.activeProject

これだけで、自分のクラウドHub(複数所属している場合は全て)、各プロジェクト、ファイル一覧がすべて取れます。

つまり、AIに「過去のあのファイルを参照して新しい設計を作って」という指示も原理的に可能、ということです。


実例1: 「最強のコマ」を設計させる

接続確認ができたので、本題に入ります。Claudeに「最強のコマを作って」とだけ指示しました。

Claudeが立てた設計方針

ジャイロスコープ理論に基づく最適化方針を即座に提案してきました:

  1. 慣性モーメント I を最大化 → 外周に質量を集中(リム重量化)
  2. 重心 G を低く → ボウル反転(下膨れ)で軸の下半分に質量配置
  3. 接地点 P を点接触に近づける → 軸先端を半球(R0.5)
  4. 対称性 → 旋盤の一発加工で軸対称を担保

これは加工屋ならすぐ書ける項目ですが、AIが設計意図と加工方法をリンクさせて提案してきたのは興味深いところです。

モデリングの実行

スケッチ → 回転体 → フィレット/面取り、と段階的に進めます。プロファイル定義のスクリプト(抜粋):

python
pts = [
    (0.0, 0.0),    # 軸先端 (接地点)
    (0.05, 0.05),  # 先端トランジション
    (1.5, 0.4),    # コーン→リム下端
    (1.7, 0.6),    # リム外周下端 (D34, h6)
    (1.7, 1.2),    # リム外周上端 (リム厚6mm)
    (1.0, 1.6),    # ショルダーテーパー
    (0.2, 1.6),    # シャフト基部 (D4)
    (0.2, 2.4),    # シャフト頂部 (シャフト長8mm)
    (0.0, 2.4),    # 軸線上の頂点
]

これをClaudeが書いて、Fusionに送り、9本の線で閉じた断面が完成。続いてZ軸周りに360°回転させてソリッド化、材料を真鍮に設定、最後にフィレットと面取りで仕上げました。

結果 ― 物理特性

項目 意味
外径 Φ34 mm NC旋盤での確保可能寸法
全高 24 mm コンパクト設計
質量 81.24 g 真鍮の高密度を活かす
重心高さ 9.06 mm 全高の38%、低重心
慣性モーメント(回転軸) 1010.5 g·cm² 角運動量の元手
慣性モーメント(傾く軸) 614.2 g·cm²
安定指数 FoM 1.645 1超で偏平=ジャイロ安定

安定指数 I_spin / I_trans = 1.645 という値は、お椀型コマとして上々の数字です(球形=1.0、円盤=2.0が上限)。回転軸まわりの慣性が傾き方向の慣性より大きく、傾いた時に強い復元モーメントが働く ― つまり長く安定して回るコマになります。

これらの数値はすべて、Claudeが body.physicalPropertiesgetPrincipalMomentsOfInertia() を呼んで計算した値です。設計と物性評価が同じスクリプト内で完結するのがCAD MCPの威力です。


実例2: 過去プロジェクト「3Dプリンタ鉢ROSHU」を引き継ぐ

次に試したのは、過去にClaudeとの別会話で構想だけ立てていた「モウセンゴケ用3Dプリンタ鉢」の本実装です。

私は副業として食虫植物(ドロセラ、モウセンゴケ)の栽培・販売を進めており、3Dプリンタで作った専用鉢を商品化する企画を温めていました。コンセプトは:

  • 露珠(ROSHU): 朝露の珠がリムに連なるイメージ、ガラスドーム栽培用
  • 湿原(SHITSUGEN): 二段構造、ジャイロイドメッシュバンド
  • 繊毛(SENMOU): 触毛モチーフ、六角メッシュ底

「過去の会話で構想した『露珠』を新しく製作してください」とClaudeに依頼。すると会話履歴を検索し、当時の設計コンセプトを呼び出してから、Fusion 360で実装し始めました。

設計プロセス

Claudeが順に実行したステップ:

  1. 新規ドキュメント作成 → 鉢用に独立したファイルへ
  2. 回転体プロファイル → 底Φ50→上Φ80、高さ60mm、肉厚2.5mm
  3. 露珠12粒の配置 → 半球をリム上に円形パターン
  4. 放射スリット6本 → 通気・観賞穴(W2×H25mm)
  5. 底面排水穴7個 → 中央+周囲6個(Φ4)
  6. 物性計算とフィラメント長見積もり

つまずきポイント ― 座標系のZ方向反転

途中、底面排水穴の押し出しで healthState=1(警告)が発生しました。

原因を調べたところ、回転体の生成方向によってZ軸の正負が反転しており、Z=0より下に床が存在する状態。Claudeは即座にバウンディングボックスを取って原因特定→ThroughAllExtentDefinition で双方向貫通カットに切り替えて修正、というデバッグまで自前で完結しました。

python
all_ext = adsk.fusion.ThroughAllExtentDefinition.create()
ext_input.setOneSideExtent(all_ext, 
    adsk.fusion.ExtentDirections.NegativeExtentDirection)

「失敗→診断→修正」のループがAI内で閉じることで、人間側は方針判断だけに集中できます。

完成スペック

項目
外径 Φ82.5 mm(露珠込み)
高さ 62.5 mm
体積 37.45 cm³
質量(PLA 30%インフィル) 約18.6 g
フィラメント長 約7.0 m
推定造形時間 5〜8時間(Bambu Lab A1 mini想定)

そのままSTL出力すればプリンタに流せる状態です。


MCP運用で詰まったポイントと対処

何度かMCP通信のタイムアウト(4分応答なし)が発生しました。原因と対処を整理しておきます。

タイムアウトの典型パターン

症状 原因仮説 対処
単純な情報取得は通るが、形状作成で4分応答なし スクリプト内でFusionが内部待機状態に入っている可能性 スクリプトを小さく分割、点・線の単位で進める
healthState=1 で押し出し失敗 座標系の認識違い、プロファイル位置と方向の不整合 バウンディングボックスで実際の位置を確認、ThroughAllExtent等で頑健にする
geometry.objectType が None 一部のエッジで属性が取れない仕様 type(e.geometry).__name__ で代替判定

安全運用のコツ

  1. 一度に大きなスクリプトを送らない ― スケッチ作成、回転、フィレット、と段階分割
  2. 各ステップで body.faces.count などを出力 ― 想定通りに進んでいるか可視化
  3. タイムライン健全性 healthState をチェック ― 失敗フィーチャがあれば次の処理に進まない
  4. ユーザーは触らない ― AI実行中にFusionを手動操作すると衝突する

まとめ ― AI×CADは「対話で設計が完結する」段階に入った

今回の体験で確信したのは、Claude × Fusion 360 MCPはもう実用段階ということです。

何が変わるか

  • 設計の試行回数が爆増する ― 寸法変更、形状バリエーション、材料比較が自然言語で指示できる
  • 計算と設計が一体化する ― 慣性モーメント、応力、フィラメント長を設計の途中で参照できる
  • 過去資産が活きる ― 既存のCADファイルやスケッチ、会話履歴をAIが直接参照できる
  • 加工知識とCADがリンクする ― 「NC旋盤一発加工で」と指示すれば対称形状で出してくる

何が変わらないか

  • 設計意図の判断は人間 ― 「最強のコマ」の最強さを定義するのは人間
  • 加工現場の知見 ― 刃物逃げ、チャッキング、公差の社内基準などは指示しないと反映されない
  • 検図と現物確認 ― AIが出す数値は信用できるが、実際に削って回してみるのは別の話

あわせて読みたい