OpenSCADの使い方
オブジェクト操作
- 3Dオブジェクト生成
- 直方体
cube([8,15,20]); - 球体
sphere(10); - 柱や錐 cylinder
cylinder(h=20, r=8); // 円柱 cylinder(h=20, r1=8, r2=8); // 円柱 cylinder(h=20, r1=10, r2=0); // 円錐 cylinder(h=20, r1=8, r2=8, $fn=5); // 多角柱 cylinder(h=20, r1=10, r2=0, $fn=5); // 多角錐 - 頂点列と面 polyhedron
CubePoints=[[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]] CubeFaces=[[,,,],[,,,],[,,,],[,,,],[,,,],[,,,]] // 時計回り頂点番号 polyhedron( CubePoints, CubeFaces );
- 直方体
- 移動 translate
translate([20,0,0]) オブジェクト
- 色指定 color
color([0.5,0,0]) オブジェクト color("cyan") オブジェクト module my_red() color([200/255,120/255,120/255]) children(); % オブジェクト // 半透明グレー - 合成(演算)
- OR(結合) union
union(){オブジェクト;オブジェクト;} - 差分(減算) difference
difference(){オブジェクト;オブジェクト;} - AND(交差) intersection
intersection(){オブジェクト;オブジェクト;}
- OR(結合) union
- 回転 rotate
rotate(a=[0,20,0]) オブジェクト
- 拡大縮小 scale
scale(v=[1,1,0.5]) オブジェクト
- サイズ変更 resize
resize(newsize=[1,1,0.5]) オブジェクト resize([2,2.0]) オブジェクト // 0は元のまま
- 鏡像 mirror
mirror(v=[x,y,z]) オブジェクト
- アフィン変換 multmatrix
multmatrix(m=[[,,,],[,,,],[,,,],[,,,]]) オブジェクト
- ミンコフスキ和 minkowski
minkowski() オブジェクト
- 凸包 hull
hull() オブジェクト
- 2Dオブジェクト生成
- 正方形 square
square(20) square([x,y]) - ポリゴン polygon
polygon(points=[[,],[,],[,],[,],[,],[,]]);- points
- テキスト text
text("テキスト", 20)- size
- font
font = str("Liberation Sans", ":style=Bold")- MS PGothic, MS Gothic, HGPGothicM
- spacing
- halign
- valign
- $fn
- 正方形 square
- 2Dオブジェクト操作
- 内部または外部に図形生成 offset
offset(r=10) 2Dオブジェクト // 外側(角円) offset(delta=10) 2Dオブジェクト // 外側 offset(r=-10) 2Dオブジェクト // 内側(角円) offset(delta=-10) 2Dオブジェクト // 内側- r
- delta
- 塗りつぶし fill(開発スナップショット版が必要)
fill() 2Dオブジェクト
- 内部または外部に図形生成 offset
- 押し出し(2Dから3D)
- 線形 linear_extrude
linear_extrude(height=60, twist=90, slices=60) 2Dオブジェクト linear_extrude(10) 2Dオブジェクト linear_extrude(height=60, scale=3) 2Dオブジェクト // 錐的に広がる- height
- scale
- twist
- slices
- center
- 回転 rotate_extrude(断面形状からドーナッツオブジェクト生成)
rotate_extrude(convexity=10) 2Dオブジェクト rotate_extrude(angle=270, convexity=10) 2Dオブジェクト- angle
- convexity
- $fn
- 線形 linear_extrude
- 投影(3Dから2D) projection
%import("projection.stl"); projection(cut=true)- cut
- サーフェス surface
- テキストファイルからサーフェス生成
surface(file="surface.dat", center=true, convexity=5); %translate([0,0,5]) cube([10,10,10], center=true); - 画像からサーフェス生成(PNG画像のグレー値を高さに変換)
surface(file = "file.png", center = true, invert = false);
- テキストファイルからサーフェス生成
コーディング
- モジュール module
module 名前() { ... }- 任意モジュール指定
children() - 任意モジュールインデックス指定
for (i = [0:$children-1]) children(i);
- 任意モジュール指定
- コメント
// コメント /* コメント */
- 繰り返し for
for (i = [-10:10]) for (i = [-10:3:10]) for (c = "String") c
- ローカル変数代入 let
let(x=値)
- 特殊変数
- $fa フラグメントの最小角度(デフォルト12)
- $fs フラグメントの最小サイズ(デフォルト2)
- $fn フラグメントの数(デフォルト0、128以下、推奨50未満)
- $t アニメーション
- $vpr レンダリング時ビュー:回転
- $vpt レンダリング時ビュー:平行移動
- $vpf レンダリング時ビュー:FOV(Field of View)
- $vpd レンダリング時ビュー:カメラ距離
- 検索 search
search
- アサート assert
assert(論理式); assert(論理式,メッセージ);
- コンソール出力 echo
echo("val: ", x, y) - 関数 function
function f1(x, y) = echo("f1: ", x, y) x * y + 1; r1 = f1(3, 5); function f2(x) = let(y = pow(x, 3)) echo("f2: ", y) y; r2 = f2(4); function result(x) = echo("f3: ", x) x; function f3(x) = result(x * x - 5); r3 = f3(5); - リスト内包表記
polygon([for (i=[0:num-1], a=i*360/num) [ r*cos(a), r*sin(a) ]]);
- リスト
concat(v1,v2,v3);
- 再帰
function factorial(n) = n == 0 ? 1 : factorial(n - 1) * n;
- 乱数
rands(min_value,max_value,value_count); rands(min_value,max_value,value_count,seed_value);
- 小数を整数に丸める
int = round(float)
基本操作
- プレビュー(描画)
- F5キー または メニューDesign/Preview
- レンダリング(描画)
- F6キー またはメニューDesign/Render
- STLファイル書き出し
- レンダリング(F6キー)後に、F7キー またはメニューFile/Export / Export as STL
- テキストエディアでの数値対話的変更
- コード中の数値の後にカーソルを置き、ALT+上下矢印で数値を増減する、オブジェクトは自動的イン再描画(レンダリング)される
- ALT+左右矢印で数値の桁を移動する
その他
- Export as Imageの背景色を変えるには、
C:\Program Files\OpenSCAD\color-schemes\render\nature.jsonを複製して編集し、 OpenSCADを起動して、Edit/Preferencesで3D Viewで編集したColor schemeを指定する