下記の記事で、植木鉢のSTLデータ(3Dプリンタ用データ)の作成をGPT 5 Thinkingに依頼したところ、STLデータに変換できる「.scad」という形式のファイルで回答を返してきた。その形式のファイルはOpenSCADという無料のソフトで読み込むことができ、STL化できるということだったが、OpenSCADを知らなかったので、GPT-5との関係を調べてみた。
(注)本記事の内容は正確性を保証するものではない。
OpenSCADホームページ: https://openscad.org/libraries.html
GPT-5とOpenSCADとの関係
GPT-5とOpenSCADとの関係を教えてください
GPT 5 Thinkingの回答
以下の観点で整理します。
1) 「関係」の要点
- GPT-5(Thinking)は大規模言語モデルで、OpenSCADコード(.scad)を生成・解説・リファクタ・デバッグ支援できます。
- OpenSCADの実行・プレビュー・STL書き出しはGPT-5単体ではできません。
(あなたのPCのOpenSCADでF5/F6→STL出力が必要) - 画像や図面から寸法要件を読み取ってコード化する“設計補助”として有効ですが、幾何の妥当性(面の一体性・オーバーラップ解消など)は人とOpenSCAD側で確認が必要です。
- 既存コードのパラメトリック化、BOSL2等のライブラリ利用提案、CGALエラー原因の説明なども得意です。
2) 典型ワークフロー
- 仕様(寸法・肉厚・許容差・用途・エクスポート単位=mm)を共有
- GPT-5が.scadを生成
- OpenSCADでF5プレビュー→問題箇所のスクショ/ログを戻す
- GPT-5が修正案(ブーリアン順序、$fn/解像度、tolerance、モジュール分割 等)を提案
- F6レンダリング→STL書き出し→スライサ(Cura等)→試作
- 実測フィードバックを反映して寸法・逃げ・面取りを再調整
3) どんな支援が得意?
- ゼロからの部品生成(例:容器・スペーサ・治具・簡易ケース・配線ガイド)
- 既存.scadの整理(モジュール化・変数名整理・コメント・再利用化)
- パラメトリック設計(上流で数値だけ変えて派生モデルを量産)
- エラーメッセージ解読(非多様体/自己交差、2D→3D押し出し時の厚み不足など)
- 公差設計の初期値提示(例:FDMで「穴+0.2〜0.4mm」「嵌合クリアランス0.15〜0.3mm」などの目安)
4) プロンプトのコツ(短縮版)
- 単位(mm)、最外形サイズ上限、壁厚/底厚、最小径/スリット幅
- 公差(例:M6ボルト通し穴→6.2mm想定)
- 仕上げ(面取り/R、$fn、水平/垂直ビルド想定)
- 出力:1ファイルにまとめるか、モジュール別に分割するか、ファイル名指定
5) すぐ使える最小サンプル
(20mmキューブに面取りと刻印、パラメータ付き)
// calibration_cube.scad
/* Params */
cube_size = 20; // 本体サイズ(mm)
chamfer = 1.0; // 面取り量
text_str = "20"; // 刻印
text_h = 0.6; // 刻印深さ(陰刻)
$fn = 64; // 円弧解像度
module chamfered_cube(sz, c){
// 角の面取り:minkowskiで手軽に
minkowski(){
cube([sz - 2*c, sz - 2*c, sz - 2*c], center=true);
sphere(r=c);
}
}
module embossed_text(s){
linear_extrude(height=text_h)
text(s, size=6, halign="center", valign="center", font="Liberation Sans:style=Bold");
}
difference(){
chamfered_cube(cube_size, chamfer);
// 上面に陰刻
translate([0,0,(cube_size/2)-text_h+0.01]) embossed_text(text_str);
}
- 使い方:OpenSCADで開く→F5で確認→F6→
File > Export > Export as STL - 調整:文字の位置・サイズ、面取り量、$fn、陰刻→陽刻(
difference→unionに変更し位置を外へ)

