vibe-openscad

iter-png-2/o3 / tier-2-offset-handle-mug

success tier 2

bare (o3)

render
bare render of tier-2-offset-handle-mug
loading STL…
success 35.6s · 1627/2468t · $0.0230
SCAD (74 lines)
// Oriented mug with D-shaped handle
$fn = 128;

// ---------- Mug parameters ----------
mug_outer_d      = 80;          // mm
mug_inner_d      = 70;          // mm
mug_height       = 90;          // mm
bottom_thickness = 6;           // mm
wall_thickness   = (mug_outer_d - mug_inner_d) / 2;   // 5 mm

// ---------- Handle parameters ----------
handle_open_h = 30;             // inner void height (Z)
handle_open_w = 25;             // inner void radial width (X)
handle_wall   = wall_thickness; // thickness around void (5 mm)
handle_depth  = 15;             // thickness in Y

// Derived
handle_outer_h = handle_open_h + 2*handle_wall;       // 40
handle_inner_r = handle_open_h / 2;                   // 15
handle_outer_r = handle_outer_h / 2;                  // 20

// ---------- Modules ----------
module mug_body(){
    difference(){
        cylinder(h = mug_height, r = mug_outer_d/2);
        translate([0,0,bottom_thickness])
            cylinder(h = mug_height - bottom_thickness, r = mug_inner_d/2);
    }
}

// Outer 2-D D-shape (full handle cross-section)
module handle_outer_2d(){
    union(){
        // straight side against mug
        translate([0, -handle_outer_h/2])
            square([handle_outer_r, handle_outer_h]);
        // curved outer side
        translate([handle_outer_r, 0])
            circle(r = handle_outer_r);
    }
}

// Inner 2-D void to create finger space
module handle_inner_2d(){
    union(){
        // rectangular part of void
        translate([handle_wall, -handle_open_h/2])
            square([handle_open_w - handle_inner_r, handle_open_h]);
        // semicircular part of void
        translate([handle_wall + handle_open_w - handle_inner_r, 0])
            circle(r = handle_inner_r);
    }
}

module handle(){
    // Build 3-D handle by extruding the 2-D profile,
    // then rotate so Z is vertical and Y is handle depth
    rotate([90,0,0])
        linear_extrude(height = handle_depth, center = true)
            difference(){
                handle_outer_2d();
                handle_inner_2d();
            }
}

// ---------- Assembly ----------
union(){
    // Mug body
    mug_body();

    // Handle on +X side, centered vertically
    translate([mug_outer_d/2 - 0.01, 0, (mug_height - handle_outer_h)/2])
        handle();
}
パラメータ (7)
スライダを動かすと openscad-wasm で再レンダリング

meta

runIditer-png-2_o3-44c3b4274bda-2026-04-28T19-03-44-930Z
matrixIditer-png-2/o3
signature44c3b4274bda293b…
provideropenai
modelo3-2025-04-16
harnessbare
statussuccess
duration35.57s (wallclock: load + prompt eval + generation + network)
tokens1627 in / 2468 out
wallclock tok/s69.4 tok/s (end-to-end)
cost$0.0230
createdAt2026-04-28T19:03:44.930Z
gitCommit781e6c683dda
openscadOpenSCAD version 2026.04.27

iteration chain

各 iteration step は独立した benchmark run です。parentRunId で前段にリンクします。

prompt

OpenSCAD で、向きが指定されたマグカップを作ってください。

本体:
- 外径 80mm、内径 70mm(肉厚 5mm)、高さ 90mm の円筒形マグ
- 底面の厚みは 6mm
- 内側は飲み物を入れられるよう中空

取手(handle):
- マグの **+X 軸方向の側面のみ** に付ける(他の方向には付けない)
- 取手は D 字形状(外側が半円、本体側が直線)で、本体外周にしっかり接続する
- 取手の内側の空間は高さ 30mm × 幅 25mm(指 3 本ぐらい入る)
- 取手はマグの高さ方向の中央付近に付ける
- 本体と取手は確実に union され、マニフォールド(隙間や宙吊りなし)を保つ

完成したコード全体を ```openscad ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。