vibe-openscad

tier-1-mug / gpt-5.5-2026-04-23

7 run / 累計 484.6s / 累計 $0.2500

openai gpt 5.5 2026-04-23 bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 66.1s · 168/3453t · $0.0347
SCAD (53 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;

handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;
handle_center_x = outer_r + handle_major_r + handle_tube_r - 1;
handle_center_z = height / 2;

module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_thickness])
            cylinder(h = height + 1, r = inner_r);
    }
}

module torus(major_r, tube_r) {
    rotate_extrude(convexity = 10)
        translate([major_r, 0, 0])
            circle(r = tube_r, $fn = 48);
}

module handle() {
    union() {
        translate([handle_center_x, 0, handle_center_z])
            rotate([90, 0, 0])
                torus(handle_major_r, handle_tube_r);

        for (zpos = [
            handle_center_z - handle_major_r,
            handle_center_z + handle_major_r
        ]) {
            translate([outer_r - 1, 0, zpos])
                rotate([0, 90, 0])
                    cylinder(
                        h = handle_center_x - (outer_r - 1),
                        r = handle_tube_r
                    );
        }
    }
}

union() {
    cup_body();
    handle();
}
パラメータ (6)
スライダを動かすと openscad-wasm で再レンダリング

prompt

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

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

variant: effort

low success
low
24.3s · 168/1162t · $0.0118
SCAD (32 lines)
$fn = 128;

outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
inner_radius = outer_radius - wall_thickness;

handle_major_radius = 18;
handle_tube_radius = 6;
handle_center_x = outer_radius + handle_major_radius - 4;
handle_center_z = height / 2;

module torus(major_radius, tube_radius) {
    rotate_extrude(convexity = 10)
        translate([major_radius, 0, 0])
            circle(r = tube_radius);
}

difference() {
    union() {
        cylinder(h = height, r = outer_radius);

        translate([handle_center_x, 0, handle_center_z])
            rotate([90, 0, 0])
                torus(handle_major_radius, handle_tube_radius);
    }

    translate([0, 0, bottom_thickness])
        cylinder(h = height + 2, r = inner_radius);
}
medium (default) success
medium
66.1s · 168/3453t · $0.0347
SCAD (53 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;

handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;
handle_center_x = outer_r + handle_major_r + handle_tube_r - 1;
handle_center_z = height / 2;

module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_thickness])
            cylinder(h = height + 1, r = inner_r);
    }
}

module torus(major_r, tube_r) {
    rotate_extrude(convexity = 10)
        translate([major_r, 0, 0])
            circle(r = tube_r, $fn = 48);
}

module handle() {
    union() {
        translate([handle_center_x, 0, handle_center_z])
            rotate([90, 0, 0])
                torus(handle_major_r, handle_tube_r);

        for (zpos = [
            handle_center_z - handle_major_r,
            handle_center_z + handle_major_r
        ]) {
            translate([outer_r - 1, 0, zpos])
                rotate([0, 90, 0])
                    cylinder(
                        h = handle_center_x - (outer_r - 1),
                        r = handle_tube_r
                    );
        }
    }
}

union() {
    cup_body();
    handle();
}
high success
high
169.7s · 168/9092t · $0.0911
SCAD (38 lines)
$fn = 128;

outer_d = 80;
cup_h = 100;
wall = 4;
bottom_t = 6;

outer_r = outer_d / 2;
inner_r = outer_r - wall;

handle_hole_r = 12;
handle_tube_r = 6;
handle_major_r = handle_hole_r + handle_tube_r;
handle_vertical_scale = 1.6;
handle_center_x = inner_r + handle_major_r + handle_tube_r;

module torus(major_r, tube_r) {
    rotate_extrude(convexity = 10, $fn = 160)
        translate([major_r, 0])
            circle(r = tube_r, $fn = 48);
}

module handle_ring() {
    translate([handle_center_x, 0, cup_h / 2])
        rotate([90, 0, 0])
            scale([1, handle_vertical_scale, 1])
                torus(handle_major_r, handle_tube_r);
}

difference() {
    union() {
        cylinder(h = cup_h, r = outer_r, $fn = 160);
        handle_ring();
    }

    translate([0, 0, bottom_t])
        cylinder(h = cup_h - bottom_t + 2, r = inner_r, $fn = 160);
}
maxnot run
xhighnot run

iteration: iter-png

