本物の OpenSCAD
構文をまねたインタプリタではなく、OpenSCAD 本体(Manifold カーネルを使う2025年の開発版スナップショット)を WebAssembly にコンパイルしたものです。module、function、再帰、リスト内包表記、include と use はデスクトップ版とまったく同じように動きます。
コードを貼り付けるか、.scad ファイルやプロジェクトフォルダごとドロップしてください。本物の OpenSCAD がブラウザ上で動き、入力が止まってから0.5秒でモデルを描画します。color()、% の背景表示、# のハイライトは、デスクトップ版で F5 を押したときと同じ見え方です。インストールも登録も不要で、ファイルはアップロードされません。
構文をまねたインタプリタではなく、OpenSCAD 本体(Manifold カーネルを使う2025年の開発版スナップショット)を WebAssembly にコンパイルしたものです。module、function、再帰、リスト内包表記、include と use はデスクトップ版とまったく同じように動きます。
最後のキー入力から0.5秒でモデルを描き直します。ボタンは不要です。パラメーターパネルは Customizer のコメントを読み取り、スライダーを動かすと値がソースコードに書き戻されます。
color() はブーリアン演算を経ても面に残り、difference() で削られた面は緑色で表示されます。% は半透明のグレー、# は半透明のピンクで描きます。$preview は true です。
フォルダごとドロップすれば、include と use が実際のフォルダ構成どおりに解決されます。MCAD、Write.scad、BOSL2 を内蔵しており、使うと自動で読み込まれます。文字は OpenSCAD 付属の Liberation フォントで描き、ほかのフォントは .ttf をプロジェクトに入れれば使えます。
「Copy link」で今のコードを URL に入れられ、リンクを開いた人は同じモデルを見られます。AI アシスタントが書いたコードにも、こうしたプレビューリンクを付けてもらえます。
「Export STL」は画面上の三角形をそのまま保存します。デスクトップ版でレンダー後に書き出すのと同じメッシュで、そのままスライサーに入れられます。Fusion、SolidWorks、FreeCAD で使うなら、同じページでモデルを本物の B-rep の STEP に作り直すこともできます。詳しくは OpenSCAD to STEP(英語ページ)へ。
このコードを描画した状態で開きます。1行変えると0.5秒後に描き直します。
// A bracket: a plate with two slots and a stiffening rib
$fn = 48;
difference() {
union() {
cube([60, 30, 4]);
translate([0, 0, 4]) cube([60, 4, 16]);
}
for (x = [12, 48]) translate([x, 17, -1]) hull() {
cylinder(h = 6, d = 5);
translate([0, 6, 0]) cylinder(h = 6, d = 5);
}
}
%translate([-5, -5, 0]) cube([70, 40, 1]); // the sheet it mounts on, shown only
#translate([30, 2, 10]) rotate([-90, 0, 0]) cylinder(h = 4, d = 3); // a pin, highlightedサンプルコードで開く →どれもブラウザで描画された状態で開きます。Customizer のスライダーで寸法を変えてみてください。登録不要です。
いちばんよく使う書き方を、使い方とつまずきやすい点とあわせてまとめました。「オンラインで開く」を押すと、例がビューアで描画された状態で開きます。数字を1つ変えて、描き直されるのを確かめてみてください。
cube · cylinder · sphere直方体、円柱、球。cube は角の1つが原点に、cylinder は底面の中心が原点に、sphere は中心が原点に置かれます。cube と cylinder は center = true で原点を中心に置けます。cylinder で d1 ≠ d2 にすると円錐台になり、$fn は円の分割数です。
オンラインで開く →translate · rotate · mirror移動、回転(単位は度。X、Y、Z の順に回転)、鏡像。変換は物体の前に書き、物体に近いものから先に効きます。translate(…) rotate(…) cube() は回転してから移動します。mirror は反転するだけでコピーしないので、元の形も残すならもう一度書きます。
オンラインで開く →difference() · union() · intersection()ブーリアン演算。difference は最初の物体から、後ろに書いたすべての物体を引きます。穴、溝、ポケットはこれで作ります。削る物体は表面ぴったりで止めず、両側に 1 mm ずつはみ出させてください。ぴったりだとプレビューにちらつく面が残り、レンダーでエラーになることもあります。union は合体、intersection は重なった部分だけを残します。
オンラインで開く →hull()中の物体をまとめて1つの凸包で包みます。円柱4本を hull すると角の丸い板、2本なら長穴になります。外側にしか膨らまないので、へこんだ形は difference と組み合わせます。
オンラインで開く →minkowski()2つ目の物体を、1つ目の物体の表面全体に沿って動かします。箱に小さな球を組み合わせると、すべての辺が丸まった箱になります。結果はどの軸方向にも球の直径ぶん大きくなるので、箱をその分だけ先に小さくしておきます。
オンラインで開く →linear_extrude()2D の図形(square、circle、polygon、text)を Z 軸方向に引き伸ばして立体にします。twist は伸ばしながらねじる角度(度)、scale は上面を縮小・拡大します。circle に $fn = 6 を指定すると六角形です。
オンラインで開く →rotate_extrude()2D の断面を Z 軸のまわりに1回転させて、カップ、フランジ、プーリーのような回転体を作ります。断面は部品を半分に切ったときの片側の輪郭で、すべて Y 軸の右側(x ≥ 0)に置く必要があります。
オンラインで開く →for形を繰り返します。ボルト穴の円配置や、通気穴の列に使います。範囲 [開始 : 刻み : 終了] は終了値を含むので、[0 : 5] は 0 から 5 までの6個です。difference の中に入れると、すべての穴を一度にあけます。
オンラインで開く →module形状をパラメーター付きの部品にまとめ、関数のように呼び出して使います。パラメーターに既定値を付けておけば、呼ぶときは変えたいものだけ書けば済みます。
オンラインで開く →// [min : step : max]ファイル先頭の変数の後ろに // [20:5:120] のようなコメントを書くと、ビューアのパラメーターパネルにスライダーが出ます。すぐ上の行のコメントがその説明になり、/* [サイズ] */ でグループを作れます。スライダーを動かすと、ソースの数字も一緒に変わります。
オンラインで開く →text()文字入れ。text() は 2D の輪郭を作ります。linear_extrude で押し出せば浮き文字、部品から引けば彫り文字です。halign と valign を "center" にすると、置いた点を中心にそろえます。内蔵フォントは Liberation で、日本語の文字は入っていません。日本語を使うにはフォントファイルを一緒に入れる必要があります。下のよくある質問を見てください。
オンラインで開く →どれもデスクトップ版の OpenSCAD でも同じように使えます。
| デスクトップ版 OpenSCAD | このビューア | |
|---|---|---|
| インストール | インストーラーをダウンロード | Webページを開くだけ |
| コードを実行するもの | OpenSCAD | 同じ OpenSCAD を WebAssembly にコンパイルしたもの |
| プレビュー | F5:OpenCSG | Manifold による実際の形状。色分けは F5 の決まりどおり |
| 複数ファイルのプロジェクト | メインファイルを開く | フォルダをドロップ |
| 共有 | ファイルを送る | コードの入ったリンク1本 |
| 書き出し | STL / 3MF / OFF / AMF | STL(プレビューの三角形そのもの)、STEP(本物の B-rep) |
| アニメーション($t) | あり | なし |
コードを URL に入れておけば、ビューアはそれを読み込んですぐ描画します。ファイルも登録も要りません。これは AI アシスタントのための機能です。ChatGPT、Gemini、Claude に OpenSCAD を書いてもらうときは、Forgent3D のプレビューリンクも付けるよう頼んでください。開けばモデルが描画済みで、パラメーターを動かせて、納得したら STEP を書き出せます。上の「サンプルコードで開く」ボタンがまさにこのリンクです。
リンクの形式
https://app.forgent3d.com/scad#code=<CODE>AI に渡すプロンプト
OpenSCAD で ___ を書いて、Forgent3D のプレビューリンクもください:https://app.forgent3d.com/scad#code=<コードを encodeURIComponent でエンコードしてここに>コマンド1行で、エージェントがあなたのマシン上で本物の OpenSCAD を使って .scad を描画します。バウンディングボックス、体積、echo() の値を読み取り、三面図のスナップショットを自分で確認し、STL / 3MF を書き出して、上のようなコード入りリンクを返します。OpenSCAD のインストールは不要です。
npx skills add forgent3d/forgent3d-skillsはい。このビューアは OpenSCAD 本体を WebAssembly にコンパイルしてブラウザで動かしています。コードを書く、描画する、パラメーターを動かす、STL を書き出す、のすべてがこのページで完結し、CAD ソフト用の STEP も書き出せます。インストールも登録も不要です。
はい。コードを実行しているのは OpenSCAD 本体(Manifold 形状カーネルを使う2025年の開発版スナップショット)で、WebAssembly にコンパイルしてブラウザ上で動かしています。言語の挙動、同梱ライブラリ、Customizer のコメントはデスクトップ版と同じです。
OpenSCAD のプレビュー(F5)の決まりです。difference() で引いた物体が残した面は「裏面の色」で表示され、標準の配色では緑色です。ビューアもこの決まりに従います。color() を指定した物体はその色のまま表示されます。
はい。ダウンロードしたフォルダごとドロップすれば、include されているファイルも一緒に読み込まれます。MCAD、Write.scad、BOSL2 は内蔵済みです。
ビューアに内蔵しているのは OpenSCAD 付属の Liberation フォントで、日本語の文字が入っていません。フォントにない文字は空の四角で描かれます。日本語フォントの .ttf か .otf ファイルを .scad と同じフォルダに入れて一緒にドロップし、コードに use <フォントファイル名.ttf> と書いて、text() で font = "フォント名" を指定してください。フォント名はファイル名ではなくフォント自体の名前で、たとえば IPAexゴシック(ipaexg.ttf)なら font = "IPAexGothic" です。.ttc 形式のフォント(Windows のメイリオや游ゴシックなど)は読み込めません。
ありません。OpenSCAD はブラウザで動いていて、.scad ファイルはアップロードされません。リンクの # より後ろのコードもサーバーには送られません。
一般的なモデルなら1秒以内に描画されます。ループを展開した時点でノードが150,000を超えるモデルはブラウザでは構築できず、その旨を表示します。時間のかかる描画はいつでも止められます。
プレビューは OpenSCAD 自身の描画で、円は $fn 個の面でできています。STEP を書き出すときは CAD カーネルがすべての基本形状とブーリアン演算を正確な形状として作り直すので、円は本物の円柱になります。書き出した STL はプレビューの三角形そのものです。色はプレビューにしかなく、STL にも STEP にも含まれません。
ビューアに貼り付けるか、https://app.forgent3d.com/scad#code=<コード> の形のリンクを出してもらってください。開くとモデルが描画済みで表示されます。