vibe-openscad

tier-1-mug / claude-opus-5

7 run / 累計 109.9s / 累計 $0.2043

claude opus 5 bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 9.8s · 220/660t · $0.0176
SCAD (52 lines)
// ===== マグカップ =====
// 外径 80mm / 高さ 100mm / 肉厚 4mm / 底厚 6mm
// 取手: リング状 (トーラス), 半径 12mm

$fn = 96;

outer_d    = 80;    // 外径
outer_r    = outer_d / 2;
height     = 100;   // 全高
wall       = 4;     // 側面肉厚
bottom     = 6;     // 底の厚み
inner_r    = outer_r - wall;

// 取手パラメータ
handle_R   = 12;    // リングの半径(中心線)
handle_r   = 5;     // リングの太さ(断面半径)
handle_z   = height / 2;          // 取手の高さ(カップ中心高さ)
handle_x   = outer_r + handle_R * 0.55;  // 外周から十分はみ出す位置

// --- カップ本体 ---
module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom])
            cylinder(h = height - bottom + 1, r = inner_r);
    }
}

// --- 取手(リング状 = トーラス) ---
module torus(R, r) {
    rotate_extrude(convexity = 10)
        translate([R, 0, 0])
            circle(r = r);
}

module handle() {
    translate([handle_x, 0, handle_z])
        rotate([90, 0, 0])          // リング面を垂直(XZ平面)に
            torus(handle_R, handle_r);
}

// --- 組み立て ---
difference() {
    union() {
        cup_body();
        // 取手はカップ外壁と交差させて確実に接合
        handle();
    }
    // 内側の飲み物空間に取手がはみ出さないように削る
    translate([0, 0, bottom])
        cylinder(h = height - bottom + 1, r = inner_r);
}
パラメータ (6) —
スライダを動かすと openscad-wasm で再レンダリング

prompt

OpenSCAD で、外径 80mm、高さ 100mm、肉厚 4mm のマグカップを作ってください。
底面の厚みは 6mm とし、内側はくり抜いて飲み物を入れられる形状にしてください。
さらに、側面には外径方向に飛び出す半径 12mm の取手(リング状の取手)を付けてください。
取手はカップの中心高さあたりに付け、外周から十分にはみ出して指を通せる形にしてください。

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

variant: effort

low success →
low
8.4s · 220/574t · $0.0155
SCAD (48 lines)
// マグカップ
// 外径 80mm / 高さ 100mm / 肉厚 4mm / 底厚 6mm
// 取手: リング状 (トーラス), 中心半径 12mm

$fn = 120;

outer_d    = 80;      // 外径
outer_r    = outer_d / 2;
height     = 100;     // 全高
wall       = 4;       // 側面肉厚
bottom     = 6;       // 底厚
inner_r    = outer_r - wall;

handle_R   = 12;      // 取手リングの中心半径
handle_r   = 5;       // 取手の太さ(断面半径)
handle_z   = height / 2;              // 取手の高さ(カップ中心高さ)
handle_x   = outer_r + handle_R * 0.35; // 外周から十分はみ出す位置

module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom])
            cylinder(h = height - bottom + 1, r = inner_r);
    }
}

module handle_ring() {
    // YZ 平面に立つトーラス(指を通せる向き)
    translate([handle_x, 0, handle_z])
        rotate([0, 90, 0])
            rotate_extrude(convexity = 10)
                translate([handle_R, 0, 0])
                    circle(r = handle_r);
}

module mug() {
    union() {
        cup_body();
        // 取手はカップ内部に貫通させない
        difference() {
            handle_ring();
            translate([0, 0, -1])
                cylinder(h = height + 2, r = inner_r);
        }
    }
}

mug();
mediumnot run
—
high (default) success →
high
9.4s · 220/620t · $0.0166
SCAD (50 lines)
// ===== マグカップ パラメータ =====
outer_d      = 80;   // 外径
outer_r      = outer_d / 2;
height       = 100;  // 全高
wall         = 4;    // 側面肉厚
bottom       = 6;    // 底面厚み

inner_r      = outer_r - wall;      // 内径半径 = 36
inner_h      = height - bottom;     // 内側空間の高さ = 94

