vibe-openscad

tier-1-mug / gpt-5.3-codex

5 run / 累計 24.4s / 累計 $0.0241

openai gpt 5.3 codex bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 4.7s · 168/286t · $0.0037
SCAD (39 lines)
$fn = 128;

// Dimensions
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall_t = 4;
bottom_t = 6;

inner_d = outer_d - 2 * wall_t;
inner_r = inner_d / 2;
inner_h = height - bottom_t;

// Handle (ring)
handle_tube_r = 12;                 // 半径12mmのリング断面
handle_center_offset = outer_r + 20; // カップ外周から十分にはみ出す位置
handle_z = height / 2;              // 中心高さ付近

module mug_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_t])
            cylinder(h = inner_h, r = inner_r);
    }
}

module handle_ring() {
    // トーラス(リング)をYZ平面に配置し、X方向へ飛び出す取手にする
    translate([handle_center_offset, 0, handle_z])
        rotate([90, 0, 0])
            rotate_extrude(angle = 360)
                translate([20, 0, 0])
                    circle(r = handle_tube_r);
}

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

prompt

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

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

variant: effort

lownot run
medium (default) success
medium
4.7s · 168/286t · $0.0037
SCAD (39 lines)
$fn = 128;

// Dimensions
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall_t = 4;
bottom_t = 6;

inner_d = outer_d - 2 * wall_t;
inner_r = inner_d / 2;
inner_h = height - bottom_t;

// Handle (ring)
handle_tube_r = 12;                 // 半径12mmのリング断面
handle_center_offset = outer_r + 20; // カップ外周から十分にはみ出す位置
handle_z = height / 2;              // 中心高さ付近

module mug_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_t])
            cylinder(h = inner_h, r = inner_r);
    }
}

module handle_ring() {
    // トーラス(リング)をYZ平面に配置し、X方向へ飛び出す取手にする
    translate([handle_center_offset, 0, handle_z])
        rotate([90, 0, 0])
            rotate_extrude(angle = 360)
                translate([20, 0, 0])
                    circle(r = handle_tube_r);
}

union() {
    mug_body();
    handle_ring();
}
highnot run
maxnot run
xhighnot run

iteration: iter-png

i1 success
iter 1
4.9s · 1119/339t · $0.0057
diff vs bare: +7/-5
  $fn = 128;
  
  // Dimensions
  outer_d = 80;
  outer_r = outer_d / 2;
  height = 100;
  wall_t = 4;
  bottom_t = 6;
  
  inner_d = outer_d - 2 * wall_t;
  inner_r = inner_d / 2;
  inner_h = height - bottom_t;
  
  // Handle (ring)
- handle_tube_r = 12;                 // 半径12mmのリング断面
- handle_center_offset = outer_r + 20; // カップ外周から十分にはみ出す位置
- handle_z = height / 2;              // 中心高さ付近
+ handle_tube_r = 12;                  // 半径12mm(取手の太さ)
+ handle_ring_major_r = 18;            // 指を通すためのリング半径
+ handle_center_offset = outer_r + 8;  // 外周から十分にはみ出す位置
+ handle_z = height / 2;               // 中心高さ付近
  
  module mug_body() {
      difference() {
          cylinder(h = height, r = outer_r);
+         // 上面を開口し、底厚6mmを残して内側をくり抜く
          translate([0, 0, bottom_t])
-             cylinder(h = inner_h, r = inner_r);
+             cylinder(h = inner_h + 0.1, r = inner_r);
      }
  }
  
  module handle_ring() {
      // トーラス(リング)をYZ平面に配置し、X方向へ飛び出す取手にする
      translate([handle_center_offset, 0, handle_z])
          rotate([90, 0, 0])
              rotate_extrude(angle = 360)
-                 translate([20, 0, 0])
+                 translate([handle_ring_major_r, 0, 0])
                      circle(r = handle_tube_r);
  }
  
  union() {
      mug_body();
      handle_ring();
  }
SCAD (41 lines)
$fn = 128;

