3Dモデル作成ツール・OpenSCAD 初心者入門編

  • LINEで送る

3Dモデル作成ツール・OpenSCAD の使い方

OpenSCAD は3D 立体モデルをプログラミングで作る事が出来るツールになります。

この OpenSCAD はフリーソフトであり、お使いの OS により Linux/UNIX, MS Windows 又は Mac OS X 上で無料で使用する事が出来ます。

目次

OpenSCAD のダウンロード

まず、公式サイト(www.openscad.org)にアクセスします。

OpenSCAD のページにアクセスすると、上のようなページが表示されます。

ここで、メニューの「downlords」をクリックします。

ダウンロードページが表示されますので、OS によってそれぞれに適したパッケージをダウンロードします。

ここでは、Windows 版の zip package (64-bit) をダウンロードします。

zip ファイルを解凍してファイルを開きます。

ファイルを開くと、パッケージ内に OpenSCAD.exe (アプリケーション) があります。

OpenSCAD .exeファイルをダブルクリック、または、右クリックして「開く」をクリックすると、

上のように、OpenSCAD が開きます。

∗ ちなみに、ダウンロードした OpenSCAD に同梱されている openscad.com(MS-DOS アプリケーション) をダブルクリックすると、コマンドライン(コマンドプロンプト)が開き、同時に OpenSCAD が開きます。

新規ファイルの作成

今回は全く初めてからの作業になりますので、「New」をクリックします。

「New」をクリックすると、下の画面が開きます。

左側に、コードを打ち込む「エディタ画面」、右上に、プログラミングで作成されたオブジェクトを確認ための「プレビュー画面」、右下には、ログなどを確認出来る「コンソール」が表示された、この上のような「ウィンドウ」が表示されます。

「エディタ」の上段にはメニューが表示され、下段にはアイコンが表示されています。

メニューには、File        Edit      Design      View    Help

アイコンには、

アイコンは、メニューの中からそれぞれの、File・Edit・Design・View から、常に使用する代表的な操作を表しています。

それぞれのアイコンは、

新規ファイルを開く・ファイルを開く・ファイルを保存・元に戻す・やり直す・インデントを戻す・インデントする・プレビュー・レンダリング・STLファイルとしてエクスポートする

アイコンにカーソルを乗せるとそれぞれの操作方法が表示されるので、わかりやすく操作も早くて便利に使用する事が出来ます。

それでは、ここで「New」をクリックして新規ファイル(名前をとりあえず「MyfirstSCAD.scad」として)を作成します。

デスクトップに新しく名前を「MySCAD(任意)」としてフォルダを作成して、その中に先程の新規ファイルを入れます。

Desktop  >  MySCAD  >  MyfirstSCAD.scad 

 このような状態です。

OpenSCAD のタイトルが Untitled.scad →  Myfirstscad.scad  になり、OpenSCAD に新規ファイルが作成されたことが分かります。

尚、次回から、OpenSCAD を起動すると、

上のような画面が表示され、Myfirstscad.scad ファイルが作成されているので、Myfirstscad.scad を選択するすると、

「Open Recent」がハイライト表示されるので、クリックすると、エディタ画面が表示されます。

 

立方体を作成

まず、実際にコードを書いていきたいと思います。

ここでは、1辺が10の立方体を作成してみましょう。

立方体を描画するには、cube ( ) を使用します。

// cube
cube ( 10 ) ;

コードの書き方としては、

//cube          :コメント(スラッシュを2つ書くとコメントとなります)

cube(10);      :  1辺が10の立方体になります。そして、命令のくぎりは「 ; 」(セミコロン)で忘れないで下さい。

この様に、コードを入力すると、プレビュー画面で立方体が描画されているのが、確認出来ます。

ちなみに、左クリック&ドラッグで視点を変えることができます。 (上・下・斜め上下など)

移動したい場合は、右クリック&ドラッグでオブジェクトを移動させることが出来ます。

プレビュー画面の下にもアイコンが表示されているので、様々な操作も見た目で確認(アイコンをホバー時には、操作を表示)することが出来ます。

プレビュー画面をリセットしたい場合は、 をクリックすれば最初の視点画面に戻ります。

オブジェクトの移動

先程のキューブを移動させる操作命令(オブジェクトを操作する命令)を書いてみたいと思います。(尚、オブジェクトを描画する命令を 「ACTION命令」と言います。)

先程のキューブを Y 軸方向に「10」移動したい場合は、translate ( ) を使用します。