// ===== 取手パラメータ =====
handle_r       = 12;   // 取手リングの半径(中心線の円半径)
handle_thick   = 9;    // 取手の太さ(断面直径)
handle_z       = height / 2;              // 取手の高さ位置(カップ中心高さ)
handle_offset  = outer_r + handle_r - 5;  // 取手リング中心のX位置(外周から十分外へ)

$fn = 120;

// ===== カップ本体 =====
module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom])
            cylinder(h = inner_h + 1, r = inner_r);
    }
}

// ===== 取手(リング状) =====
module handle_ring() {
    translate([handle_offset, 0, handle_z])
        rotate([90, 0, 0])
            rotate_extrude(convexity = 10)
                translate([handle_r, 0, 0])
                    circle(r = handle_thick / 2);
}

// ===== 組み立て =====
module mug() {
    union() {
        cup_body();
        // 取手のうちカップ内部に入り込む部分を削除
        difference() {
            handle_ring();
            translate([0, 0, -1])
                cylinder(h = height + 2, r = inner_r);
        }
    }
}

mug();
max success →
max
10.4s · 220/728t · $0.0193
SCAD (58 lines)
// ===== マグカップ =====
// 外径 80mm / 高さ 100mm / 肉厚 4mm / 底厚 6mm
// 取手: リング状(トーラス)、リング半径 12mm

$fn = 120;

outer_d      = 80;    // 外径
outer_r      = outer_d / 2;
cup_h        = 100;   // 全高
wall         = 4;     // 側面の肉厚
bottom_t     = 6;     // 底の厚み

inner_r      = outer_r - wall;      // 内側半径 = 36
inner_h      = cup_h - bottom_t;    // 内側の深さ = 94

// 取手(トーラス)パラメータ
handle_R     = 12;    // リングの中心円半径(穴の大きさを決める)
handle_r     = 5;     // 断面(チューブ)の半径
handle_z     = cup_h / 2;             // 中心高さ
handle_off   = outer_r + handle_R - 6; // 外周から十分はみ出す位置

// --- トーラス(リング)モジュール ---
module torus(R, r) {
    rotate_extrude(convexity = 10)
        translate([R, 0, 0])
            circle(r = r);
}

// --- カップ本体 ---
module cup_body() {
    difference() {
        cylinder(h = cup_h, r = outer_r);
        translate([0, 0, bottom_t])
            cylinder(h = inner_h + 1, r = inner_r);
    }
}

// --- 取手(縦向きのリング)---
module handle() {
    translate([handle_off, 0, handle_z])
        rotate([90, 0, 0])           // リング面を XZ 平面に立てる
            torus(handle_R, handle_r);
}

// --- 組み立て ---
module mug() {
    difference() {
        union() {
            cup_body();
            handle();
        }
        // 取手が内側に飛び出さないよう、カップ内部を再度くり抜く
        translate([0, 0, bottom_t])
            cylinder(h = inner_h + 1, r = inner_r);
    }
}

mug();
xhigh success →
xhigh
52.0s · 220/3933t · $0.0994
SCAD (53 lines)
// ============================================
//  マグカップ (外径80mm / 高さ100mm / 肉厚4mm)
//  リング状取手 (半径12mm) 付き
// ============================================

$fn = 120;

// ---- 基本寸法 ----
outer_d   = 80;              // 外径
outer_r   = outer_d / 2;     // 外半径 = 40
cup_h     = 100;             // 全高
wall_t    = 4;               // 側面の肉厚
bottom_t  = 6;               // 底面の厚み
inner_r   = outer_r - wall_t;// 内半径 = 36

// ---- 取手(リング)寸法 ----
handle_r  = 12;                              // リングの半径
handle_t  = 5;                               // リング断面(パイプ)の半径
handle_z  = cup_h / 2;                       // 高さ方向の取付位置(中心高さ)
handle_x  = outer_r + handle_r - handle_t;   // 外周から十分はみ出す位置 = 47

// ---- カップ外形 ----
module cup_outer() {
    cylinder(h = cup_h, r = outer_r);
}

