# 【3Dプリンター】CADを一度も触らずに、Claude Code だけで3Dモデリングしてみている話（手法編）

- 公開日: 2026-07-26
- カテゴリ: AI・Claude Code
- 著者: tan（@kama_bizdev）
- URL: https://flow-with-tech.com/claude-code-3d-modeling-method/
- サイト: 改善紀 — 好奇心の赴くままに。

---

3Dプリンタを買ったら、まず何から覚えないといけないと思いますか。原理原則をちゃんと理解したい気持ちがあるので、「Blender とかちゃんと覚えるところからだな」と思っていました。ところが買ってからひと月あまり、**私はいまだにCADのGUIを一度も操作していません**。Blender も自分の手では触っていない。それでも設計は増え続けていて、手元には30本ちょっとの作品フォルダがあります。

やっていることは単純で、**Claude Code と日本語で会話して、寸法をコードで書いてもらい、STLを出して、Bambu Lab A1 で刷る**。それだけです。今回はその「だけ」の中身を書き出した手法編で、作ったモノの紹介は次回に回します。

![設計したSTLモデルがぐるぐる回っているプレビュー](https://flow-with-tech.com/media/posts/claude-code-3d-modeling-method/eyecatch-stl-turntable.gif)

## この記事を読んでわかること

- マウスでモデリングせず「形をコードで書く」（コードCAD＝OpenSCAD）とはどういう作業になるのか
- 印刷ボタンを押す前に一応、干渉・構造・断面の3つのチェック
- この手法でできること／できないこと（シミュレーション路線から撤退した話も含めて正直に）

## そもそも「形をコードで書く」ってどういうこと？

使っているのは **OpenSCAD** というコードCADです。画面に立体をドラッグして作るのではなく、「幅はこれ、高さはこれ、ここを丸く抜く」とテキストで書くと、その通りの立体が出てくる。プログラマ向けのCADと言われがちですが、私にとっての価値は別のところにありました。

**寸法が全部「変数」になる**ことです。

たとえば壁と壁のあいだに突っ張らせるカバンフックを作ったとき、`.scad` の冒頭にはこう書いてあります。

```
gap = 292;   // 壁間実測
```

この `292` が設計全体を貫いていて、梁の長さも、くさびの沈み込み量も、パッドの位置も、全部この変数からの式で決まっています。つまり**壁の間隔が変わったら、この1行を書き換えて再生成するだけで新しい設計が出てくる**。GUIで作ったモデルだと、寸法をひとつ変えるたびに関係箇所を手で追い直すことになります。ここが決定的に違いました。

そして「テキストである」という性質が、そのまま Claude Code と相性がいい。私がやっているのは、日本語で要望を言う（「幅292mm の隙間にカバンを引っ掛けるやつ作りたい」）、出てきた形にダメ出しをする（「この棒、いらなくない？」）——この3つだけ。`.scad` を書くのは Claude Code の仕事で、私はエディタで直接いじっていません。**CAD操作を覚えるより、日本語で寸法の意図を説明するほうが圧倒的に速かった**、というのが正直なところです。

> スループットを最大化するにはどうすればいいのか。ちゃんと操作を覚えてモデリングして、検証をしてから印刷するのがいいのか。それとも大体OKなら印刷して、実物を見て修正指示すればいいのか。今のところ、ほぼ後者でやってます。

https://flow-with-tech.com/claude-code-local-llm-ocr-diary/

## 母艦をひとつ作った

毎回ゼロから会話していては再現性がないので、`model-forge` という母艦フォルダに全部集約しています。ルールは **1プロダクト＝1フォルダ**。

```
designs/<作品名>/
├── src/         ← design.scad（形はぜんぶ変数の式）と render.sh
├── data/output/
│   ├── print/   ← 刷るSTLだけ
│   └── inspect/ ← 検品PNG・構造チェックの結果
└── KNOWLEDGE.md ← ハマったこと・次の自分への手紙
```

各フォルダで `./src/render.sh` を叩くと、**部品ごとのSTL・検品用PNG・構造チェックの結果が一発で全部そろう**。中身は数十行のシェルスクリプトですが、**「1コマンドで全部そろう」を守ると、設計変更のたびに検証をサボらなくなる**らしい。出力先を `print/` と `inspect/` に分けているのも同じ理由で、`print/` の中身がそのまま「刷るべきファイルの一覧」になる。中間ファイルを混ぜると、「どれ刷るんだっけ」となって平気で古いSTLを刷ります。私はやりました。

> Claude Code に「人間が印刷ミスするからわかりやすくしてくれ」と頼みました。

## 印刷前チェック3点セット

3Dプリントは**1回の印刷に数時間かかる**ので、失敗するとその晩がまるごと溶けます。だから刷る前に潰せるものは潰したい。ただし先に断っておくと、**これらは「印刷前に1敗ぶん減らす」道具であって、実機検証の代わりには絶対になりません**。ここを勘違いすると、紙の上でだけ完璧なものが出来上がります。

### ① 干渉体積チェック — 目で見る前に、測る

部品が2つ以上噛み合う「組み物」でいちばん効いているのがこれです。OpenSCAD の `intersection()` は「AとBの重なった部分だけ」を取り出す機能で、

```
intersection(){ base(); body(); }
```

これを実行して重なりが空なら、OpenSCAD は「オブジェクトが空です」と言ってエラー終了します。**このエラー終了がそのまま「干渉なし＝合格」の判定になる**。実体が出てきたら体積を測って、何mm³食い込んでいるかを見ます。読み方にはコツがあって、間違えると誤診します。

| 出た結果 | 意味 |
|---|---|
| 空（エラー終了） | 干渉なし。合格 |
| 体積 0.0mm³ | 面同士がぴったり接触＝「正しく座っている」証拠 |
| 薄い筒状 | 圧入代（きつめに押し込む前提の食い込み）。設計どおりなら正常 |
| 太い実体を貫いている | これが本物の干渉。アウト |

なぜ目視ではダメなのか。**人間の目は「内部が埋まっている」を見抜けない**からです。外形は正しいので、検品PNGを何枚撮っても素通りする。実際、本体内部が中実の塊になって通路が消えていたバグを目視で見逃して1敗しました。測っていれば異常な体積が出て一発で分かったはずのものです。

もうひとつ、**回る部品は静止した形ではなく「回したときに通る空間」で測る**。これは実機での手痛い1敗から学びました。机の脇に付けるホルダーの締め付けノブが、組み立てたら**本体に当たって回らず、ノブを切断してようやく入った**んです。設計時は静止姿勢の干渉しか見ていなかった。あとから回転体で測り直したら、**一周する間に823mm³ぶん本体を貫いていました**。いまは**動く部品は「動きの掃引体」で測る**（回転なら回転体、直動なら押し出した体）をルールにして、チェック項目に常設しています。

> 印刷してから気づいたので、干渉部分は切断しました。その際に親指を怪我しました。使う道具もちゃんと揃えていきたい。

これが干渉したやつです。デスクとの圧着ネジは回りませんでした。

![干渉して回らなかった締め付けノブ。切断してようやく組み付けた実物](https://flow-with-tech.com/media/posts/claude-code-3d-modeling-method/knob-interference.png)

### ② 構造チェック — 折れないか、倒れないかを式で概算する

`structural.py` という自作スクリプトで、曲げ・たわみ・転倒・座屈をざっくり計算します。FEM（本格的な有限要素解析）ではなく、古典的な公式で「桁が合っているか」だけを即答させる道具です。材料値は PLA なら弾性率3.5GPa・降伏応力50MPaあたりを保守側に丸めた代表値で、**フィラメントを積む方式ならではの「層と層のあいだが弱い」異方性は係数0.5で丸めています**。正直な近似です。安全率（SF＝余裕の倍率。1.0を切ると計算上アウト）は常用品で2.0を基準にしています。

> 色々やってくれているんですね。

### ③ 断面検品 — 最後は人間が目で見る

3つ目は `inspect.html` という依存ゼロの単一HTMLです。ダブルクリックでブラウザに開いてSTLをドロップすると表示され、**X/Y/Z の断面スライダーで内部が覗けて、切断面は朱色**に塗られます。肉厚、意図しない空洞、部品同士がくっついていないか。複数STLを重ねて組み立てを見ることもでき、掛かり代（噛み合いの深さ）を詰めるときは位置をmmで直接入力するほうが速いので、そういう地味な機能を後から足しました。

気に入っているのが**注釈ピン**で、気になった箇所をクリックしてメモを書き「指示書コピー」を押すと、モデル名・座標・断面の状態・メモが Markdown で丸ごとコピーされます。**それを Claude Code に貼れば「どこの話か」が一意に伝わる**。「下のほうにある出っ張りなんだけど」と説明する不毛が消えました。ここは意図的に自動化していません。**最後は人間が見る**という線を残してあります。

これが実際に使っている様子。プロテインを1回で掬えるやつを作る時の修正指示が1発で通って嬉しい。

![inspect.html でSTLに注釈ピンを打って修正指示を書いている画面](https://flow-with-tech.com/media/posts/claude-code-3d-modeling-method/inspect-annotation.png)

## 印刷ボタンを押す前に、原寸で机に置いてみる

**画面の中では大きさの実感がまったく湧かない**んですよね。数字では分かっているのに、刷り上がってから「思ってたよりデカい」となる。そこで STL を USDZ 形式に変換して iPhone に送り、**AR で机の上に原寸表示**しています。自作アプリは不要で、iPhone標準のARクイックルック（USDZ をタップして「AR」を押すと床を認識して実寸で置いてくれる機能）がまさにそれなので、やることは変換だけです。

唯一にして最大の落とし穴が**単位**でした。STLは無単位で「1＝1mm」の慣習、USDZ は「1＝1m」。**0.001を掛け忘れると、30mmの部品が30mで出てきます**。いまは変換スクリプトが必ず0.001を掛けて、実寸を `243.2×130.0×158.0mm` のようにターミナルへ表示するようにしました。

思ったよりでかい！　を防ぐために使っています。これがプレビューした状態です。

![iPhone のARクイックルックで、印刷前のモデルを机に原寸表示したところ](https://flow-with-tech.com/media/posts/claude-code-3d-modeling-method/ar-preview.jpg)

印刷するとこうなるので、ほぼAR でプレビューした通りですね。

![実際に印刷して机に置いた完成品。ARプレビューとほぼ同じ収まり](https://flow-with-tech.com/media/posts/claude-code-3d-modeling-method/printed-result.jpg)

## 負けたら、次の設計の制約にする

ここまで書いておいてなんですが、**それでも実機では普通に負けます**。だから負けたら各フォルダの `KNOWLEDGE.md` に敗因を書いて、次の設計の制約として効かせています。代表的なのはこのあたり。

- **長いブリッジは、設定でごまかさず設計で殺す**。ブリッジ＝下に支えのない空中を橋渡しで刷る部分のことで、長すぎると垂れます。錠剤ディスペンサーで天井が崩れて1敗して以来、「長いブリッジが出たら部品を分割するか、機能を別の部品に移す」が鉄則になりました。
- **逆さ向きに印刷する部品には、上を向いた枝を作れない**。逆さ姿勢では「使用時に下がる形」しか刷れず、上向きの爪やリップは空中の島になって失敗します。判定は「全部の枝が印刷方向に対して単調に登るか」。
- **実測値は部位ごとに補正して持ち込む**。収縮は「大物の反り」と「機械的なオフセット」で性格が違うので、ひとつの補正値で全部を殴ると必ずどこかが合いません。

**負けが資産に変わる仕組みだけは作っておいてよかった**と思っています。

## 撤退した話も、正直に

全部うまくいったわけではありません。一度、**Blender を画面なし（ヘッドレス）で動かして印刷前に剛体シミュレーションを回すパイプライン**を作りました。錠剤を仮想空間で落として詰まる回数を数えるやつで、当時はけっこう本気で作り込みました。

でも**2026年7月に廃止しました**。物理エンジンの結果は絶対値としては信用できず、構成Aと構成Bの相対比較としてしか使えない。そのわりに時間がかかり、解釈にも神経を使う。**「刷って手で引いてみる」ほうが速くて確実**という、身もふたもない結論になりました。いまのパイプラインは「設計 → 干渉体積 → 構造チェック → 断面の目視 → 刷る」。1段抜けたぶん素直で速くなっています。**作った道具を捨てるのはこたえましたが、動かない段を残すほうが害が大きい**と判断しました。

なお「Claude Code だけ」と書きましたが例外もひとつ。猫のフィギュアのような**有機的な形は OpenSCAD だと「風船で作った動物」感が抜けず**、そこだけ Blender をスクリプト経由で動かして作り直しました。手でこねてはいませんが、コードCADの外に出た唯一の例です。角ばったものと数式で書けるものはコードCADが速く、生き物はそうでもない、というのが今のところの実感です。

> 使ってみていたのですが、Claude Code のモデリングが一生終わらない状態になったので、「何してんの。やめて。」と。

## まとめ

CADのGUIを覚えないまま、日本語での対話と、変数まみれの `.scad` と、印刷前チェック3点セットで、いまのところ回っています。突っ張りカバンフックとプロテインスプーンは実際に刷って日常で使っていて、これは素直に嬉しい。一方で**印刷検証待ちのまま積んである設計もかなりの数あります**（構造チェックはPASSしているのに、フィラメントと時間が足りていない）。刷っていないものを「完成」と呼ばないようにだけは気をつけています。

この手法のいちばんの効用は、たぶん**設計の意思決定が全部テキストとして残ること**です。なぜこの寸法にしたのか、なぜこの形を却下したのかが、変数名とコメントと `KNOWLEDGE.md` に残る。

次回はこの母艦から生まれたモノを何点か紹介する予定です。「置くとKindleを抱きしめるスタンド」とか「坂に置くと歩くカラーコーン」とか、そういう実用性の怪しいものが並びます。……こうして書くと、道具立ては真面目なのに作っているものがふざけている気がしてきました。まあ、そこは次回の言い訳とさせてください。

https://flow-with-tech.com/claude-lab-top10-award/

https://flow-with-tech.com/claude-code-credit-log/

作ったものの製作記や失敗談は X（[@kama_bizdev](https://twitter.com/kama_bizdev)）でも発信しています。よかったら覗いてみてください。#FWTan2

> 🗣 ３Dモデリングを習得するか、このままClaude Code 縛りでやるか悩みます。でもClaude Code 縛りで行っちゃった方が面白い気がしています笑