i1 success
iter 1
51.4s · 1186/2428t · $0.0258
diff vs bare: +4/-2
  $fn = 128;
  
  outer_d = 80;
  outer_r = outer_d / 2;
  height = 100;
  wall = 4;
  bottom_thickness = 6;
  inner_r = outer_r - wall;
  
  handle_hole_r = 12;
  handle_tube_r = 4;
  handle_major_r = handle_hole_r + handle_tube_r;
- handle_center_x = outer_r + handle_major_r + handle_tube_r - 1;
+ 
+ handle_clearance = 6;
+ handle_center_x = outer_r + handle_clearance + handle_hole_r;
  handle_center_z = height / 2;
  
  module cup_body() {
      difference() {
          cylinder(h = height, r = outer_r);
          translate([0, 0, bottom_thickness])
              cylinder(h = height + 1, r = inner_r);
      }
  }
  
  module torus(major_r, tube_r) {
      rotate_extrude(convexity = 10)
          translate([major_r, 0, 0])
              circle(r = tube_r, $fn = 48);
  }
  
  module handle() {
      union() {
          translate([handle_center_x, 0, handle_center_z])
              rotate([90, 0, 0])
                  torus(handle_major_r, handle_tube_r);
  
          for (zpos = [
              handle_center_z - handle_major_r,
              handle_center_z + handle_major_r
          ]) {
              translate([outer_r - 1, 0, zpos])
                  rotate([0, 90, 0])
                      cylinder(
-                         h = handle_center_x - (outer_r - 1),
+                         h = handle_center_x - outer_r + 1,
                          r = handle_tube_r
                      );
          }
      }
  }
  
  union() {
      cup_body();
      handle();
  }
SCAD (55 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;

handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;

handle_clearance = 6;
handle_center_x = outer_r + handle_clearance + handle_hole_r;
handle_center_z = height / 2;

module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_thickness])
            cylinder(h = height + 1, r = inner_r);
    }
}

module torus(major_r, tube_r) {
    rotate_extrude(convexity = 10)
        translate([major_r, 0, 0])
            circle(r = tube_r, $fn = 48);
}

module handle() {
    union() {
        translate([handle_center_x, 0, handle_center_z])
            rotate([90, 0, 0])
                torus(handle_major_r, handle_tube_r);

        for (zpos = [
            handle_center_z - handle_major_r,
            handle_center_z + handle_major_r
        ]) {
            translate([outer_r - 1, 0, zpos])
                rotate([0, 90, 0])
                    cylinder(
                        h = handle_center_x - outer_r + 1,
                        r = handle_tube_r
                    );
        }
    }
}

union() {
    cup_body();
    handle();
}
i2 success
iter 2
27.0s · 1189/1392t · $0.0154
diff vs i1: +0/-0
  $fn = 128;
  
  outer_d = 80;
  outer_r = outer_d / 2;
  height = 100;
  wall = 4;
  bottom_thickness = 6;
  inner_r = outer_r - wall;
  
  handle_hole_r = 12;
  handle_tube_r = 4;
  handle_major_r = handle_hole_r + handle_tube_r;
  
  handle_clearance = 6;
  handle_center_x = outer_r + handle_clearance + handle_hole_r;
  handle_center_z = height / 2;
  
  module cup_body() {
      difference() {
          cylinder(h = height, r = outer_r);
          translate([0, 0, bottom_thickness])
              cylinder(h = height + 1, r = inner_r);
      }
  }
  
  module torus(major_r, tube_r) {
      rotate_extrude(convexity = 10)
          translate([major_r, 0, 0])
              circle(r = tube_r, $fn = 48);
  }
  
  module handle() {
      union() {
          translate([handle_center_x, 0, handle_center_z])
              rotate([90, 0, 0])
                  torus(handle_major_r, handle_tube_r);
  
          for (zpos = [
              handle_center_z - handle_major_r,
              handle_center_z + handle_major_r
          ]) {
              translate([outer_r - 1, 0, zpos])
                  rotate([0, 90, 0])
                      cylinder(
                          h = handle_center_x - outer_r + 1,
                          r = handle_tube_r
                      );
          }
      }
  }
  
  union() {
      cup_body();
      handle();
  }
SCAD (55 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;

handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;

handle_clearance = 6;
handle_center_x = outer_r + handle_clearance + handle_hole_r;
handle_center_z = height / 2;

module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_thickness])
            cylinder(h = height + 1, r = inner_r);
    }
}