// ---- 内側のくり抜き ----
module cup_cavity() {
    translate([0, 0, bottom_t])
        cylinder(h = cup_h - bottom_t + 1, r = inner_r);
}

// ---- リング状取手(トーラス) ----
module handle() {
    translate([handle_x, 0, handle_z])
        rotate([90, 0, 0])
            rotate_extrude(convexity = 10)
                translate([handle_r, 0])
                    circle(r = handle_t);
}

// ---- 組み立て ----
module mug() {
    difference() {
        union() {
            cup_outer();
            handle();          // 壁を貫通させて確実に接合
        }
        cup_cavity();          // 内側をくり抜き(取手の余分な内側も除去)
    }
}

mug();

variant: thinking

off success →
off
9.4s · 220/620t · $0.0166
SCAD (50 lines)
// ===== マグカップ パラメータ =====
outer_d      = 80;   // 外径
outer_r      = outer_d / 2;
height       = 100;  // 全高
wall         = 4;    // 側面肉厚
bottom       = 6;    // 底面厚み

inner_r      = outer_r - wall;      // 内径半径 = 36
inner_h      = height - bottom;     // 内側空間の高さ = 94

// ===== 取手パラメータ =====
handle_r       = 12;   // 取手リングの半径(中心線の円半径)
handle_thick   = 9;    // 取手の太さ(断面直径)
handle_z       = height / 2;              // 取手の高さ位置(カップ中心高さ)
handle_offset  = outer_r + handle_r - 5;  // 取手リング中心のX位置(外周から十分外へ)

$fn = 120;

// ===== カップ本体 =====
module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom])
            cylinder(h = inner_h + 1, r = inner_r);
    }
}

// ===== 取手(リング状) =====
module handle_ring() {
    translate([handle_offset, 0, handle_z])
        rotate([90, 0, 0])
            rotate_extrude(convexity = 10)
                translate([handle_r, 0, 0])
                    circle(r = handle_thick / 2);
}

// ===== 組み立て =====
module mug() {
    union() {
        cup_body();
        // 取手のうちカップ内部に入り込む部分を削除
        difference() {
            handle_ring();
            translate([0, 0, -1])
                cylinder(h = height + 2, r = inner_r);
        }
    }
}

mug();
adaptive (default) success →
adaptive
10.4s · 220/728t · $0.0193
SCAD (58 lines)
// ===== マグカップ =====
// 外径 80mm / 高さ 100mm / 肉厚 4mm / 底厚 6mm
// 取手: リング状(トーラス)、リング半径 12mm

$fn = 120;

outer_d      = 80;    // 外径
outer_r      = outer_d / 2;
cup_h        = 100;   // 全高
wall         = 4;     // 側面の肉厚
bottom_t     = 6;     // 底の厚み

inner_r      = outer_r - wall;      // 内側半径 = 36
inner_h      = cup_h - bottom_t;    // 内側の深さ = 94

// 取手(トーラス)パラメータ
handle_R     = 12;    // リングの中心円半径(穴の大きさを決める)
handle_r     = 5;     // 断面(チューブ)の半径
handle_z     = cup_h / 2;             // 中心高さ
handle_off   = outer_r + handle_R - 6; // 外周から十分はみ出す位置

// --- トーラス(リング)モジュール ---
module torus(R, r) {
    rotate_extrude(convexity = 10)
        translate([R, 0, 0])
            circle(r = r);
}

// --- カップ本体 ---
module cup_body() {
    difference() {
        cylinder(h = cup_h, r = outer_r);
        translate([0, 0, bottom_t])
            cylinder(h = inner_h + 1, r = inner_r);
    }
}

// --- 取手(縦向きのリング)---
module handle() {
    translate([handle_off, 0, handle_z])
        rotate([90, 0, 0])           // リング面を XZ 平面に立てる
            torus(handle_R, handle_r);
}

// --- 組み立て ---
module mug() {
    difference() {
        union() {
            cup_body();
            handle();
        }
        // 取手が内側に飛び出さないよう、カップ内部を再度くり抜く
        translate([0, 0, bottom_t])
            cylinder(h = inner_h + 1, r = inner_r);
    }
}

mug();
dynamicnot run
—