vibe-openscad

bare-low/claude-sonnet-4-6 / tier-2-offset-handle-mug

success tier 2

bare (claude sonnet 4.6)

render
bare render of tier-2-offset-handle-mug
loading STL…
success 11.8s · 330/826t · $0.0134
SCAD (83 lines)
// Mug with handle on +X side

$fn = 128;

// Body dimensions
outer_r = 40;
inner_r = 35;
height = 90;
bottom_thick = 6;

// Handle dimensions
handle_inner_h = 30;
handle_inner_w = 25;
handle_thick = 5;

module mug_body() {
    difference() {
        cylinder(r = outer_r, h = height);
        translate([0, 0, bottom_thick])
            cylinder(r = inner_r, h = height);
    }
}

module handle() {
    // The handle is a D-shape on the +X side
    // Inner space: 30mm tall x 25mm wide
    // Handle tube thickness: 5mm
    
    // Center height of mug
    center_z = height / 2;
    
    // The handle spans from outer surface outward
    // Inner cavity width (in X) = handle_inner_w = 25
    // Inner cavity height (in Z) = handle_inner_h = 30
    
    // Outer radius of the D arc
    // The arc center is at x = outer_r (on the mug surface)
    // Inner radius of arc = handle_inner_w / 2 = 12.5
    // Outer radius of arc = inner + thick = 17.5
    
    arc_inner_r = handle_inner_w / 2;
    arc_outer_r = arc_inner_r + handle_thick;
    
    bar_half_h = handle_inner_h / 2;
    
    translate([0, 0, center_z]) {
        difference() {
            union() {
                // Outer D torus half (semicircle, +X side)
                // Rotate_extrude only +X half
                intersection() {
                    rotate_extrude(angle = 360)
                        translate([outer_r + arc_inner_r, 0, 0])
                            circle(r = arc_outer_r);
                    translate([outer_r, -500, -500])
                        cube([1000, 1000, 1000]);
                }
                // Top bar
                translate([outer_r, -arc_outer_r, bar_half_h])
                    cube([arc_inner_r, arc_outer_r * 2, handle_thick]);
                // Bottom bar
                translate([outer_r, -arc_outer_r, -bar_half_h - handle_thick])
                    cube([arc_inner_r, arc_outer_r * 2, handle_thick]);
            }
            // Hollow inner arc
            intersection() {
                rotate_extrude(angle = 360)
                    translate([outer_r + arc_inner_r, 0, 0])
                        circle(r = arc_inner_r);
                translate([outer_r, -500, -500])
                    cube([1000, 1000, 1000]);
            }
            // Remove inner space between bars
            translate([outer_r, -arc_inner_r, -bar_half_h])
                cube([arc_inner_r + arc_outer_r, arc_inner_r * 2, handle_inner_h]);
        }
    }
}

union() {
    mug_body();
    handle();
}
パラメータ (7)
スライダを動かすと openscad-wasm で再レンダリング

meta

runIdbare-low_claude-sonnet-4-6-3db1554aa166-2026-04-28T18-48-36-267Z
matrixIdbare-low/claude-sonnet-4-6
signature3db1554aa1661d67…
provideranthropic
modelclaude-sonnet-4-6
harnessbare
statussuccess
duration11.82s (wallclock: load + prompt eval + generation + network)
tokens330 in / 826 out
wallclock tok/s69.9 tok/s (end-to-end)
cost$0.0134
createdAt2026-04-28T18:48:36.267Z
gitCommit781e6c683dda
openscadOpenSCAD version 2026.04.27

prompt

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

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

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

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