キューブを移動させる場合は、translate ( ) 命令の値を( )  (丸かっこ) の中に [ ]  (角かっこ又は大かっこ)  を入れ込んで、その中に X, Y, Z の値を指定します。

例えば、X 軸方向に30ずらしたい場合は、translate([30, 0, 0]) と指定し、操作したいオブジェクトを { }  (波かっこ)の中に指定します。

尚、{ } (波かっこ)で終了している命令の場合は ( ; ) セミコロンは無くても大丈夫です。

translate ( [ 30, 0, 0,] )  {
    cube ( 10 ) ;
}

この様に、コードを書きます。

この様に、X 軸方向に30移動しているのが、分かります。

同様に、Z 軸方向に20ずらしてみます。 translate([0, 0,  20])  { cube(10) }  と指定します。

translate ( [ 0, 0, 20 ] )  {
    cube ( 10 ) ;
}

この様に、Z 軸方向に20移動しているのが分かります。

オブジェクトの回転

それでは、キューブの回転の操作命令を rotate ()  を使って書いていきます。

X 軸に対して30度プラス方向に傾けてみます。

rotate ( [ 30, 0, 0 ] )  {
    cube ( 10 ) ;
}

 

このように X 軸を中心として30度傾いているのが分かります。

左クリック&ドラッグで視点を変えてみましょう。

もう少し視点を傾けて、拡大してみます。

X 軸を中心に30度傾いているのが、解りやすくなっているのが確認出来ます。

尚、プレビュー画面の下にあるアイコンの拡大 () ,  縮小() または、マウスホイール(スクロールホイール)を使って拡大・縮小する事が出来ます。

直方体の作成

キューブの辺を指定して直方体を作成する事が出来ます。

立方体を作成する方法は、cube ( 10 ) の作成例ですが、直方体を作成する方法では、3次元のベクトルを指定します。

3次元のベクトルを指定するには、( ) の中に [  ] を使用すればいいので、それぞれ、X, Y, Z  の値を入力します。

cube ( [ 10,  20,  30 ] ) ;

この様に、指定すればいいわけです。

すると、上の様に、X軸方向に10、Y軸方向に20、Z軸方向に30の長方形のオブジェクトが描画されているのが分かります。

また、立方体の中心を原点にすることもできます。

その方法は、引数  ‘  true  ‘  を書き加える事で、オブジェクトの中心に原点が来ます。

cube  (  [  10,  20,  30  ] ,  true  )  ;
cube  ( size  =  [ 10,  20,  30 ] ,  center  =  true  ) ;

上の2つのコードは、どちらを選んでも同じ結果になります。もちろん、どちらの書き方を指定しても構いません。

この様に、オブジェクトの中心が原点になっているのが分かります。

この様に、色々な書き方を取得することも、今後必要になり、覚えておくのも大事になります。

球体の作成

球体を描画する場合は、sphere ( ) を使用します。

半径( r )を指定球体を描画する事が出来ます。

sphere ( r = 10 ) ;

この様に、半径10の球体が描画されました。

尚、最小半径 r = 1 の球体を描画させるにも、同じ様に、sphere ( ) を使用して球体を描画してみます。

sphere ( r = 1 ) ;

少し小さいので、ズームアップします。

すると、コードは  sphere ( r = 1 ) ですが、球体ではなくて、多角形体になっています。

sphere (  r  =  1 ,   $fn  =  0  )  ;

これは、通常、球体の極は五角形であることが分かります。

ここで、特殊変数を使うことで、高解像度の球体を描画する事が出来ます。

sphere ( r = 1 ,   $fn = 100 );
≠(上下はまったく同じわけではありません)
sphere ( r = 1 ,   $fa = 5,  $fs = 0.01);

この様に、小さい半径の球体を描画するには、特殊変数を使用することで球体を描画する事が出来ます。

そこで、OpenSCAD で、定義されている特殊変数  ( $fa,  $fs,  $fn  ) を見てみたいと思います。

$fa :  フラグメントの最小角度です。デフォルト値は    12 (  0.01  = <  $fa  < = 12  )    

$fs :  フラグメントの最小サイズです。デフォルト値は     2 (  0.01 = <  $fs  <  =   2  )

$fn :  面の粗さになります。        デフォルト値は       0  (    0    = <  $fn  < = 100 ) $fn の値が0より大きい場合は、$fa , $fs の値は無視されます。この数のフラグメントを使用して全円が描画されます。100を超える $fn は推奨されていません