// Dimensions
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall_t = 4;
bottom_t = 6;

inner_d = outer_d - 2 * wall_t;
inner_r = inner_d / 2;
inner_h = height - bottom_t;

// Handle (ring)
handle_tube_r = 12;                  // 半径12mm(取手の太さ)
handle_ring_major_r = 18;            // 指を通すためのリング半径
handle_center_offset = outer_r + 8;  // 外周から十分にはみ出す位置
handle_z = height / 2;               // 中心高さ付近

module mug_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        // 上面を開口し、底厚6mmを残して内側をくり抜く
        translate([0, 0, bottom_t])
            cylinder(h = inner_h + 0.1, r = inner_r);
    }
}

module handle_ring() {
    // トーラス(リング)をYZ平面に配置し、X方向へ飛び出す取手にする
    translate([handle_center_offset, 0, handle_z])
        rotate([90, 0, 0])
            rotate_extrude(angle = 360)
                translate([handle_ring_major_r, 0, 0])
                    circle(r = handle_tube_r);
}

union() {
    mug_body();
    handle_ring();
}
i2 success
iter 2
5.4s · 1172/337t · $0.0058
diff vs i1: +18/-17
  $fn = 128;
  
- // Dimensions
+ // Cup dimensions
  outer_d = 80;
  outer_r = outer_d / 2;
- height = 100;
- wall_t = 4;
+ height  = 100;
+ wall_t  = 4;
  bottom_t = 6;
  
- inner_d = outer_d - 2 * wall_t;
- inner_r = inner_d / 2;
- inner_h = height - bottom_t;
+ inner_r = outer_r - wall_t;
  
- // Handle (ring)
- handle_tube_r = 12;                  // 半径12mm(取手の太さ)
- handle_ring_major_r = 18;            // 指を通すためのリング半径
- handle_center_offset = outer_r + 8;  // 外周から十分にはみ出す位置
- handle_z = height / 2;               // 中心高さ付近
+ // Handle dimensions (ring-shaped)
+ handle_tube_r = 12;      // specified: 半径12mm
+ handle_major_r = 22;     // ring radius to ensure finger-pass hole
+ handle_z = height / 2;   // centered in height
  
+ // Place handle so it intersects cup side and protrudes enough outward
+ // Inner-most x of handle = handle_center_x - (handle_major_r + handle_tube_r)
+ // Set this slightly inside outer wall for robust union.
+ handle_center_x = outer_r + (handle_major_r + handle_tube_r) - 2;
+ 
  module mug_body() {
      difference() {
          cylinder(h = height, r = outer_r);
-         // 上面を開口し、底厚6mmを残して内側をくり抜く
+         // Hollow interior, leaving bottom thickness = 6mm
          translate([0, 0, bottom_t])
-             cylinder(h = inner_h + 0.1, r = inner_r);
+             cylinder(h = height - bottom_t + 0.2, r = inner_r);
      }
  }
  
  module handle_ring() {
-     // トーラス(リング)をYZ平面に配置し、X方向へ飛び出す取手にする
-     translate([handle_center_offset, 0, handle_z])
-         rotate([90, 0, 0])
+     translate([handle_center_x, 0, handle_z])
+         rotate([90, 0, 0])   // put torus axis along Y so it protrudes in +X
              rotate_extrude(angle = 360)
-                 translate([handle_ring_major_r, 0, 0])
+                 translate([handle_major_r, 0, 0])
                      circle(r = handle_tube_r);
  }
  
  union() {
      mug_body();
      handle_ring();
  }
SCAD (42 lines)
$fn = 128;

// Cup dimensions
outer_d = 80;
outer_r = outer_d / 2;
height  = 100;
wall_t  = 4;
bottom_t = 6;

inner_r = outer_r - wall_t;

// Handle dimensions (ring-shaped)
handle_tube_r = 12;      // specified: 半径12mm
handle_major_r = 22;     // ring radius to ensure finger-pass hole
handle_z = height / 2;   // centered in height

