チュートリアル
「入門」で基本は掴めた。ここからは実際に手を動かして、モデルを完成させよう。
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
いきなり全部は見なくていい。1ステップずつ積み上げよう。
Step 1: 箱を作って中空にする
box 100 60 40
| faces >Z | shell 2
faces >Z で上面を選択し、shell 2 で肉厚2mmの中空体に。選択した面が取り除かれてフタなしになる。
Step 2: エッジを丸める
box 100 60 40
| faces >Z | shell 2
| edges =Z | fillet 3
| edges <Z | fillet 1
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
faces right で右面を選ぶと、そのまま2Dスケッチに入れる。circle 4 | cut で貫通穴。
ちなみに、面の中心に1つ穴を開けるだけなら hole でも書ける:
| faces right | hole 4
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
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
これで完成。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
サイズを変えたくなったら、上の数値を書き換えるだけ。
関数にする
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
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
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
Step 1: マウントプレートを定義する
def plate($size) =
box $size $size 3
| fillet 1
| faces top
| points (polar 4 $size/3)
| hole 4
正方形の板に角丸をつけ、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
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
最後に上面を選んで、中央に貫通穴を開ける。Face選択から直接2Dプリミティブを描けるので、workplane は不要。
Tips: もっとプリミティブを使ってみる
ここまでは box と cylinder が中心だったが、他にも便利なプリミティブがある。
円錐とトーラス
cone 15 5 30 # 上を切った円錐(花瓶のような形)
cone 10 0 20 # 完全な円錐
torus 20 3 # ドーナツ型のリング
torus 20 3 | diff box 40 40 10 # 半分に切ってD型リング
mirrorで対称形状を作る
左半分だけ作って mirror で反転すれば、対称な部品を楽に作れる。
box 40 60 10
| diff cylinder 5 10 at:10 15
| mirror "X"
"X" はYZ平面でミラー、"Y" はXZ平面、"Z" はXY平面。
splineで滑らかなパスを作る
spline は制御点を通る滑らかな曲線。sweep と組み合わせてパイプやレールを作れる。
spline [(0,0,0), (20,10,10), (40,0,20)] | sweep (circle 2)