AIモデリング01: コップ
AIモデリングのサンプルです。
# モデル1: コップ(取っ手付き)
# 回転体で外形と空洞を作り、取っ手はトーラスの一部を付ける。
@param 70..140 desc:"高さ (mm)"
cup_h = 95
@param 30..50 desc:"口の外半径 (mm)"
rim_r = 40
@param 25..45 desc:"底の外半径 (mm)"
base_r = 35
@param 2..5 step:0.5 desc:"肉厚 (mm)"
wall_t = 3
@param 3..8 desc:"底の厚み (mm)"
bot_t = 4
@param 3..8 step:0.5 desc:"取っ手の太さ (半径 mm)"
grip_r = 5
$ir_top = rim_r - wall_t
$ir_bot = base_r - wall_t
# 断面は x=半径, y=高さ。revolve Y のあと X軸まわりに90°起こして Z を高さにする
$outer = sketch [
(0, 0), (base_r, 0),
spline [(base_r + 1, cup_h * 0.4), (rim_r, cup_h)],
(0, cup_h)
] | revolve Y | rotate 90 0 0
$cavity = sketch [
(0, bot_t), ($ir_bot, bot_t),
spline [($ir_bot + 1, cup_h * 0.4), ($ir_top, cup_h)],
($ir_top, cup_h + 1), (0, cup_h + 1)
] | revolve Y | rotate 90 0 0
# 取っ手: トーラスを XZ 平面に立て、外側だけ残す。
# 両端はコップの内側まで回り込ませ、最後に空洞で削って壁に埋める
@param 18..35 desc:"取っ手の大きさ (中心半径 mm)"
loop_r = 26
$hx = base_r - 2
$handle = torus loop_r grip_r
| rotate 90 0 0
| inter (box 100 20 100 at:(37, 0, 0))
| translate $hx 0 (cup_h / 2)
($outer + $handle) - $cavity