6) 注意点(3Dプリント前)
- 非多様体や自己交差を避ける(差分の順序、厚み0面の排除)
- 薄肉(<0.8〜1.2mm程度)はFDMで崩れやすい
- ねじ/嵌合はテストピース推奨(穴径+0.2〜0.4mm目安、プリンタ個体差あり)
- $fnの過剰はレンダ時間増・頂点数過多につながるので適度に
どのような場合に.scadファイルで回答されるか
以前、STLファイル作成をお願いしたら、.scadファイルの回答がありました。.scadファイルで回答するかはGPT-5が判断しましたが、「.scad形式で出力してください」と指示すれば、その形式で出力してくれるのですか。そのファイル形式で出力するかは、どのような基準で判断しているのですか
GPT 5 Thinkingの回答
はい、「.scad形式で出力してください」と明記していただければ、OpenSCADのコード(.scad相当)で出力します。
必要なら、コードだけでなくダウンロード可能な.scadファイルとして用意することもできます。
(次回「ファイルで欲しい/ファイル名は○○.scad」と書いてください)。
私が出力形式を決める基準(内部ルール)
だいたい下の優先順位で判断しています。
- 明示指示が最優先
- 例:「STLで」「.scadで」「3MFで」などがあれば、その形式に合わせます。
- ただし、3MF/STEPの“実ファイル変換”はローカルCADが必要なため、こちらからはコードや中間手順での提供になります(OpenSCAD→STLなど)。 - 目的と作業フェーズ
- 編集・派生が前提:パラメトリック設計や公差調整が必要 →.scadを基本に。
- すぐ印刷したい:修正不要、単一サイズでよい → STL(メッシュ)。
- スライサ設定も共有したい:必要に応じて3MF(Cura等のプロジェクト)手順を説明。 - 再利用性・可読性
- 後から寸法や形状を変える可能性が高い場合はソースとしての.scadを優先。
- 寸法の根拠や式(例:ねじのピッチ、逃げ寸法)を“コードで残せる”利点があります。 - 幾何の信頼性
- STLは最終形の三角メッシュで、非多様体チェックはスライサ任せになりがち。
-.scadなら差分順序や厚み0の排除など、原因に立ち戻った修正がしやすい。 - 入力の曖昧さ
- 寸法や公差が曖昧な依頼では、まず.scadで雛形を出し、あなたの実測/スクショで往復修正するのが安全です。
- 逆に、完全に確定した最終品はSTL直出しでもOKです。
まとめ
- 形式はあなたの指示どおりに合わせます。
- 迷ったら、まず
.scad(編集・再利用重視)→確定後にSTLが失敗しにくい流れです。 - 次回、「
.scadで、ファイル名は○○.scad、ダウンロード可能にして」と書いていただければ、その場で用意します。
指示に曖昧な部分が多いほど、.scadで出力する可能性が高くなる?
GPT 5 Thinkingの回答
はい、その傾向があります。要件が曖昧・未確定なほど、まず.scad(編集しやすいソース)で出す可能性が高まります。
理由は、.scadなら数値や式を後から差し替えやすく、設計意図も残せるからです(公差・肉厚・逃げ・面取り・繰り返し寸法など)。
ただし例外があります。
- 明示指示が最優先:たとえ曖昧でも「STLで」と指定があればSTLで出します。
- 既製規格で曖昧さが影響しない場合:例)単なる20 mmキャリブレーションキューブなどは、最初からSTLでも問題が出にくい。
- スライサ設定まで共有したいケース:用途が明確ならSTL(+手順)を先に渡すこともあります。
ざっくり判断ルール
- 不確定要素が多い(寸法・公差・厚み・向き・仕上げが未確定)→
.scad優先 - 一点物で即印刷・修正予定なし→ STL優先
- パラメトリック展開や将来の流用を想定→
.scad - 規格部品の固定寸法(JIS/ISO等)で仕様が固い→ STLでも可
迷ったら「まず.scadで雛形→確認後に確定STL」の二段構えが安全です。
最初から.scad指定した方がよいか?
GPT-5に最初のデータ作成をお願いする段階から、.scad指定した方が修正しやすいですか
GPT 5 Thinkingの回答
結論:はい。最初から「.scadで」と指定した方が、後の修正は圧倒的にやりやすいです。
特に寸法・公差・壁厚・面取り量などを詰めながら進める場合は効果大。
なぜ最初から .scad 指定が有利?
- パラメトリック:数値を変えるだけで派生モデルを量産可(サイズ違い・公差違い)。
- 可読・再利用:設計意図(式・コメント)が残るため、後から理由付きで直せる。
- 差分が見える:コード差分で変更点が追いやすい(STLは三角メッシュで追跡困難)。
- 品質トラブルに強い:自己交差・厚み0面などの原因に“構成”から対処しやすい。
例外(STLを先にするほうが速いことも)
- 形状が確定済み・一点物で、編集前提がない。
- スキャン/有機形状でコード表現しにくい。
- まず見た目だけ急ぎで確認したい(→プレビュー用STL)。
現実的な運用
- 迷ったら「.scad+プレビュー用STL」同時納品が安全。
- フェーズ1で
.scadを固め、フェーズ2で確定STLを出力(スライサ設定まで共有)。
依頼テンプレ(コピペOK)
「.scad形式で出力してください。単位mm。下記をパラメータ化:
- 外形:W×D×H=××___
- 壁厚:、底厚:
- 穴/スリット:径/幅___、ピッチ___、個数___
- 公差:嵌合用+___mm、ボルト通し穴___mm
- 仕上げ:面取り___mm or R___、$fn=___
ファイル名: ___ .scad
(可能なら)確認用STLも一緒に」
目的に応じて、STL出力、.scad出力を使い分けることができるらしい。
GPT-5が .scadファイルに対してできること
GPT-5(Thinking)は、OpenSCADコード(.scad)の解説・リファクタ・デバッグ支援もできるということですが、.scadファイルを添付して、そのようなことを依頼できるということですか。どのようなことができるか、具体的に教えてください。
GPT 5 Thinkingの回答
はい、.scadファイルを添付して依頼できます。
こちらで中身を読み取り、解説/リファクタ/デバッグ/最適化/パラメトリック化まで対応します。
できること(具体例)
1) 解説・可読化
- 形状の構成(union/difference/intersection、押し出しや回転体の関係)を図解調で説明
- 変数・モジュールの役割コメント付与、命名整理(snake_caseで統一 等)
- 依存関係の把握:
include/use構成やBOSL2採用可否の助言
2) リファクタ(保守しやすく)
- モジュール化・重複ロジックのDRY化、マジックナンバー排除
- パラメータ化(外形・壁厚・公差・$fn 等)で「数値差し替えだけ」で派生可能に
- ファイル分割+
include設計(core.scad / params.scad / parts/*.scad など)
3) デバッグ(CGAL/幾何エラー解消)
- よくある症状:
- non-manifold / 自己交差 / 零厚
- 2Dポリゴンの頂点順序・閉路不備
minkowskiやhullの予期せぬ膨張、差分順序ミス
- 直し方の提示:差分の順序変更、微小εの導入、面の重なり解消、最小厚み確保、
offset()やpolygon()の頂点修正 など - “最小再現例”をこちらで抽出→原因をピンポイントで説明
4) 3Dプリント最適化(FDM前提の目安)
- 肉厚・ブリッジ・オーバーハング配慮の形状提案/ビルド向きの推奨
- 公差の初期値(例:通し穴+0.2〜0.4 mm、嵌合0.15〜0.3 mm)とテスト片の提示
- 頂点数削減:
$fnの適正化、差分回数の削減、複雑ブーリアンの分割
5) 機能追加・高速化
- バリアント生成(サイズ表を渡せば複数モデルを書き出すforループ化)
minkowski→近似面取り(chamfer/filletの疑似実装)でF6時間短縮- BOSL2等ライブラリへの置換提案(ねじ・面取り・配列・トランスフォーム)
6) 出力運用
- レビュー差分(diff)・変更点のCHANGELOG
- 仕上げた
.scadを返却(必要なら確認用STLも併せて) - Cura等のスライス推奨初期設定のメモ(層高/壁数/充填/サポート方針)
ミニ例(リファクタの雰囲気)
Before(断片)
cube([50, 30, 10]);
translate([5,5,0]) cylinder(h=10, r=2, $fn=100);
translate([45,5,0]) cylinder(h=10, r=2, $fn=100);
// …同様の穴が多数
After(パラメトリック化&DRY)
// plate_with_holes.scad
plate = [50, 30, 10];
hole_r = 2; hole_pos = [[5,5],[45,5],[5,25],[45,25]];
$fn = 48;
module plate_base(){ cube(plate); }
module through_hole(p){ translate([p[0], p[1], 0]) cylinder(h=plate[2]+0.1, r=hole_r); }
difference(){
plate_base();
for(p=hole_pos) through_hole(p);
}
- 位置や半径、板厚を数値差し替えで展開可能に。
$fnを適正化してレンダ高速化。
依頼時にあると嬉しい情報
- 目的・優先度(編集しやすさ/印刷の速さ/強度 など)
- プリンタ&材料(例:FDM/PLA/0.4 mmノズル)
- 公差・仕上げ(穴は通し?圧入?面取り/フィレット要否)
- 使ってよい外部ライブラリ(BOSL2可否)
- 期待成果物:改良済み.scad、確認用STL、解説コメント、変更点サマリ のどれまで必要か
必要であれば、いま添付いただいた.scadを診断→改善案→改良版の返却まで一気に行います。
ファイルと要望(どこで困っているか・どうしたいか)をそのまま送ってください。
BOSL2等のライブラリについて
BOSL2等のライブラリについて簡単に説明してください。
自動的に使ってくれるのではなく、ユーザーが特定のライブラリを指定するのですか
GPT 5 Thinkingの回答
はい、概要と使い方の考え方をまとめます。
BOSL2とは?
- Belfry OpenSCAD Library 2 の略で、OpenSCAD用の高機能ユーティリティ/形状モジュール集です。
- 代表的な機能:
- 面取り・R(丸め)の高水準API(複雑形状にも適用しやすい)
- 配列・変換(ミラー・極配置・オフセット・スイープ等)の便利関数
- プロファイル生成(2D/3Dの輪郭処理、厚み付け、パス操作)
- メカ系補助(ねじ山・溝、機構パーツの作図補助。※用途により別ライブラリも有力)
- メリット:コード量が激減、可読性向上、失敗しにくいジオメトリを得やすい
- デメリット:依存関係が増える(配布時は相手にもBOSL2が必要)、バージョン差の影響を受ける
「自動で使う?」— 基本はユーザー指定です
- OpenSCADは自動的に外部ライブラリを読み込みません。
- 使うにはコード先頭で
use <BOSL2/std.scad>;などを明示します。 - 私(GPT-5)は“勝手に”BOSL2へ依存させるのではなく、原則ユーザーの希望に従います。
- 「BOSL2を使ってOK」「標準命令のみで」など、指示をいただけると判断が明確です。
- 指定が無い場合は、移植性重視で標準命令のみ→必要に応じて「BOSL2版も提案」という流れにします。
使い方のイメージ
// 例: BOSL2 を使った角Rのボックス
use <BOSL2/std.scad>;
// 内寸w×d×h、壁厚tで、外側にRを付けた箱を作る雰囲気
w=40; d=30; h=20; t=2; r=2;
difference(){
// rbox() は角Rの直方体(BOSL2)
rbox([w+2*t, d+2*t, h], r=r, anchor=CENTER);
translate([0,0,t]) rbox([w, d, h], r=max(0,r-t), anchor=CENTER);
}
- 同等の処理を標準命令のみで書くと、
minkowski()やブーリアンの組み合わせで行数・計算量が増えがちです。 - BOSL2なら簡潔・安定に書けるケースが多いです。
他に有名なライブラリ
- MCAD:古参の汎用部品・幾何ツール。
- NopSCADlib:実製造寄り(ねじ・ベアリング・押出材など実パーツが充実、プロジェクト構成も学びやすい)。
- dotSCAD:モジュール指向でモダンな部品群。
- threads.scad / screw libraries:ねじ・タップ専用。用途特化で精密。
どちらを選ぶかの目安
- スピード重視・複雑形状の丸め/面取りが多い → BOSL2推奨
- 既存プロジェクトがMCAD/NopSCADlibで統一 → それに合わせる
- 配布相手の環境に依存させたくない/教育用 → 標準命令のみ
- 規格部品を多用 → NopSCADlib等の“実部品カタログ系”が便利
依頼テンプレ(決め方を明示)
- 「BOSL2使用:可/不可」
- 「標準命令のみでまず書いて、BOSL2版も別ファイルで欲しい」
- 「ねじ・面取りはライブラリOK、その他は標準命令で」
- 「配布先にBOSL2が無いので、依存なしで」
ご希望があれば、同じ設計を「標準版」と「BOSL2版」の2本立てで出し、メリデメやレンダ時間の違いも比べられるようにします。
CGALエラーとは?
「CGALエラー原因の説明なども得意です」とのことですが、これは、OpenSCADで発生するエラーですか
GPT 5 Thinkingの回答
はい。CGALエラーはOpenSCADのレンダリング(F6)工程で発生する典型的なエラーです。
OpenSCADは形状のソリッド化・ブーリアン演算に CGAL(Computational Geometry Algorithms Library)を内部利用しており、幾何が不正だとコンソールにエラー/警告が出ます(F5プレビューは通っても、F6で落ちることがあります)。
代表的な症状と原因
- Non-manifold / 2つのソリッドが線・点だけで接している
- 例:厚み0の面が生じる、立体同士がエッジでしか繋がっていない
- Self-intersection(自己交差)
- 例:
polygon()やoffset()後の輪郭が交差している、回転体/押し出しでねじれ
- 例:
- Overlapping coplanar faces(同一平面の重なり)
- 例:
union()前提で同じ面がピッタリ重なってZ-fighting的な形状不定
- 例:
- Invalid 2D polygon(未閉ループ・頂点順序不正・重複点)
- Too thin / 零厚
- 例:
difference()で削りすぎて面だけが残る、linear_extrude(height=0)等
- 例:
よく見るメッセージ例
CGAL error in CGAL_Nef_polyhedron3(): self-intersection!Object may not be a valid 2-manifold and may need repair!The given mesh is not closed!ERROR: polygon() points must be in the same plane!
回避・修正のコツ
- 微小オフセット(ε):差分や和の対象に ±0.01〜0.1 mm ほど余裕を入れる
- 例:穴抜き用シリンダの高さを母材より +0.1mm 長くする
- ブーリアン順序の見直し:
union→difference→intersectionの段階化 - 厚みを確保:押し出しは
height > 0、差分で面だけ残さない - 2Dの健全化:
polygon()の頂点を 反時計回りに、重複点・交差を排除 - 分割統治:複雑な
minkowski()やhull()は部分ごとにレンダ→最後に合成 - $fnの適正化:過剰な高解像度は複雑化と計算負担を招く
GPT-5(Thinking)でできること
- ログの読み解き:エラーメッセージから“どの演算・どの形状”が怪しいか特定
- 最小再現コードの抽出と修正案(εの付与、順序変更、形状分割)
- 2Dポリゴンの検証:頂点順序の修正、自己交差回避の書き換え例の提示
- BOSL2/標準命令での置換案:
minkowski依存の軽減、rbox等で安定化
必要なら、該当の.scad(問題箇所の抜粋でもOK)とOpenSCADコンソールのログを貼ってください。
どの演算で壊れているかを特定し、即修正版をお返しします。
薄肉部の判断方法
どの箇所が薄肉か、GPT-5で判断できますか
GPT 5 Thinkingの回答
短く言うと――「ある程度までは可能」です。
ただし、やり方と精度は入力の種類で変わります。
1) .scad(OpenSCADソース)からの判定
- 得意なのは“推定”やレビューです。
- 壁厚変数(
tなど)の値、差分(difference())で生じる薄い“皮”、面取り/フィレットで刃先状になる箇所、穴・溝の間隔などを読み解き、薄肉になりやすい箇所を指摘できます。 - 「この切り欠きと外壁の間が
t-0.5になっている」「minkowski後の差分で零厚の可能性」など論理的な根拠を添えて改善案(寸法式、ブーリアン順序、εの付与)を提示できます。
- 壁厚変数(
- ただし、正確な“最小肉厚の数値地図”までは出せません(OpenSCAD自体に厚み解析機能が無いため)。
→ 代わりに設計ルールチェック(例:FDM 0.4ノズルなら壁厚は≥0.8–1.2 mm推奨、橋渡し長さやオーバーハング角の限界)で危険域を網羅的に洗い出します。
2) STL(メッシュ)からの判定
- 量的(数値)に判定できます。
- メッシュの近接面間距離をサンプリングし、最小肉厚・閾値未満の領域をリスト化。
- 断面スライスごとの薄肉ヒートマップや、薄肉箇所の座標/面IDのCSVを作れます。
- これはこちら側で自動解析(スクリプト)が可能です。
STLを添付いただければ、“最小厚み○mm、危険領域はここ”というレポートを即返せます。
3) 実務での併用法(おすすめ)
- 最初は .scad をレビュー(設計意図・式・公差を整える)
- STLを書き出して厚み解析(数値で安心を取る)
- スライサのプレビューでも二重チェック
- FDMならノズル幅×壁数で実効壁厚が決まるので、プレビューで出力されない細片=実質“薄肉・消失”の警告になります。
4) 薄肉の“典型パターン”と対処例
- 外周tの箱に、内側から大穴 → 隅部にt未満のリブが残りがち
- 対処:穴のオフセット管理、最小厚み制約を式に入れる(
max(t, …))
- 対処:穴のオフセット管理、最小厚み制約を式に入れる(
- minkowski+differenceの組み合わせ → エッジに零厚
- 対処:
ε(=0.05〜0.2mm)の余裕、丸め/面取りの順序見直し
- 対処:
- フィレットで狭い谷間 → ノズル幅未満で未出力
- 対処:フィレット半径の下限をノズル幅×1〜1.5に設計
5) 依頼の出し方(コピペOK)
- 「用途(FDM 0.4/レジン等)・許容最小厚み(例:≥1.0 mm)・ファイル(.scadやSTL)」を添付
- 期待アウトプットを明記:
- 「薄肉候補の指摘(.scadレビュー)」
- 「STL厚み解析レポート(最小厚み・閾値未満の座標CSV・スクショ)」
- 「修正済み.scad(最小厚み制約を式で保証)」
結論
- .scadだけでも“どこが薄くなり得るか”は高精度に指摘できます(設計ロジックから)。
- STLがあれば、定量(mm)で確定できます。
どちらでも対応します。もし今すぐチェックしたいモデルがあれば、.scadやSTLを添付してください。
こちらで薄肉候補の洗い出し→修正案までまとめて返します。

