tier-1-mug / gemini-3.1-flash-lite-preview
6 run / 累計 16.9s / 累計 $0.0013
gemini flash-lite 3.1 preview bare prompt
OpenSCAD で、外径 80mm、高さ 100mm、肉厚 4mm のマグカップを作ってください。
底面の厚みは 6mm とし、内側はくり抜いて飲み物を入れられる形状にしてください。
さらに、側面には外径方向に飛び出す半径 12mm の取手(リング状の取手)を付けてください。
取手はカップの中心高さあたりに付け、外周から十分にはみ出して指を通せる形にしてください。
完成したコード全体を ```openscad ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。
variant: thinking
2.0s
· 142/281t · $0.0001
SCAD (35 lines)
$fn = 100;
// カップのパラメータ
outer_d = 80;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
// 取手のパラメータ
handle_r = 12; // 取手の断面半径
handle_offset = 35; // カップ中心からの距離
handle_center_z = height / 2;
module mug() {
difference() {
// カップの外形
cylinder(d = outer_d, h = height);
// 中をくり抜く
translate([0, 0, bottom_thickness])
cylinder(d = outer_d - wall_thickness * 2, h = height - bottom_thickness + 0.1);
}
// 取手
translate([outer_d / 2 - wall_thickness / 2, 0, handle_center_z]) {
rotate([0, 90, 0]) {
rotate_extrude(angle = 360) {
translate([handle_offset, 0, 0])
circle(r = handle_r);
}
}
}
}
mug();
—
dynamic (default) success →
1.9s
· 142/330t · $0.0001
SCAD (37 lines)
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
handle_radius = 12; // 取手の断面半径
handle_offset = 25; // 取手の中心位置(カップ中心からの距離)
handle_center_z = height / 2; // 取手の高さ(中心)
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
// カップの側面に接するように配置
translate([outer_r - wall_thick, 0, handle_center_z])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
translate([handle_offset, 0, 0])
circle(r = handle_radius);
}
union() {
mug();
handle();
}
iteration: iter-png
3.2s
· 1598/361t · $0.0003
diff vs bare: +7/-6
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
- handle_radius = 12; // 取手の断面半径
- handle_offset = 25; // 取手の中心位置(カップ中心からの距離)
- handle_center_z = height / 2; // 取手の高さ(中心)
+ handle_radius = 12; // 取手の断面半径
+ handle_ring_radius = 20; // 取手のリングの半径(指を通す穴の大きさを考慮)
+ handle_center_z = height / 2; // 取手の高さ(中心)
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
- // カップの側面に接するように配置
- translate([outer_r - wall_thick, 0, handle_center_z])
+ // カップの側面から外側にせり出すように配置
+ // handle_ring_radius を調整して指が通るスペースを確保
+ translate([outer_r - 2, 0, handle_center_z])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
- translate([handle_offset, 0, 0])
+ translate([handle_ring_radius, 0, 0])
circle(r = handle_radius);
}
union() {
mug();
handle();
}
SCAD (38 lines)
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
handle_radius = 12; // 取手の断面半径
handle_ring_radius = 20; // 取手のリングの半径(指を通す穴の大きさを考慮)
handle_center_z = height / 2; // 取手の高さ(中心)
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
// カップの側面から外側にせり出すように配置
// handle_ring_radius を調整して指が通るスペースを確保
translate([outer_r - 2, 0, handle_center_z])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
translate([handle_ring_radius, 0, 0])
circle(r = handle_radius);
}
union() {
mug();
handle();
}
4.6s
· 1629/350t · $0.0003
diff vs i1: +8/-8
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
- handle_radius = 12; // 取手の断面半径
- handle_ring_radius = 20; // 取手のリングの半径(指を通す穴の大きさを考慮)
- handle_center_z = height / 2; // 取手の高さ(中心)
+ handle_r = 12; // 取手の断面半径
+ handle_ring_r = 20; // 取手のリングの半径(中心線までの距離)
+ // 取手の位置調整:リングがカップにめり込みすぎないよう調整
+ handle_offset = outer_r - 2;
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
- // カップの側面から外側にせり出すように配置
- // handle_ring_radius を調整して指が通るスペースを確保
- translate([outer_r - 2, 0, handle_center_z])
+ // カップの側面から突き出すリング状の取手
+ translate([handle_offset + handle_r, 0, height / 2])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
- translate([handle_ring_radius, 0, 0])
- circle(r = handle_radius);
+ translate([handle_ring_r, 0, 0])
+ circle(r = handle_r);
}
union() {
mug();
handle();
}
SCAD (38 lines)
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
handle_r = 12; // 取手の断面半径
handle_ring_r = 20; // 取手のリングの半径(中心線までの距離)
// 取手の位置調整:リングがカップにめり込みすぎないよう調整
handle_offset = outer_r - 2;
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
// カップの側面から突き出すリング状の取手
translate([handle_offset + handle_r, 0, height / 2])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
translate([handle_ring_r, 0, 0])
circle(r = handle_r);
}
union() {
mug();
handle();
}
3.2s
· 1618/371t · $0.0003
diff vs i2: +7/-5
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
- handle_r = 12; // 取手の断面半径
- handle_ring_r = 20; // 取手のリングの半径(中心線までの距離)
- // 取手の位置調整:リングがカップにめり込みすぎないよう調整
+ handle_r = 8; // 取手の断面半径 (指を通しやすくするため適宜調整)
+ handle_ring_r = 15; // 取手のリングの半径
+ // 取手をカップに接合するためのオフセット調整
+ // リングの外縁がカップの外周にちょうど触れるように配置
handle_offset = outer_r - 2;
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
- // カップの側面から突き出すリング状の取手
- translate([handle_offset + handle_r, 0, height / 2])
+ // カップの側面中心に配置
+ // intersectionを使用してカップ本体と不自然に重ならないようにする
+ translate([outer_r - 2, 0, height / 2])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
translate([handle_ring_r, 0, 0])
circle(r = handle_r);
}
union() {
mug();
handle();
}
SCAD (40 lines)
$fn = 100;
// カップ本体のパラメータ
outer_r = 40; // 外径 80mm
height = 100; // 高さ 100mm
wall_thick = 4; // 肉厚 4mm
bottom_thick = 6;// 底の厚み 6mm
// 取手のパラメータ
handle_r = 8; // 取手の断面半径 (指を通しやすくするため適宜調整)
handle_ring_r = 15; // 取手のリングの半径
// 取手をカップに接合するためのオフセット調整
// リングの外縁がカップの外周にちょうど触れるように配置
handle_offset = outer_r - 2;
module mug() {
difference() {
// カップの外形
cylinder(r = outer_r, h = height);
// 内側のくり抜き
translate([0, 0, bottom_thick])
cylinder(r = outer_r - wall_thick, h = height - bottom_thick + 0.1);
}
}
module handle() {
// カップの側面中心に配置
// intersectionを使用してカップ本体と不自然に重ならないようにする
translate([outer_r - 2, 0, height / 2])
rotate([0, 90, 0])
rotate_extrude(angle = 360)
translate([handle_ring_r, 0, 0])
circle(r = handle_r);
}
union() {
mug();
handle();
}