尚、$fa , $fs が使用されている場合は、$fn が5未満を使用しません。これは、球体の極が五角形だからです。

円柱の作成

円柱を描画する場合は、cylinder ( )  を使用します。

円柱を描画する場合は、パラメータが必要になります。

高さ( h )と半径 ( r )を指定します。高さを30、半径を10の円柱を描画してみます。

cylinder (  h = 30,  r = 10  ) ;

このように、円柱が描画されました。また、中心を原点にする事も出来ます。この場合も、center = true とすればいいわけです。

cylinder  (  h  =  30 ,   r  =  10 ,   center  =  true  )  ;

このようになります。

また、上底下底の半径を指定することで、円錐などを描画する事も出来ます。

その場合は、下底を r 1  ,  上底を  r 2 ,  として半径を指定します。

cylinder  (  h  =  30 ,  r 1  =  10 ,    r 2  =  0 ) ;

このように円錐が描画されます。もちろん、中心を原点にする事も出来ます。

また、

cylinder  (  h  =  30 ,  r 1  =  10 ,  r 2  =  5 ,  center  =  true ) ;

このような、様々な台形円柱も作成する事も出来ます。また、上下逆さまの形の物も作成する事が出来ます。

そして、円柱でも OpenSCAD の特殊変数(  $fa ,  $fs ,  $fn  )を指定する事が出来ます。

シリンダーでのデフォルト値も、球体でのデフォルト値と同じになります。

cylinder  (  h  =  1 ,  r 1  =  1 ,  r 2  =  1 ,  $fa  =  12 ,  $fs  =  2 ,  $fn  =  0 ) ;

シリンダーでの $fn の使用方法の例

cylinder  (  h  =  20 ,  r 1  =  20 ,  r 2  =  20 ,  $fn  =  3  )  ;
cylinder  (  h  =  20 ,  r 1  =  20 ,  r 2  =  0 ,  $fn  =  4  )  ;
cylinder  (  h  =  20 ,  r 1  =  20 ,  r 2  =  10 ,  $fn  =  4  )  ;

平面図形の作成

平面図形の作成には、四角形・円形・テキストなどがあります。

まず、四角形の場合は、square ( [  x ,  y ] ) を使用します。

また、平面図形はプレビュー上では、の厚みにレンダリングされますが、実際の厚みはありません。

正方形の描画の場合は、

square ( 10 ) ;
square ( 10 , center = true ) ;

   

長方形の描画の場合は、

square ( [ 20 ,  10 ] ) ;
square ( [ 20 ,  10 ] , center = true ) ;

   

円形の描画の場合は、circle ( ) を使用します。

circle (  10  ) ;

テキストを描画の場合は、text ( ”  ” ) を使用使用します。

text ( " t " ) ;
text ( " OpenSCAD " ) ;

     

多角形を描画の場合は、polygon ( ) を使用します。

ポリゴンには、points [ ] というパラメータを指定して、[ x ,  y ] の座標を指定して多角形を描画します。

polygon ( pints = [ 
  [ 0 ,  0 ],
  [ 10 , 0 ],
  [ 10 , 10 ]
] ) ;

 

このように、平面図形を描画する事が出来ます。

先程も、記しましたが、平面図形はプレビュー上では厚みがあるように見えますが、実際には厚みはであり、3D に描画するには「押し出し」という作業をします。

2D から 3D へ押し出し ( Linear Extrude )

平面図形から立体モデルを作成するには、まず、高さを指定して 3D モデルを作成する、押し出し命令  linear_extrude ( ) を使用します。

今回は、「10x20」の平面図形を」高さ30まで押し出したいと思います。

linear_extrude ( height = 30 )  {
    square( [ 10, 20 ] ) ;
}

このように、10x20の平面から30の高さまで押し出すことで 2D 形状から 3D 立体モデルが出来ます。

次は「ねじれ ( twist ) 」を加えてみましょう。

Twist

同じ様に、10x20の平面から30の高さまで75の角度で押し出してみます。

linear_extrude ( height = 30 ,  twist = 75) {
    squear  ( [ 10 ,  20 ] ) ;
}

上のように、ひねりながら30の高さまで押し出しされています。

尚、ひねりがパラメータ twist = 360 で一周になり、プラス設定で時計回り、マイナス設定で反時計回りになります。

twist = – 75 で設定した場合

linear_extrude ( height = 30 ,  twist = -75) {  
    squear  ( [ 10 ,  20 ] ) ;
}

このようになります。また、原点を center = true に設定した場合も、Z 軸方向のみに押し出しされます。 – height / 2 = height / 2 が原点になり、X 軸 及び Y 軸方向には影響は及びません。

linear_extrude ( height = 30 ,  center = true ,  twist = 75)  { 
     squear  ( [ 10 ,  20 ] ) ;
}

つぎは、scale を使ってみましょう。

Scale

scale は押し出しの高さに縮小拡大するためのパラメータです。

下の例は、1辺10の4角形を高さ30まで、押し出しを用いて、上底を半分(0.5)の大きさまで縮小します。

linear _ extrude ( height  =  30 ,  scale  =  0.5 )  {
    square ( [ 10 ,  10 ] ) ;
}

下の例は、半径5の円形図形を押し出しを用いて、高さ50まで、2倍のスケールに拡大してみました。

linear_extrude  ( height = 50 ,  scale = 2 )  {
        circle ( 5 ) ;
}

回転押し出し ( Ratete  Extrude )

平面図形を X Y 面に対して垂直に立て、その面を Z 軸を中心として回転押し出しで 3D モデルを作成することができます。

すなわち、2D 平面図形は、完全に Y 軸の右側(推奨)あるいは左側にある必要があります。

解りずらいですが、例を見てみましょう。

先ずは、円形の平面図形を、X 軸方向に10のところに描画してみます。

translate ( [ 10 ,  0 ,  0 ] )  {
      circle ( 5 ) ;
}

次に、rotate _ extrude ( ) を使用して回転押し出しで描画します。

rotate _ extrude ( ) {
      translate ( [ 10 ,  0 ,  0 ] )  {
            circle ( 5 ) ;
      }
}

 

CSG のブーリアン演算 ( Union ,  Difference ,  Intersection )

Union (和集合):二つのオブジェクトを一つにしたもの。

Difference(差集合):一方のオブジェクトからもう一方を引いたもの。

Intersection(共通部分):両方のオブジェクトの共通部分。

これらの命令は 2D 図形でも 3D モデルでも使用できますが、混在することは出来ません。

Union の使用例
union (  )  { 
    cylinder ( h  =  30 ,  r =  10 ,  center  =  true ) ;
    rotate (  [  90 ,  0 ,  0  ]  )  cylinder ( h  =  30 ,  r  =  8 ,  center  =  true  ) ; 
}

二つのオブジェクトが一つのオブジェクトに合体しています。これが Union(和集合)の使用方法です。

 

Difference の使用例
difference (  )  { 
          cylinder ( h  =  30 ,  r  =  10 ,  center  =  true ) ;
          rotate ( [  90 ,  0 ,  0 ] )  cylinder (  h  =  30 ,  r  =  8 .  center  =  true ) ;
}

一方のオブジェクトから他方のオブジェクトを引いたものになります。これが Difference(差集合)の使用方法です。

Difference の使用においては、プレビュー画面に表示されない場合がありますが、F6 キー又は のアイコンをクリックすると表示されます。Renderring に時間がかかる場合があるからです。

尚、最初に描画されたものから、次に描画されたものが差し引かれます。

difference (  )  { 
      rotate ( [  90 ,  0 ,  0 ] )  cylinder (  h  =  30 ,  r  =  8 .  center  =  true ) ;
      cylinder  (   h    =    30  ,    r    =    10  ,    center    =    true  )  ;
}

このように、最初に提示されたものから、次に提示されたものが差し引かれます。

Intersection の使用例
intersection (  )  {   
          cylinder ( h  =  30 ,  r =  10 ,  center  =  true ) ;  
          rotate (  [  90 ,  0 ,  0  ]  )  cylinder ( h  =  30 ,  r  =  8 ,  center  =  true  ) ; 
 }

このように、Intersection は二つのオブジェクトの共通部分(重複部分)が描画されます。

3D モデルを完成させる

今までの、操作命令や ACTION 命令などを使用して「ボルト」と「ナット」のようなオブジェクトを作成してみました。

このようなオブジェクトを描画してみました。

これを、STL ファイルでエクスポートして、最初にデスクトップに作成しておいた フォルダ「 MySCAD」に保存します。

保存したファイルはそのまま、3D プリンターで印刷することができます。

このように、比較的簡単に 3D モデルを作成することができます。

3D プリンターを使用して色々なものに挑戦してみてください。

 

  • LINEで送る

SNSでもご購読できます。