vibe-openscad

tier-1-mug / claude-sonnet-4-5-20250929

5 run / 累計 20.1s / 累計 $0.0266

claude sonnet 4.5 2025-09-29 bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 3.7s · 210/171t · $0.0032
SCAD (19 lines)
$fn = 100;

difference() {
    union() {
        // 外側の円筒
        cylinder(h = 100, d = 80);
        
        // 取手
        translate([40, 0, 50])
        rotate([0, 90, 0])
        rotate_extrude(angle = 180, convexity = 10)
        translate([20, 0, 0])
        circle(r = 12);
    }
    
    // 内側のくり抜き
    translate([0, 0, 6])
    cylinder(h = 100, d = 80 - 8);
}

prompt

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

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

variant: thinking

off (default) success
off
3.7s · 210/171t · $0.0032
SCAD (19 lines)
$fn = 100;

difference() {
    union() {
        // 外側の円筒
        cylinder(h = 100, d = 80);
        
        // 取手
        translate([40, 0, 50])
        rotate([0, 90, 0])
        rotate_extrude(angle = 180, convexity = 10)
        translate([20, 0, 0])
        circle(r = 12);
    }
    
    // 内側のくり抜き
    translate([0, 0, 6])
    cylinder(h = 100, d = 80 - 8);
}
adaptivenot run
dynamicnot run

iteration: iter-png

i1 success
iter 1
4.0s · 1130/253t · $0.0072
diff vs bare: +9/-2
  $fn = 100;
  
  difference() {
      union() {
          // 外側の円筒
          cylinder(h = 100, d = 80);
          
          // 取手
          translate([40, 0, 50])
-         rotate([0, 90, 0])
+         rotate([90, 0, 0])
          rotate_extrude(angle = 180, convexity = 10)
          translate([20, 0, 0])
-         circle(r = 12);
+         circle(r = 6);
      }
      
      // 内側のくり抜き
      translate([0, 0, 6])
      cylinder(h = 100, d = 80 - 8);
+     
+     // 取手の内側のくり抜き
+     translate([40, 0, 50])
+     rotate([90, 0, 0])
+     rotate_extrude(angle = 180, convexity = 10)
+     translate([20, 0, 0])
+     circle(r = 3);
  }
SCAD (26 lines)
$fn = 100;

difference() {
    union() {
        // 外側の円筒
        cylinder(h = 100, d = 80);
        
        // 取手
        translate([40, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude(angle = 180, convexity = 10)
        translate([20, 0, 0])
        circle(r = 6);
    }
    
    // 内側のくり抜き
    translate([0, 0, 6])
    cylinder(h = 100, d = 80 - 8);
    
    // 取手の内側のくり抜き
    translate([40, 0, 50])
    rotate([90, 0, 0])
    rotate_extrude(angle = 180, convexity = 10)
    translate([20, 0, 0])
    circle(r = 3);
}
i2 success
iter 2
5.0s · 1212/222t · $0.0070
diff vs i1: +13/-13
  $fn = 100;
  
  difference() {
      union() {
          // 外側の円筒
          cylinder(h = 100, d = 80);
          
-         // 取手
-         translate([40, 0, 50])
-         rotate([90, 0, 0])
-         rotate_extrude(angle = 180, convexity = 10)
-         translate([20, 0, 0])
-         circle(r = 6);
+         // 取手(リング状)
+         translate([40 + 12, 0, 50])
+         rotate([0, 90, 0])
+         difference() {
+             torus(20, 6);
+         }
      }
      
      // 内側のくり抜き
      translate([0, 0, 6])
      cylinder(h = 100, d = 80 - 8);
-     
-     // 取手の内側のくり抜き
-     translate([40, 0, 50])
-     rotate([90, 0, 0])
-     rotate_extrude(angle = 180, convexity = 10)
-     translate([20, 0, 0])
-     circle(r = 3);
+ }
+ 
+ // トーラスモジュール
+ module torus(major_radius, minor_radius) {
+     rotate_extrude(convexity = 10)
+     translate([major_radius, 0, 0])
+     circle(r = minor_radius);
  }
SCAD (26 lines)
$fn = 100;

difference() {
    union() {
        // 外側の円筒
        cylinder(h = 100, d = 80);
        
        // 取手(リング状)
        translate([40 + 12, 0, 50])
        rotate([0, 90, 0])
        difference() {
            torus(20, 6);
        }
    }
    
    // 内側のくり抜き
    translate([0, 0, 6])
    cylinder(h = 100, d = 80 - 8);
}

// トーラスモジュール
module torus(major_radius, minor_radius) {
    rotate_extrude(convexity = 10)
    translate([major_radius, 0, 0])
    circle(r = minor_radius);
}
i3 success
iter 3
3.5s · 1181/171t · $0.0061
diff vs i2: +5/-12
  $fn = 100;
  
  difference() {
      union() {
          // 外側の円筒
          cylinder(h = 100, d = 80);
          
          // 取手(リング状)
-         translate([40 + 12, 0, 50])
-         rotate([0, 90, 0])
-         difference() {
-             torus(20, 6);
-         }
+         translate([40, 0, 50])
+         rotate([90, 0, 0])
+         rotate_extrude(convexity = 10)
+         translate([12, 0, 0])
+         circle(d = 8);
      }
      
      // 内側のくり抜き
      translate([0, 0, 6])
      cylinder(h = 100, d = 80 - 8);
- }
- 
- // トーラスモジュール
- module torus(major_radius, minor_radius) {
-     rotate_extrude(convexity = 10)
-     translate([major_radius, 0, 0])
-     circle(r = minor_radius);
  }
SCAD (19 lines)
$fn = 100;

difference() {
    union() {
        // 外側の円筒
        cylinder(h = 100, d = 80);
        
        // 取手(リング状)
        translate([40, 0, 50])
        rotate([90, 0, 0])
        rotate_extrude(convexity = 10)
        translate([12, 0, 0])
        circle(d = 8);
    }
    
    // 内側のくり抜き
    translate([0, 0, 6])
    cylinder(h = 100, d = 80 - 8);
}