openscad について
openscad は、OpenSCAD の 3D モデルを作成、検証、プレビュー、エクスポートするスキルです。パラメーターの抽出や、STL 出力前の多角度での目視確認に対応します。
主な機能
- 01OpenSCAD の構文検証
- 02カスタマイズ可能なパラメーターの抽出
- 03単一・複数アングルのプレビュー
- 04パラメーター指定付き STL 出力
- 05多角度での目視検証フロー
活用シーン
- 01複数の角度からモデルを確認
- 023D プリント用のパラメトリックモデルを出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mitsuhiko/ agent-stuff --skill openscadインストール後、Claude Code で/openscadを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/parametric_box.scadphone_stand.scadtools/common.shexport-stl.shextract-params.shmulti-preview.shpreview.shrender-with-params.shvalidate.sh詳細
OpenSCAD スキル
OpenSCAD の 3D モデルを作成、検証、エクスポートします。パラメーターのカスタマイズ、複数の角度からのビジュアルプレビュー、MakerWorld などの 3D プリントプラットフォーム向けの STL エクスポートに対応しています。
前提条件
OpenSCAD をインストールする必要があります。Homebrew でインストールします。
brew install openscad
ツール
このスキルは tools/ ディレクトリ内の複数のツールを提供します。
プレビューの生成
# Generate a single preview image
./tools/preview.sh model.scad output.png [--camera=x,y,z,tx,ty,tz,dist] [--size=800x600]
# Generate multi-angle preview (front, back, left, right, top, iso)
./tools/multi-preview.sh model.scad output_dir/
STL のエクスポート
# Export to STL for 3D printing
./tools/export-stl.sh model.scad output.stl [-D 'param=value']
パラメーターの抽出
# Extract customizable parameters from an OpenSCAD file
./tools/extract-params.sh model.scad
検証
# Check for syntax errors and warnings
./tools/validate.sh model.scad
ビジュアル検証(必須)
OpenSCAD モデルを作成または変更した後は、必ず視覚的に検証してください。
OpenSCAD ファイルを作成または編集した後は、次の手順を行ってください。
multi-preview.shを使用して複数の角度からプレビューを生成します。readツールを使用して生成された画像をそれぞれ表示します。- 複数の視点から問題がないか確認します。
- 前面/背面:対称性、各部の形状、プロポーションを確認します
- 左側面/右側面:奥行きと側面の輪郭を確認します
- 上面:上部の形状が正しいことを確認します
- アイソメトリック:全体の形状を検証します
- 必要に応じて修正します。見た目に問題があれば、コードを修正して再検証します。
これにより、構文検証だけでは検出できない次のような問題を発見できます。
- 法線の反転や、裏返った形状
- 各部の位置ずれや、不正なブーリアン演算
- 意図したデザインと異なるプロポーション
- 欠落した形状や、宙に浮いた形状
- Z ファイティングや、重なり合うサーフェス
複数の角度から見て正しいことを視覚的に確認せずに、OpenSCAD モデルを納品してはいけません。
ワークフロー
1. OpenSCAD モデルの作成
カスタマイズ可能なパラメーターを先頭に記述して、OpenSCAD コードを作成します。
// Customizable parameters
wall_thickness = 2; // [1:0.5:5] Wall thickness in mm
width = 50; // [20:100] Width in mm
height = 30; // [10:80] Height in mm
rounded = true; // Add rounded corners
// Model code below
module main_shape() {
if (rounded) {
minkowski() {
cube([width - 4, width - 4, height - 2]);
sphere(r = 2);
}
} else {
cube([width, width, height]);
}
}
difference() {
main_shape();
translate([wall_thickness, wall_thickness, wall_thickness])
scale([1 - 2*wall_thickness/width, 1 - 2*wall_thickness/width, 1])
main_shape();
}
パラメーターコメントの形式:
// [min:max]- 数値の範囲// [min:step:max]- ステップ付きの数値の範囲// [opt1, opt2, opt3]- ドロップダウンの選択肢// Description text- 説明文
2. モデルの検証
./tools/validate.sh model.scad
3. プレビューの生成
モデルを視覚的に検証するため、プレビュー画像を生成します。
./tools/multi-preview.sh model.scad ./previews/
これにより、複数の角度からの PNG 画像が生成されます。read ツールを使用して表示してください。
4. STL へのエクスポート
./tools/export-stl.sh model.scad output.stl
# With custom parameters:
./tools/export-stl.sh model.scad output.stl -D 'width=60' -D 'height=40'
カメラ位置
プレビューでよく使われるカメラアングル:
- アイソメトリック:
--camera=0,0,0,45,0,45,200 - 前面:
--camera=0,0,0,90,0,0,200 - 上面:
--camera=0,0,0,0,0,0,200 - 右側面:
--camera=0,0,0,90,0,90,200
形式:x,y,z,rotx,roty,rotz,distance
MakerWorld への公開
MakerWorld で公開するには、通常、次のものが必要です。
export-stl.shでエクスポートした STL ファイル- プレビュー画像(少なくとも見やすいアイソメトリックビューを 1 枚)
- カスタマイズ可能なパラメーターの説明
メタデータを含む model.json の作成も検討してください。
{
"name": "Model Name",
"description": "Description for MakerWorld",
"parameters": [...],
"tags": ["functional", "container", "organizer"]
}
例:ワークフロー全体
# 1. Create the model (write .scad file)
# 2. Validate syntax
./tools/validate.sh box.scad
# 3. Generate multi-angle previews
./tools/multi-preview.sh box.scad ./previews/
# 4. IMPORTANT: View and validate ALL preview images
# Use the read tool on each PNG file to visually inspect:
# - previews/box_front.png
# - previews/box_back.png
# - previews/box_left.png
# - previews/box_right.png
# - previews/box_top.png
# - previews/box_iso.png
# Look for geometry issues, misalignments, or unexpected results.
# If anything looks wrong, go back to step 1 and fix it!
# 5. Extract and review parameters
./tools/extract-params.sh box.scad
# 6. Export STL with default parameters
./tools/export-stl.sh box.scad box.stl
# 7. Export STL with custom parameters
./tools/export-stl.sh box.scad box_large.stl -D 'width=80' -D 'height=60'
忘れないでください:ビジュアル検証の手順を省略しないでください。寸法の誤り、ブーリアン演算のエラー、形状の反転など、多くの問題は、レンダリングされたモデルを実際に確認して初めて分かります。
OpenSCAD クイックリファレンス
基本形状
cube([x, y, z]);
sphere(r = radius);
cylinder(h = height, r = radius);
cylinder(h = height, r1 = bottom_r, r2 = top_r); // cone
変換
translate([x, y, z]) object();
rotate([rx, ry, rz]) object();
scale([sx, sy, sz]) object();
mirror([x, y, z]) object();
ブーリアン演算
union() { a(); b(); } // combine
difference() { a(); b(); } // subtract b from a
intersection() { a(); b(); } // overlap only
応用
linear_extrude(height) 2d_shape();
rotate_extrude() 2d_shape();
hull() { objects(); } // convex hull
minkowski() { a(); b(); } // minkowski sum (rounding)
2D 形状
circle(r = radius);
square([x, y]);
polygon(points = [[x1,y1], [x2,y2], ...]);
text("string", size = 10);