vibe-openscad

tier-1-mug / gemini-3-flash-preview

6 run / 累計 92.1s / 累計 $0.0058

gemini flash 3 preview bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 14.3s · 142/237t · $0.0006
SCAD (18 lines)
$fn = 100;

// マグカップ本体の作成
difference() {
    // 外側の円柱 (外径 80mm -> 半径 40mm, 高さ 100mm)
    cylinder(h = 100, r = 40);

    // 内側のくり抜き (肉厚 4mm -> 半径 36mm, 底面の厚み 6mm)
    translate([0, 0, 6])
        cylinder(h = 100, r = 36);
}

// 取手 (リング状) の作成
translate([50, 0, 50]) // カップの中心高さ(50mm)かつ外側に配置
rotate([90, 0, 0])      // リングを垂直に立たせる
rotate_extrude()
translate([12, 0, 0])   // 取手の半径 12mm
circle(r = 4);          // 取手自体の太さ (半径 4mm)

prompt

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

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

variant: thinking

off success
off
2.4s · 142/282t · $0.0007
SCAD (30 lines)
// パラメータ設定
outer_diameter = 80;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;

handle_radius = 25; // 取手全体の半径
handle_tube_radius = 4; // 取手の棒の太さ(半径)
handle_offset = 35; // カップの中心から取手の中心までの距離

$fn = 100; // 解像度

union() {
    // カップ本体
    difference() {
        // 外側
        cylinder(d = outer_diameter, h = height);
        
        // 内側のくり抜き
        translate([0, 0, bottom_thickness])
            cylinder(d = outer_diameter - (wall_thickness * 2), h = height);
    }

    // 取手 (リング状)
    translate([outer_diameter / 2 + 10, 0, height / 2])
    rotate([0, 90, 0])
    rotate_extrude(angle = 360)
    translate([handle_radius - handle_tube_radius, 0, 0])
    circle(r = handle_tube_radius);
}
adaptivenot run
dynamic (default) success
dynamic
14.3s · 142/237t · $0.0006
SCAD (18 lines)
$fn = 100;

// マグカップ本体の作成
difference() {
    // 外側の円柱 (外径 80mm -> 半径 40mm, 高さ 100mm)
    cylinder(h = 100, r = 40);

    // 内側のくり抜き (肉厚 4mm -> 半径 36mm, 底面の厚み 6mm)
    translate([0, 0, 6])
        cylinder(h = 100, r = 36);
}

// 取手 (リング状) の作成
translate([50, 0, 50]) // カップの中心高さ(50mm)かつ外側に配置
rotate([90, 0, 0])      // リングを垂直に立たせる
rotate_extrude()
translate([12, 0, 0])   // 取手の半径 12mm
circle(r = 4);          // 取手自体の太さ (半径 4mm)

iteration: iter-png

i1 success
iter 1
20.6s · 1506/298t · $0.0012
diff vs bare: +12/-9
  $fn = 100;
  
- // マグカップ本体の作成
+ // マグカップ本体
  difference() {
-     // 外側の円柱 (外径 80mm -> 半径 40mm, 高さ 100mm)
+     // 外側: 外径 80mm (半径 40mm)、高さ 100mm
      cylinder(h = 100, r = 40);
  
-     // 内側のくり抜き (肉厚 4mm -> 半径 36mm, 底面の厚み 6mm)
+     // 内側: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
+     // プレビュー時の上面のチラつき(Z-fighting)を防ぐため、高さは少し余分に持たせる
      translate([0, 0, 6])
-         cylinder(h = 100, r = 36);
+         cylinder(h = 95, r = 36);
  }
  
- // 取手 (リング状) の作成
- translate([50, 0, 50]) // カップの中心高さ(50mm)かつ外側に配置
- rotate([90, 0, 0])      // リングを垂直に立たせる
+ // 取手: 半径 12mm のリング状
+ // カップの外周(r=40)に対し、中心を X=50 に配置することで、
+ // リングの内側の穴が外壁からしっかり露出するように調整(穴は X=42 から始まる)
+ translate([50, 0, 50]) 
+ rotate([90, 0, 0])      // 取手を垂直に立てる
  rotate_extrude()
- translate([12, 0, 0])   // 取手の半径 12mm
- circle(r = 4);          // 取手自体の太さ (半径 4mm)
+ translate([12, 0, 0])   // 取手の中心半径 12mm
+ circle(r = 4);          // 取手自体の断面半径 (太さ)
SCAD (21 lines)
$fn = 100;

// マグカップ本体
difference() {
    // 外側: 外径 80mm (半径 40mm)、高さ 100mm
    cylinder(h = 100, r = 40);

    // 内側: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
    // プレビュー時の上面のチラつき(Z-fighting)を防ぐため、高さは少し余分に持たせる
    translate([0, 0, 6])
        cylinder(h = 95, r = 36);
}

