OpenSCADによる3Dプリンタモデルの設計

はじめに

3Dプリンタ用のモデル、どうやって作っていますか?

僕はFusion360も使いますが、ここぞというときにはOpenSCADを使っています。

www.openscad.org

 

OpenSCADとは

OpenSCADはプログラムで3Dモデルを作成する環境です。プログラム言語で図形を定義することでいくつかのメリットがあります。

  • 変数が扱える
  • Gitなどのソースコード管理ツールと相性が良い
  • パーツのモジュール化などが用意

一方で、GUIによる編集ができないので直感的なモノ作りは難しいです。

僕は雑な形状をまずFusion360などGUIのCADで作ったのちに、OpenSCADを使うことが多いです。

ちょっとデモ

cube([1,1,1]);

 f:id:inajob:20190216181314p:plain

 こんな風に、立方体が作れます。

2次元の形状を定義することもできます。

square([10,10]);
circle(r=5);

f:id:inajob:20190216181606p:plain

 さらにこれを引き延ばせます

linear_extrude(height=5){
union(){
square([10,10]);
circle(r=5);
}

f:id:inajob:20190216181806p:plain

offsetを指定すると角が丸くなります

linear_extrude(height=5){
offset(3){
union(){
square([10,10]);
circle(r=5);
}
}

f:id:inajob:20190216182040p:plain

offsetを同じだけマイナスすると大きさを保ったまま角を丸めることができます。

linear_extrude(height=5){
offset(-3) offset(3){
union(){
square([10,10]);
circle(r=5);
}
}
}

f:id:inajob:20190216182120p:plain

図形同士を演算してくりぬいたりもできます。

$fn=50;
module sketch(){
    union(){
        square([10,10]);
        circle(r=5);
    }
}

linear_extrude(height=5){
    difference(){
        offset(-3) offset(3){
            sketch();
        }
        offset(-2) offset(1) sketch();
    }
}

f:id:inajob:20190216182615p:plain

まぁ、こんな感じで3Dデータを作ることができます。

 

3Dプリンタやレーザーカッターでの出力

こうやって作った3DモデルはSTL形式でエクスポートすることができるので、3Dプリンタで印刷することができます。

また2次元データはSVG形式の出力もできるため、うまくモデルを作るとレーザーカッター向けのデータも作成できます。

今私が作っているRakuChordは、3Dプリンタで作った筐体に加えてレーザーカッターでフロントパネルを作っています。

このようなデータを用意する際もOpenSCADで同じように扱うことができます。

また私の場合は3Dプリンタは家にあるのですが、レーザーカッターは持ち合わせていません。このような状況だと、まず3Dプリンタでレーザーカッター用のデータで部品を出力してみて、位置合わせをする。というのがさっとできるのがこの方法の良いところです。

f:id:inajob:20190216183318p:plain

下が3Dプリンタで作ったもの、上が同じデータをレーザーカットしたものです。

f:id:inajob:20190216183532p:plain

回路設計ソフトKiCADとの連携

さらに便利な機能としてKiCADでの外形データをdxfとしてOpenSCADで読み込むことができます。

私の場合は、下記の図でいうと白い枠線をCmts.Userなど、製造とは関係ないレイヤーに作成し、そのデータをdxfで出力してOpenSCADに取り込んでいます。

こうすることで、基板上のコンポーネント配置とぴったり合ったカバーなどを作ることができます。

f:id:inajob:20190216183955p:plain

まとめ

といった具合にOpenSCADを使うと非常に簡単に3Dデータのワークフローを構築できます。

もちろんFusion360でも似たようなことはできるのでしょうが、オープンソースのソフトを組み合わせて使おうとすると、テキストファイルとして3Dデータを扱えるというのは非常に取り回しが楽です。

しかし、OpenSCADは直感的な3Dの造形が難しく、今回紹介したoffsetを2回実行することで角を丸くするテクニックなども知らないとわかりません。Fusion360だと、フィレットや面取りはUIから簡単にできるため、そういう点ではFusion360のほうが簡単です。OpenSCAD使いの方で、こういったテクニックを知ってる人は、ぜひその知見を公開してほしいです。

私が使ってて気づいたことは 下記Scrapboxに随時まとめています。

scrapbox.io

またOpenSCADは独自の言語なので敬遠する人もいるかもしれません。そういった方にはJavaScriptで似たようなことをするOpenJSCADがお勧めです。

openjscad.org

 

最後に、今私が頑張って作っているRakuChordの紹介ページを貼って、この記事を締めます。

気になる方はぜひ見てみてください↓↓↓↓↓

inajob.github.io