vibe-openscad

tier-1-mug / gemini-3.1-pro-preview

5 run / 累計 319.9s / 累計 $0.0176

gemini pro 3.1 preview bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 46.7s · 142/254t · $0.0027
SCAD (22 lines)
$fn = 100;

difference() {
    union() {
        // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
        cylinder(h = 100, r = 40);
        
        // 取手 (高さ中心 Z=50あたりに配置)
        // 外周から十分にはみ出させるため X=46 へオフセット
        translate([46, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude()
        // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
        translate([12, 0, 0])
        circle(r = 4);
    }
    
    // カップ内側 (肉厚4mm -> 内径 半径36mm)
    // 底面の厚み6mmを残して上までくり抜く
    translate([0, 0, 6])
    cylinder(h = 95, r = 36);
}

prompt

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

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

variant: thinking

offnot run
adaptivenot run
dynamic (default) success
dynamic
46.7s · 142/254t · $0.0027
SCAD (22 lines)
$fn = 100;

difference() {
    union() {
        // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
        cylinder(h = 100, r = 40);
        
        // 取手 (高さ中心 Z=50あたりに配置)
        // 外周から十分にはみ出させるため X=46 へオフセット
        translate([46, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude()
        // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
        translate([12, 0, 0])
        circle(r = 4);
    }
    
    // カップ内側 (肉厚4mm -> 内径 半径36mm)
    // 底面の厚み6mmを残して上までくり抜く
    translate([0, 0, 6])
    cylinder(h = 95, r = 36);
}

iteration: iter-png

i1 success
iter 1
40.0s · 1522/255t · $0.0045
diff vs bare: +5/-5
  $fn = 100;
  
  difference() {
      union() {
          // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
          cylinder(h = 100, r = 40);
          
-         // 取手 (高さ中心 Z=50あたりに配置)
-         // 外周から十分にはみ出させるため X=46 へオフセット
-         translate([46, 0, 50])
+         // 取手 (高さ中心 Z=50に配置)
+         // 外周から十分にはみ出させるため X=50 へオフセット
+         translate([50, 0, 50])
          rotate([90, 0, 0])
          rotate_extrude()
          // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
          translate([12, 0, 0])
          circle(r = 4);
      }
      
      // カップ内側 (肉厚4mm -> 内径 半径36mm)
-     // 底面の厚み6mmを残して上までくり抜く
+     // 底面の厚み6mmを残して上まで確実にくり抜く
      translate([0, 0, 6])
-     cylinder(h = 95, r = 36);
+     cylinder(h = 100, r = 36);
  }
SCAD (22 lines)
$fn = 100;

difference() {
    union() {
        // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
        cylinder(h = 100, r = 40);
        
        // 取手 (高さ中心 Z=50に配置)
        // 外周から十分にはみ出させるため X=50 へオフセット
        translate([50, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude()
        // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
        translate([12, 0, 0])
        circle(r = 4);
    }
    
    // カップ内側 (肉厚4mm -> 内径 半径36mm)
    // 底面の厚み6mmを残して上まで確実にくり抜く
    translate([0, 0, 6])
    cylinder(h = 100, r = 36);
}
i2 success
iter 2
89.9s · 1523/255t · $0.0045
diff vs i1: +0/-0
  $fn = 100;
  
  difference() {
      union() {
          // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
          cylinder(h = 100, r = 40);
          
          // 取手 (高さ中心 Z=50に配置)
          // 外周から十分にはみ出させるため X=50 へオフセット
          translate([50, 0, 50])
          rotate([90, 0, 0])
          rotate_extrude()
          // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
          translate([12, 0, 0])
          circle(r = 4);
      }
      
      // カップ内側 (肉厚4mm -> 内径 半径36mm)
      // 底面の厚み6mmを残して上まで確実にくり抜く
      translate([0, 0, 6])
      cylinder(h = 100, r = 36);
  }
SCAD (22 lines)
$fn = 100;

difference() {
    union() {
        // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
        cylinder(h = 100, r = 40);
        
        // 取手 (高さ中心 Z=50に配置)
        // 外周から十分にはみ出させるため X=50 へオフセット
        translate([50, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude()
        // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
        translate([12, 0, 0])
        circle(r = 4);
    }
    
    // カップ内側 (肉厚4mm -> 内径 半径36mm)
    // 底面の厚み6mmを残して上まで確実にくり抜く
    translate([0, 0, 6])
    cylinder(h = 100, r = 36);
}
i3 success
iter 3
96.6s · 1523/134t · $0.0032
diff vs i2: +1/-7
  $fn = 100;
  
  difference() {
      union() {
-         // カップ外側 (外径80mm -> 半径40mm、高さ100mm)
          cylinder(h = 100, r = 40);
          
-         // 取手 (高さ中心 Z=50に配置)
-         // 外周から十分にはみ出させるため X=50 へオフセット
-         translate([50, 0, 50])
+         translate([52, 0, 50])
          rotate([90, 0, 0])
          rotate_extrude()
-         // 半径12mmのリング状の取手 (断面半径は肉厚に合わせた4mm)
          translate([12, 0, 0])
          circle(r = 4);
      }
      
-     // カップ内側 (肉厚4mm -> 内径 半径36mm)
-     // 底面の厚み6mmを残して上まで確実にくり抜く
      translate([0, 0, 6])
      cylinder(h = 100, r = 36);
  }
SCAD (16 lines)
$fn = 100;

difference() {
    union() {
        cylinder(h = 100, r = 40);
        
        translate([52, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude()
        translate([12, 0, 0])
        circle(r = 4);
    }
    
    translate([0, 0, 6])
    cylinder(h = 100, r = 36);
}