// 取手: 半径 12mm のリング状
// カップの外周(r=40)に対し、中心を X=50 に配置することで、
// リングの内側の穴が外壁からしっかり露出するように調整(穴は X=42 から始まる)
translate([50, 0, 50]) 
rotate([90, 0, 0])      // 取手を垂直に立てる
rotate_extrude()
translate([12, 0, 0])   // 取手の中心半径 12mm
circle(r = 4);          // 取手自体の断面半径 (太さ)
i2 success
iter 2
17.2s · 1566/321t · $0.0013
diff vs i1: +11/-10
  $fn = 100;
  
  // マグカップ本体
  difference() {
-     // 外側: 外径 80mm (半径 40mm)、高さ 100mm
+     // 外径 80mm (半径 40mm)、高さ 100mm
      cylinder(h = 100, r = 40);
  
-     // 内側: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
-     // プレビュー時の上面のチラつき(Z-fighting)を防ぐため、高さは少し余分に持たせる
+     // 内側のくり抜き: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
+     // プレビュー時の上面のチラつきを防ぐため、高さは余裕を持たせて配置
      translate([0, 0, 6])
-         cylinder(h = 95, r = 36);
+         cylinder(h = 100, r = 36);
  }
  
- // 取手: 半径 12mm のリング状
- // カップの外周(r=40)に対し、中心を X=50 に配置することで、
- // リングの内側の穴が外壁からしっかり露出するように調整(穴は X=42 から始まる)
- translate([50, 0, 50]) 
- rotate([90, 0, 0])      // 取手を垂直に立てる
+ // 取手: 半径 12mm のリング状 (ドーナツ形)
+ // 中心高さ 50mm に配置
+ // 取手の中心を X=52 に配置することで、リングの一部が外壁(X=40)に埋まり、
+ // かつ内壁(X=36)を突き破らないように設計(52 - 12 - 3.5 = 36.5mm)
+ translate([52, 0, 50]) 
+ rotate([90, 0, 0])
  rotate_extrude()
  translate([12, 0, 0])   // 取手の中心半径 12mm
- circle(r = 4);          // 取手自体の断面半径 (太さ)
+ circle(r = 3.5);        // 取手の断面半径 (持ちやすい太さ)
SCAD (22 lines)
$fn = 100;

// マグカップ本体
difference() {
    // 外径 80mm (半径 40mm)、高さ 100mm
    cylinder(h = 100, r = 40);

    // 内側のくり抜き: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
    // プレビュー時の上面のチラつきを防ぐため、高さは余裕を持たせて配置
    translate([0, 0, 6])
        cylinder(h = 100, r = 36);
}

// 取手: 半径 12mm のリング状 (ドーナツ形)
// 中心高さ 50mm に配置
// 取手の中心を X=52 に配置することで、リングの一部が外壁(X=40)に埋まり、
// かつ内壁(X=36)を突き破らないように設計(52 - 12 - 3.5 = 36.5mm)
translate([52, 0, 50]) 
rotate([90, 0, 0])
rotate_extrude()
translate([12, 0, 0])   // 取手の中心半径 12mm
circle(r = 3.5);        // 取手の断面半径 (持ちやすい太さ)
i3 success
iter 3
23.2s · 1589/339t · $0.0013
diff vs i2: +6/-6
  $fn = 100;
  
  // マグカップ本体
  difference() {
      // 外径 80mm (半径 40mm)、高さ 100mm
      cylinder(h = 100, r = 40);
  
      // 内側のくり抜き: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
-     // プレビュー時の上面のチラつきを防ぐため、高さは余裕を持たせて配置
+     // プレビュー時の上面のチラつき(Z-fighting)を防ぐため、高さには余裕を持たせて配置
      translate([0, 0, 6])
          cylinder(h = 100, r = 36);
  }
  
  // 取手: 半径 12mm のリング状 (ドーナツ形)
- // 中心高さ 50mm に配置
- // 取手の中心を X=52 に配置することで、リングの一部が外壁(X=40)に埋まり、
- // かつ内壁(X=36)を突き破らないように設計(52 - 12 - 3.5 = 36.5mm)
+ // カップの中心高さ 50mm に配置
+ // 取手の中心を X=52 に配置することで、リングの断面(半径3.5mm)が外壁(X=40)にしっかり埋まり、
+ // かつ内壁(X=36)を突き破らない位置に設定しています(52 - 12 - 3.5 = 36.5mm)
  translate([52, 0, 50]) 
  rotate([90, 0, 0])
  rotate_extrude()
- translate([12, 0, 0])   // 取手の中心半径 12mm
- circle(r = 3.5);        // 取手の断面半径 (持ちやすい太さ)
+ translate([12, 0, 0])   // 取手のリング半径 12mm
+ circle(r = 3.5);        // 取手の断面半径 (指を通しやすい太さ)
SCAD (22 lines)
$fn = 100;

// マグカップ本体
difference() {
    // 外径 80mm (半径 40mm)、高さ 100mm
    cylinder(h = 100, r = 40);

    // 内側のくり抜き: 肉厚 4mm (半径 40-4=36mm)、底面の厚み 6mm
    // プレビュー時の上面のチラつき(Z-fighting)を防ぐため、高さには余裕を持たせて配置
    translate([0, 0, 6])
        cylinder(h = 100, r = 36);
}

// 取手: 半径 12mm のリング状 (ドーナツ形)
// カップの中心高さ 50mm に配置
// 取手の中心を X=52 に配置することで、リングの断面(半径3.5mm)が外壁(X=40)にしっかり埋まり、
// かつ内壁(X=36)を突き破らない位置に設定しています(52 - 12 - 3.5 = 36.5mm)
translate([52, 0, 50]) 
rotate([90, 0, 0])
rotate_extrude()
translate([12, 0, 0])   // 取手のリング半径 12mm
circle(r = 3.5);        // 取手の断面半径 (指を通しやすい太さ)