tier-1-mug / o4-mini-2025-04-16
7 run / 累計 300.3s / 累計 $0.1639
openai o4 mini 2025-04-16 bare prompt
OpenSCAD で、外径 80mm、高さ 100mm、肉厚 4mm のマグカップを作ってください。
底面の厚みは 6mm とし、内側はくり抜いて飲み物を入れられる形状にしてください。
さらに、側面には外径方向に飛び出す半径 12mm の取手(リング状の取手)を付けてください。
取手はカップの中心高さあたりに付け、外周から十分にはみ出して指を通せる形にしてください。
完成したコード全体を ```openscad ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。
variant: effort
9.1s
· 168/1011t · $0.0046
SCAD (38 lines)
// マグカップのパラメータ
outer_d = 80; // 外径
height = 100; // 高さ
wall_t = 4; // 壁厚
bottom_t = 6; // 底厚
handle_offset = 12; // 取手のカップ外壁からの突出量
handle_r = 6; // 取手チューブの断面半径
module mug() {
// 外形
cylinder(h = height, r = outer_d/2, $fn=100);
// 内部くり抜き
translate([0,0,bottom_t])
cylinder(h = height - bottom_t, r = outer_d/2 - wall_t, $fn=100);
}
module handle() {
// トーラス風の取手 (rotate_extrude)
translate([outer_d/2 + handle_offset, 0, height/2])
rotate_extrude($fn=100)
translate([handle_r, 0, 0])
circle(r = handle_r, $fn=50);
}
difference() {
mug();
// 内部をくり抜く
translate([0,0,0])
// 図形を上位で差分扱い(既に内側だけくり抜いているため不要ですが構造示すため)
// ここは空
cube([0,0,0]);
}
union() {
// カップ本体
mug();
// 取手を追加
handle();
}
medium (default) success →
19.9s
· 168/2660t · $0.0119
SCAD (26 lines)
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
// リング状取手
module handle() {
// トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
rotate_extrude()
translate([52, 0, 50])
circle(r = 12);
}
// 結合
union() {
mug();
handle();
}
112.6s
· 168/16229t · $0.0716
SCAD (34 lines)
$fn = 100;
outer_d = 80;
height = 100;
wall_thick = 4;
bottom_thick = 6;
outer_r = outer_d/2;
inner_r = outer_r - wall_thick;
handle_r = 12;
module mug() {
difference() {
// 外胴
cylinder(h = height, r = outer_r);
// 内胴(底面厚みを残して上部をくり抜く)
translate([0, 0, bottom_thick])
cylinder(h = height - bottom_thick, r = inner_r);
}
}
module handle() {
// リング状の取手を torus で作成(マグ外周に面一接触)
rotate([90, 0, 0])
rotate_extrude()
translate([outer_r + handle_r, 0])
circle(r = handle_r);
}
union() {
mug();
// 取手はカップの中心高さに配置
translate([0, 0, height/2])
handle();
}
—
—
iteration: iter-png
78.6s
· 1264/7059t · $0.0325
diff vs bare: +0/-0
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
// リング状取手
module handle() {
// トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
rotate_extrude()
translate([52, 0, 50])
circle(r = 12);
}
// 結合
union() {
mug();
handle();
}
SCAD (26 lines)
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
// リング状取手
module handle() {
// トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
rotate_extrude()
translate([52, 0, 50])
circle(r = 12);
}
// 結合
union() {
mug();
handle();
}
46.1s
· 1264/5121t · $0.0239
diff vs i1: +6/-5
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
- // リング状取手
+ // リング状取手(指が通る部分が外径から12mm飛び出す)
module handle() {
- // トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
- rotate_extrude()
- translate([52, 0, 50])
- circle(r = 12);
+ // プロファイルとして円(r=6)を、X=46, Y=50 の位置に置いて回転押し出し
+ // -> 内側R=46-6=40でカップに接触、外側R=46+6=52で外径40から12mm突出
+ rotate_extrude($fn = 100)
+ translate([46, 50])
+ circle(r = 6, $fn = 50);
}
// 結合
union() {
mug();
handle();
}
SCAD (27 lines)
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
// リング状取手(指が通る部分が外径から12mm飛び出す)
module handle() {
// プロファイルとして円(r=6)を、X=46, Y=50 の位置に置いて回転押し出し
// -> 内側R=46-6=40でカップに接触、外側R=46+6=52で外径40から12mm突出
rotate_extrude($fn = 100)
translate([46, 50])
circle(r = 6, $fn = 50);
}
// 結合
union() {
mug();
handle();
}
14.1s
· 1324/1383t · $0.0075
diff vs i2: +5/-6
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
- // リング状取手(指が通る部分が外径から12mm飛び出す)
+ // リング状取手(外周から半径 12mm 飛び出し、断面半径 12mm)
module handle() {
- // プロファイルとして円(r=6)を、X=46, Y=50 の位置に置いて回転押し出し
- // -> 内側R=46-6=40でカップに接触、外側R=46+6=52で外径40から12mm突出
- rotate_extrude($fn = 100)
- translate([46, 50])
- circle(r = 6, $fn = 50);
+ translate([0, 0, 50]) // カップ中心高さに配置
+ rotate_extrude()
+ translate([80/2 + 12, 0, 0]) // 外径40 + 飛び出し12 = 52
+ circle(r = 12);
}
// 結合
union() {
mug();
handle();
}
SCAD (26 lines)
$fn = 100;
// マグカップ本体
module mug() {
difference() {
// 外形
cylinder(d = 80, h = 100);
// 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
translate([0, 0, 6])
cylinder(d = 80 - 2 * 4, h = 100 - 6);
}
}
// リング状取手(外周から半径 12mm 飛び出し、断面半径 12mm)
module handle() {
translate([0, 0, 50]) // カップ中心高さに配置
rotate_extrude()
translate([80/2 + 12, 0, 0]) // 外径40 + 飛び出し12 = 52
circle(r = 12);
}
// 結合
union() {
mug();
handle();
}