vibe-openscad

tier-2-offset-handle-mug / gemini-3.1-pro-preview

5 run / 累計 354.2s / 累計 $0.0190

gemini pro 3.1 preview bare

bare (provider default effort)

run detail →
render
bare render of tier-2-offset-handle-mug
loading STL…
success 66.2s · 232/244t · $0.0027
SCAD (28 lines)
$fn = 100;

union() {
    // 本体
    difference() {
        cylinder(h = 90, r = 40);
        translate([0, 0, 6])
            cylinder(h = 90, r = 35);
    }
    
    // 取手
    translate([40, 0, 45])
    rotate([90, 0, 0])
    linear_extrude(height = 15, center = true) {
        difference() {
            // 取手の外側
            union() {
                translate([-3, -23]) square([13, 46]);
                translate([10, 0]) circle(r = 23);
            }
            // 取手の内側の空間
            union() {
                translate([-4, -15]) square([14, 30]);
                translate([10, 0]) circle(r = 15);
            }
        }
    }
}

prompt

OpenSCAD で、向きが指定されたマグカップを作ってください。

本体:
- 外径 80mm、内径 70mm(肉厚 5mm)、高さ 90mm の円筒形マグ
- 底面の厚みは 6mm
- 内側は飲み物を入れられるよう中空

取手(handle):
- マグの **+X 軸方向の側面のみ** に付ける(他の方向には付けない)
- 取手は D 字形状(外側が半円、本体側が直線)で、本体外周にしっかり接続する
- 取手の内側の空間は高さ 30mm × 幅 25mm(指 3 本ぐらい入る)
- 取手はマグの高さ方向の中央付近に付ける
- 本体と取手は確実に union され、マニフォールド(隙間や宙吊りなし)を保つ

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

variant: thinking

offnot run
adaptivenot run
dynamic (default) success
dynamic
66.2s · 232/244t · $0.0027
SCAD (28 lines)
$fn = 100;

union() {
    // 本体
    difference() {
        cylinder(h = 90, r = 40);
        translate([0, 0, 6])
            cylinder(h = 90, r = 35);
    }
    
    // 取手
    translate([40, 0, 45])
    rotate([90, 0, 0])
    linear_extrude(height = 15, center = true) {
        difference() {
            // 取手の外側
            union() {
                translate([-3, -23]) square([13, 46]);
                translate([10, 0]) circle(r = 23);
            }
            // 取手の内側の空間
            union() {
                translate([-4, -15]) square([14, 30]);
                translate([10, 0]) circle(r = 15);
            }
        }
    }
}

iteration: iter-png

i1 success
iter 1
75.2s · 1608/244t · $0.0044
diff vs bare: +0/-0
  $fn = 100;
  
  union() {
      // 本体
      difference() {
          cylinder(h = 90, r = 40);
          translate([0, 0, 6])
              cylinder(h = 90, r = 35);
      }
      
      // 取手
      translate([40, 0, 45])
      rotate([90, 0, 0])
      linear_extrude(height = 15, center = true) {
          difference() {
              // 取手の外側
              union() {
                  translate([-3, -23]) square([13, 46]);
                  translate([10, 0]) circle(r = 23);
              }
              // 取手の内側の空間
              union() {
                  translate([-4, -15]) square([14, 30]);
                  translate([10, 0]) circle(r = 15);
              }
          }
      }
  }
SCAD (28 lines)
$fn = 100;

union() {
    // 本体
    difference() {
        cylinder(h = 90, r = 40);
        translate([0, 0, 6])
            cylinder(h = 90, r = 35);
    }
    
