mcpField
O
openscad

openscad

github.com/mitsuhikoクリエイティブ・メディア3.2k1.0k 回インストール4 週間前に更新
リポジトリ

openscad について

openscad は、OpenSCAD の 3D モデルを作成、検証、プレビュー、エクスポートするスキルです。パラメーターの抽出や、STL 出力前の多角度での目視確認に対応します。

主な機能

  1. 01OpenSCAD の構文検証
  2. 02カスタマイズ可能なパラメーターの抽出
  3. 03単一・複数アングルのプレビュー
  4. 04パラメーター指定付き STL 出力
  5. 05多角度での目視検証フロー

活用シーン

  1. 01複数の角度からモデルを確認
  2. 023D プリント用のパラメトリックモデルを出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mitsuhiko/agent-stuff --skill openscad

インストール後、Claude Code で/openscadを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
parametric_box.scad
phone_stand.scad
tools/
common.sh
export-stl.sh
extract-params.sh
multi-preview.sh
preview.sh
render-with-params.sh
validate.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 ファイルを作成または編集した後は、次の手順を行ってください。

  1. multi-preview.sh を使用して複数の角度からプレビューを生成します。
  2. read ツールを使用して生成された画像をそれぞれ表示します。
  3. 複数の視点から問題がないか確認します。
    • 前面/背面:対称性、各部の形状、プロポーションを確認します
    • 左側面/右側面:奥行きと側面の輪郭を確認します
    • 上面:上部の形状が正しいことを確認します
    • アイソメトリック:全体の形状を検証します
  4. 必要に応じて修正します。見た目に問題があれば、コードを修正して再検証します。

これにより、構文検証だけでは検出できない次のような問題を発見できます。

  • 法線の反転や、裏返った形状
  • 各部の位置ずれや、不正なブーリアン演算
  • 意図したデザインと異なるプロポーション
  • 欠落した形状や、宙に浮いた形状
  • 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 で公開するには、通常、次のものが必要です。

  1. export-stl.sh でエクスポートした STL ファイル
  2. プレビュー画像(少なくとも見やすいアイソメトリックビューを 1 枚)
  3. カスタマイズ可能なパラメーターの説明

メタデータを含む 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);

コメント