// Place handle so it intersects cup side and protrudes enough outward
// Inner-most x of handle = handle_center_x - (handle_major_r + handle_tube_r)
// Set this slightly inside outer wall for robust union.
handle_center_x = outer_r + (handle_major_r + handle_tube_r) - 2;

module mug_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        // Hollow interior, leaving bottom thickness = 6mm
        translate([0, 0, bottom_t])
            cylinder(h = height - bottom_t + 0.2, r = inner_r);
    }
}

module handle_ring() {
    translate([handle_center_x, 0, handle_z])
        rotate([90, 0, 0])   // put torus axis along Y so it protrudes in +X
            rotate_extrude(angle = 360)
                translate([handle_major_r, 0, 0])
                    circle(r = handle_tube_r);
}

union() {
    mug_body();
    handle_ring();
}
i3 success
iter 3
4.5s · 1170/282t · $0.0051
diff vs i2: +12/-15
  $fn = 128;
  
  // Cup dimensions
- outer_d = 80;
- outer_r = outer_d / 2;
- height  = 100;
- wall_t  = 4;
+ outer_d  = 80;
+ outer_r  = outer_d / 2;
+ height   = 100;
+ wall_t   = 4;
  bottom_t = 6;
  
  inner_r = outer_r - wall_t;
  
- // Handle dimensions (ring-shaped)
- handle_tube_r = 12;      // specified: 半径12mm
- handle_major_r = 22;     // ring radius to ensure finger-pass hole
- handle_z = height / 2;   // centered in height
+ // Handle (ring/torus) dimensions
+ handle_tube_r  = 12;   // specified radius 12mm
+ handle_major_r = 20;   // ring radius (creates finger hole)
+ handle_z       = height / 2;
  
- // Place handle so it intersects cup side and protrudes enough outward
- // Inner-most x of handle = handle_center_x - (handle_major_r + handle_tube_r)
- // Set this slightly inside outer wall for robust union.
- handle_center_x = outer_r + (handle_major_r + handle_tube_r) - 2;
+ // Position so the handle intersects the cup wall and protrudes outward
+ handle_center_x = outer_r + handle_major_r; // gives robust overlap with cup
  
  module mug_body() {
      difference() {
          cylinder(h = height, r = outer_r);
-         // Hollow interior, leaving bottom thickness = 6mm
          translate([0, 0, bottom_t])
              cylinder(h = height - bottom_t + 0.2, r = inner_r);
      }
  }
  
  module handle_ring() {
      translate([handle_center_x, 0, handle_z])
-         rotate([90, 0, 0])   // put torus axis along Y so it protrudes in +X
-             rotate_extrude(angle = 360)
+         rotate([90, 0, 0])  // torus axis along Y
+             rotate_extrude(convexity = 10)
                  translate([handle_major_r, 0, 0])
                      circle(r = handle_tube_r);
  }
  
  union() {
      mug_body();
      handle_ring();
  }
SCAD (39 lines)
$fn = 128;

// Cup dimensions
outer_d  = 80;
outer_r  = outer_d / 2;
height   = 100;
wall_t   = 4;
bottom_t = 6;

inner_r = outer_r - wall_t;

// Handle (ring/torus) dimensions
handle_tube_r  = 12;   // specified radius 12mm
handle_major_r = 20;   // ring radius (creates finger hole)
handle_z       = height / 2;

// Position so the handle intersects the cup wall and protrudes outward
handle_center_x = outer_r + handle_major_r; // gives robust overlap with cup

module mug_body() {
    difference() {
        cylinder(h = height, r = outer_r);
        translate([0, 0, bottom_t])
            cylinder(h = height - bottom_t + 0.2, r = inner_r);
    }
}

module handle_ring() {
    translate([handle_center_x, 0, handle_z])
        rotate([90, 0, 0])  // torus axis along Y
            rotate_extrude(convexity = 10)
                translate([handle_major_r, 0, 0])
                    circle(r = handle_tube_r);
}

union() {
    mug_body();
    handle_ring();
}