    // 取手
    translate([40, 0, 45])
    rotate([90, 0, 0])
    linear_extrude(height = 15, center = true) {
        difference() {
            // 取手の外側
            union() {
                translate([-3, -23]) square([13, 46]);
                translate([10, 0]) circle(r = 23);
            }
            // 取手の内側の空間
            union() {
                translate([-4, -15]) square([14, 30]);
                translate([10, 0]) circle(r = 15);
            }
        }
    }
}
i2 success
iter 2
55.6s · 1608/244t · $0.0044
diff vs i1: +0/-0
  $fn = 100;
  
  union() {
      // 本体
      difference() {
          cylinder(h = 90, r = 40);
          translate([0, 0, 6])
              cylinder(h = 90, r = 35);
      }
      
      // 取手
      translate([40, 0, 45])
      rotate([90, 0, 0])
      linear_extrude(height = 15, center = true) {
          difference() {
              // 取手の外側
              union() {
                  translate([-3, -23]) square([13, 46]);
                  translate([10, 0]) circle(r = 23);
              }
              // 取手の内側の空間
              union() {
                  translate([-4, -15]) square([14, 30]);
                  translate([10, 0]) circle(r = 15);
              }
          }
      }
  }
SCAD (28 lines)
$fn = 100;

union() {
    // 本体
    difference() {
        cylinder(h = 90, r = 40);
        translate([0, 0, 6])
            cylinder(h = 90, r = 35);
    }
    
    // 取手
    translate([40, 0, 45])
    rotate([90, 0, 0])
    linear_extrude(height = 15, center = true) {
        difference() {
            // 取手の外側
            union() {
                translate([-3, -23]) square([13, 46]);
                translate([10, 0]) circle(r = 23);
            }
            // 取手の内側の空間
            union() {
                translate([-4, -15]) square([14, 30]);
                translate([10, 0]) circle(r = 15);
            }
        }
    }
}
i3 success
iter 3
91.0s · 1608/264t · $0.0046
diff vs i2: +23/-21
  $fn = 100;
  
- union() {
-     // 本体
-     difference() {
+ difference() {
+     union() {
+         // 本体外側
          cylinder(h = 90, r = 40);
-         translate([0, 0, 6])
-             cylinder(h = 90, r = 35);
-     }
-     
-     // 取手
-     translate([40, 0, 45])
-     rotate([90, 0, 0])
-     linear_extrude(height = 15, center = true) {
-         difference() {
-             // 取手の外側
-             union() {
-                 translate([-3, -23]) square([13, 46]);
-                 translate([10, 0]) circle(r = 23);
+         
+         // 取手
+         translate([40, 0, 45])
+         rotate([90, 0, 0])
+         linear_extrude(height = 15, center = true) {
+             difference() {
+                 // 取手の外側
+                 union() {
+                     translate([-10, -23]) square([20, 46]);
+                     translate([10, 0]) circle(r = 23);
+                 }
+                 // 取手の内側の空間
+                 union() {
+                     translate([-10, -15]) square([20, 30]);
+                     translate([10, 0]) circle(r = 15);
+                 }
              }
-             // 取手の内側の空間
-             union() {
-                 translate([-4, -15]) square([14, 30]);
-                 translate([10, 0]) circle(r = 15);
-             }
          }
      }
+     
+     // 本体内側(飲み物を入れる中空部分)
+     translate([0, 0, 6])
+         cylinder(h = 90, r = 35);
  }
SCAD (30 lines)
$fn = 100;

difference() {
    union() {
        // 本体外側
        cylinder(h = 90, r = 40);
        
        // 取手
        translate([40, 0, 45])
        rotate([90, 0, 0])
        linear_extrude(height = 15, center = true) {
            difference() {
                // 取手の外側
                union() {
                    translate([-10, -23]) square([20, 46]);
                    translate([10, 0]) circle(r = 23);
                }
                // 取手の内側の空間
                union() {
                    translate([-10, -15]) square([20, 30]);
                    translate([10, 0]) circle(r = 15);
                }
            }
        }
    }
    
    // 本体内側(飲み物を入れる中空部分)
    translate([0, 0, 6])
        cylinder(h = 90, r = 35);
}