module torus(major_r, tube_r) {
    rotate_extrude(convexity = 10)
        translate([major_r, 0, 0])
            circle(r = tube_r, $fn = 48);
}

module handle() {
    union() {
        translate([handle_center_x, 0, handle_center_z])
            rotate([90, 0, 0])
                torus(handle_major_r, handle_tube_r);

        for (zpos = [
            handle_center_z - handle_major_r,
            handle_center_z + handle_major_r
        ]) {
            translate([outer_r - 1, 0, zpos])
                rotate([0, 90, 0])
                    cylinder(
                        h = handle_center_x - outer_r + 1,
                        r = handle_tube_r
                    );
        }
    }
}

union() {
    cup_body();
    handle();
}
i3 success
iter 3
80.0s · 1189/3489t · $0.0364
diff vs i2: +21/-20
  $fn = 128;
  
  outer_d = 80;
  outer_r = outer_d / 2;
  height = 100;
  wall = 4;
  bottom_thickness = 6;
  inner_r = outer_r - wall;
  
  handle_hole_r = 12;
  handle_tube_r = 4;
- handle_major_r = handle_hole_r + handle_tube_r;
+ handle_centerline_r = handle_hole_r + handle_tube_r;
+ handle_hole_clearance = 8;
  
- handle_clearance = 6;
- handle_center_x = outer_r + handle_clearance + handle_hole_r;
+ handle_center_x = outer_r + handle_hole_clearance + handle_hole_r;
  handle_center_z = height / 2;
  
  module cup_body() {
      difference() {
          cylinder(h = height, r = outer_r);
          translate([0, 0, bottom_thickness])
              cylinder(h = height + 1, r = inner_r);
      }
  }
  
  module torus(major_r, tube_r) {
      rotate_extrude(convexity = 10)
          translate([major_r, 0, 0])
              circle(r = tube_r, $fn = 48);
  }
  
- module handle() {
-     union() {
-         translate([handle_center_x, 0, handle_center_z])
-             rotate([90, 0, 0])
-                 torus(handle_major_r, handle_tube_r);
+ module handle_ring() {
+     translate([handle_center_x, 0, handle_center_z])
+         rotate([90, 0, 0])
+             torus(handle_centerline_r, handle_tube_r);
+ }
  
-         for (zpos = [
-             handle_center_z - handle_major_r,
-             handle_center_z + handle_major_r
-         ]) {
-             translate([outer_r - 1, 0, zpos])
-                 rotate([0, 90, 0])
-                     cylinder(
-                         h = handle_center_x - outer_r + 1,
-                         r = handle_tube_r
-                     );
-         }
+ module handle_connectors() {
+     connector_start_x = outer_r - 2;
+     connector_len = handle_center_x - connector_start_x;
+ 
+     for (zpos = [
+         handle_center_z - handle_centerline_r,
+         handle_center_z + handle_centerline_r
+     ]) {
+         translate([connector_start_x, 0, zpos])
+             rotate([0, 90, 0])
+                 cylinder(h = connector_len, r = handle_tube_r);
      }
  }
  
  union() {
      cup_body();
-     handle();
+     handle_ring();
+     handle_connectors();
  }
SCAD (56 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;

handle_hole_r = 12;
handle_tube_r = 4;
handle_centerline_r = handle_hole_r + handle_tube_r;
handle_hole_clearance = 8;

handle_center_x = outer_r + handle_hole_clearance + handle_hole_r;
handle_center_z = height / 2;

module cup_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_thickness])
            cylinder(h = height + 1, r = inner_r);
    }
}

module torus(major_r, tube_r) {
    rotate_extrude(convexity = 10)
        translate([major_r, 0, 0])
            circle(r = tube_r, $fn = 48);
}

module handle_ring() {
    translate([handle_center_x, 0, handle_center_z])
        rotate([90, 0, 0])
            torus(handle_centerline_r, handle_tube_r);
}

module handle_connectors() {
    connector_start_x = outer_r - 2;
    connector_len = handle_center_x - connector_start_x;

    for (zpos = [
        handle_center_z - handle_centerline_r,
        handle_center_z + handle_centerline_r
    ]) {
        translate([connector_start_x, 0, zpos])
            rotate([0, 90, 0])
                cylinder(h = connector_len, r = handle_tube_r);
    }
}

union() {
    cup_body();
    handle_ring();
    handle_connectors();
}