HEXA BLOG

いいモノづくり道

HEXA BLOGいいモノづくり道2014.1.15

OpenSCAD

こんにちはKayanuma.です。

3Dプリントのネタを探しにいつものhttp://www.thingiverse.com/
を見てみました。
すると拡張子が.SCADといった見慣れないフォーマットで提供されているものがありました。
調べてみるとOpenSCADというソフトのファイルらしいということがわかりました。

 

・OpenSCADとは
サイトはこちら
OpenSCADは非対話型のCADです。
非対話型でどうするのかというと、形状をテキストで書いていきます
具体的にはCSGと呼ばれる方法で立方体や球、円柱などの単純な形状をもとに合成していきます。

MayaやライトウエーブのようにGUIで操作するソフトに慣れていると奇異に感じますが、昔からある方法です。
そういえば初期のレイトレーシングソフトなどはこの方式が主流で、思った形状を表現するのにかなり苦労した思い出が・・

 OpenSCADを立ち上げた様子です。

20140115_00

左側にコマンドなどを書くテキストエディタがあり、右にはそれをレンダリングするウインドウとメッセージを表示する領域があります。
レンダリングウインドウの視点はマウスで操作でき、
左クリック=回転
右クリック=移動
ホイール=拡大
になっています。
日本語情報は何故かあまりなく、仕方ないので
http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
にあるマニュアルをGoogle翻訳しながら恐る恐るエディタに
cube(size = [1,2,3], center = true);
などと入れてみます。

20140115_01

なるほどなるほど。縦1横2高さ3がの立方体ができました。
CAD系なのでZ軸が高さになりますね。
center = true は原点を中心にすることを示しているのでしょう。

次に球なぞを出してみます。
sphere(r=10,$fn=100);

20140115_02
rは半径、$fnはプリミティブの解像度を指定しています。
$fnを1000ぐらいにすると結構待たされます。むむ。

(※ビデオボードとの相性が悪いのか、部分的に黒く表示されています)

プリミティブの出し方はわかったのでCSGっぽいことをしてみましょうか。
仕入れたばかりの知識でプリミティブを二つ出します。
cube(size = [10,15,20], center = false);
sphere(r=10,$fn=30);

20140115_03

これを
intersection(){}
で囲みます。
すると

20140115_04

のように重なっていない部分が取り除かれた形状になります。
逆に
difference(){}

20140115_05
で囲むと重なっている部分が取り除かれた形状になりました。
なるほどねー。

さらにこんなことができます
for(i=[0:5]){
    translate([i*10,0,0])
    sphere(r=3);
}
20140115_06
ここを見ている皆さんにはむしろ馴染み深いのではないでしょうか。モデリングに変数や制御文が使えます。
関数もあって、
for(i=[0:36]){
    translate([sin(10*i)*30,cos(10*i)*30,0])
    cube(size = [3,3,3], center = true);
}

20140115_07
なんてこともできますよ。
ローテイト命令を組み合わせて向きを揃えました。

20140115_08

ではこれらプログラム制御やCSG演算を組み合わせて見ます

difference(){
    translate([0,0,-10])
        cylinder(h = 10, r=31.5,$fn=36);
    for(i=[0:36]){
        translate([sin(10*i)*30,cos(10*i)*30,0])
            rotate(a=i*-10,v=[0,0,1])
                cube(size = [3,3,3], center = true);
    }
}
20140115_09
プログラム制御で円形に並べたキューブで
円柱をくりぬいてみました。
GUI操作だとわりと面倒な作業ですが、指示を与えるだけで作成できてしまいます。
なにより数値で指定できるので正確な形状にできるのがいいですね。
コピペで数値を変化させれば対話形式よりも簡単にバリエーションが作れます。

まぁ、これで人体をつくれといわれたら逃亡しますが、
歯車のようなちょっとした部品を正確に作るのには重宝しそうです。
プログラム機能を極めれば芸術的な幾何学形状が得られたりするかもです。

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE