チュートリアル

手を動かして3つのモデルを作る。

「入門」で基本は掴めた。ここからは実際に手を動かして、モデルを完成させよう。


Lesson 1: ケース(箱型カバー)を作る

電子基板を入れるケースを作る。CADモデリングの黄金パターン「作る → 選ぶ → 加工する」を体で覚えよう。

完成形

box 100 60 40
 | faces >Z | shell 2
 | edges =Z | fillet 3
 | edges <Z | fillet 1
 | faces right
 | circle 4 | cut
 | faces left
 | points (grid 2 4 10)
 | hole 3
✎ Edit

いきなり全部は見なくていい。1ステップずつ積み上げよう。

Step 1: 箱を作って中空にする

box 100 60 40
 | faces >Z | shell 2
✎ Edit

faces >Z で上面を選択し、shell 2 で肉厚2mmの中空体に。選択した面が取り除かれてフタなしになる。

Step 2: エッジを丸める

box 100 60 40
 | faces >Z | shell 2
 | edges =Z | fillet 3
 | edges <Z | fillet 1
✎ Edit

edges =Z はZ軸に平行な縦エッジ。大きめのR3で丸める。 edges <Z は底のエッジ。控えめにR1。

Step 3: 右面にコネクタ穴を開ける

box 100 60 40
 | faces >Z | shell 2
 | edges =Z | fillet 3
 | edges <Z | fillet 1
 | faces right | circle 4 | cut
✎ Edit

faces right で右面を選ぶと、そのまま2Dスケッチに入れる。circle 4 | cut で貫通穴。

ちなみに、面の中心に1つ穴を開けるだけなら hole でも書ける:

 | faces right | hole 4
✎ Edit

hole はFace選択から直接使えるので、circle ... | cut より短くて済む。ただし穴の位置を面の中心からずらしたいときは circle + move + cut の方が柔軟。

Step 4: 左面にネジ穴を並べる

box 100 60 40
 | faces >Z | shell 2
 | edges =Z | fillet 3
 | edges <Z | fillet 1
 | faces right
 | circle 4 | cut
 | faces left
 | points (grid 2 4 10)
 | hole 3
✎ Edit

faces left で左面に移動。points (grid 2 4 10) で2x4のグリッドに点を配置(第3引数はpitch=中心間距離)し、hole 3 で一気に穴あけ。

面を選択した後なら points を省略して grid 2 4 10 と直接書いても同じ結果になります:

 | faces left
 | grid 2 4 10
 | hole 3
✎ Edit

これで完成。30秒で読めるコードで、それなりのケースが作れた。


Lesson 2: パラメトリック化する

Lesson 1のケースは寸法を直接書き込んでいる。変数と関数で再利用可能にしよう。

変数で寸法を管理する

$w = 100
$h = 60
$d = 40
$wall = 2

box $w $h $d
 | faces >Z | shell $wall
 | edges =Z | fillet 3
 | edges <Z | fillet 1
✎ Edit

サイズを変えたくなったら、上の数値を書き換えるだけ。

関数にする

def enclosure($w, $h, $d, $wall) =
  box $w $h $d
   | faces >Z | shell $wall
   | edges =Z | fillet 3
   | edges <Z | fillet 1

enclosure 100 60 40 2
✎ Edit

def で関数を定義する。本体は = の後のパイプライン。

バリエーションを並べる

def enclosure($w, $h, $d, $wall) =
  box $w $h $d
   | faces >Z | shell $wall
   | edges =Z | fillet 3
   | edges <Z | fillet 1

enclosure 100 60 40 2
enclosure 60 40 30 1.5 at:120 0
✎ Edit

at: で位置をずらして、サイズ違いを並べられる。パラメトリック設計の第一歩。


Lesson 3: 部品を組み合わせる

実際の設計では、部品を個別に作って組み立てる。マウントプレートを例に、部品の合成を学ぶ。

完成形

def plate($size) =
  box $size $size 3
   | fillet 1
   | faces top
   | points (polar 4 $size/3)
   | hole 4

$base = box 100 100 5
 | fillet 2
 | faces top | union plate 40 at:0 0
 | faces top | union plate 40 at:40 0
 | faces top
 | circle 4 | cut
✎ Edit

Step 1: マウントプレートを定義する

def plate($size) =
  box $size $size 3
   | fillet 1
   | faces top
   | points (polar 4 $size/3)
   | hole 4
✎ Edit

正方形の板に角丸をつけ、4つのボルト穴を円形配置。size/3 のように引数を使った計算もできる。points (polar 4 $size/3)polar 4 $size/3 と省略して書くこともできる(面選択の後では polar/grid が暗黙に points として解釈される)。

Step 2: ベースに載せる

$base = box 100 100 5
 | fillet 2
 | faces top | union plate 40 at:0 0
 | faces top | union plate 40 at:40 0
✎ Edit

union plate 40 at:0 0 で、上面にプレートを合体。at: で位置を指定。

Step 3: 中央に穴を追加

$base = box 100 100 5
 | fillet 2
 | faces top | union plate 40 at:0 0
 | faces top | union plate 40 at:40 0
 | faces top
 | circle 4 | cut
✎ Edit

最後に上面を選んで、中央に貫通穴を開ける。Face選択から直接2Dプリミティブを描けるので、workplane は不要。


Tips: もっとプリミティブを使ってみる

ここまでは boxcylinder が中心だったが、他にも便利なプリミティブがある。

円錐とトーラス

cone 15 5 30            # 上を切った円錐(花瓶のような形)
cone 10 0 20            # 完全な円錐

torus 20 3              # ドーナツ型のリング
torus 20 3 | diff box 40 40 10   # 半分に切ってD型リング
✎ Edit

mirrorで対称形状を作る

左半分だけ作って mirror で反転すれば、対称な部品を楽に作れる。

box 40 60 10
 | diff cylinder 5 10 at:10 15
 | mirror "X"
✎ Edit

"X" はYZ平面でミラー、"Y" はXZ平面、"Z" はXY平面。

splineで滑らかなパスを作る

spline は制御点を通る滑らかな曲線。sweep と組み合わせてパイプやレールを作れる。

spline [(0,0,0), (20,10,10), (40,0,20)] | sweep (circle 2)
✎ Edit

次のステップ