vibe-openscad

tier-1-mug / gpt-5-2025-08-07

7 run / 累計 440.5s / 累計 $0.3763

openai gpt 5 2025-08-07 bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 44.9s · 168/5404t · $0.0542
SCAD (43 lines)
// マグカップ: 外径80mm, 高さ100mm, 肉厚4mm, 底面厚6mm
// 取手: 半径12mmのリング状、中心高さ付近に配置

$fn = 128;

outer_d = 80;
outer_r = outer_d/2;   // 40
height  = 100;
wall    = 4;
bottom  = 6;

inner_r = outer_r - wall; // 36

handle_R = 12;  // リング半径
handle_r = 4;   // リング断面半径(太さ)
handle_z = height/2; // 中心高さ
handle_out_offset = 1; // 外周から更に押し出す量(内側に貫通しないように少し外へ)

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

module torus(R, r) {
  rotate_extrude(angle=360)
    translate([R,0,0])
      circle(r=r);
}

module handle() {
  // y軸方向を回転軸にするリング(x-z平面に見える円)
  // カップ外周から十分はみ出すように外側へ配置
  translate([outer_r + handle_R + handle_out_offset, 0, handle_z])
    rotate([0,90,0])
      torus(handle_R, handle_r);
}

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

prompt

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

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

variant: effort

low success
low
34.1s · 168/2451t · $0.0247
SCAD (47 lines)
// マグカップ仕様
outer_d = 80;         // 外径
height = 100;         // 高さ
wall   = 4;           // 肉厚
bottom = 6;           // 底面厚

// 取手仕様(リング状)
handle_r_tube  = 12;  // 取手の断面半径(丸断面)
handle_R_major = 30;  // リングの主半径(指を通す空間の大きさ)
attach_overlap = 1;   // カップ外周との重なり量

$fn = 128;

// トーラス(リング状取手)
module torus(R, r) {
  rotate([90, 0, 0])  // 軸をY方向へ
    rotate_extrude(angle = 360)
      translate([R, 0, 0])
        circle(r = r);
}

// マグ本体
module mug_body() {
  outer_r = outer_d/2;
  inner_r = outer_r - wall;
  difference() {
    // 外形
    cylinder(r = outer_r, h = height);
    // 内側くり抜き(底6mm残し)
    translate([0, 0, bottom])
      cylinder(r = inner_r, h = height - bottom);
  }
}

// 取手の配置(中心高さ、外周から十分はみ出す)
module handle() {
  outer_r = outer_d/2;
  // カップ外周と少し重なるようにX方向へ配置
  translate([outer_r + handle_r_tube - attach_overlap, 0, height/2])
    torus(handle_R_major, handle_r_tube);
}

// 組み立て
union() {
  mug_body();
  handle();
}
medium (default) success
medium
44.9s · 168/5404t · $0.0542
SCAD (43 lines)
// マグカップ: 外径80mm, 高さ100mm, 肉厚4mm, 底面厚6mm
// 取手: 半径12mmのリング状、中心高さ付近に配置

$fn = 128;

outer_d = 80;
outer_r = outer_d/2;   // 40
height  = 100;
wall    = 4;
bottom  = 6;

inner_r = outer_r - wall; // 36

handle_R = 12;  // リング半径
handle_r = 4;   // リング断面半径(太さ)
handle_z = height/2; // 中心高さ
handle_out_offset = 1; // 外周から更に押し出す量(内側に貫通しないように少し外へ)

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

module torus(R, r) {
  rotate_extrude(angle=360)
    translate([R,0,0])
      circle(r=r);
}

module handle() {
  // y軸方向を回転軸にするリング(x-z平面に見える円)
  // カップ外周から十分はみ出すように外側へ配置
  translate([outer_r + handle_R + handle_out_offset, 0, handle_z])
    rotate([0,90,0])
      torus(handle_R, handle_r);
}

union() {
  cup_body();
  handle();
}
high success
high
144.7s · 168/11128t · $0.1115
SCAD (30 lines)
$fn = 128;

outer_d = 80;     // 外径
height  = 100;    // 高さ
wall    = 4;      // 肉厚
bottom  = 6;      // 底厚

handle_R = 12;    // 取手(リング)の半径
handle_r = 4;     // 取手の太さ(断面半径)
eps = 0.6;        // カップと取手を確実に接合するためのめり込み量

module cup() {
  difference() {
    cylinder(h = height, r = outer_d/2);
    translate([0, 0, bottom])
      cylinder(h = height - bottom, r = outer_d/2 - wall);
  }
}

module torus_y(R, r) {
  rotate([90, 0, 0])
    rotate_extrude(angle = 360)
      translate([R, 0, 0]) circle(r = r);
}

union() {
  cup();
  translate([outer_d/2 + (handle_R + handle_r) - eps, 0, height/2])
    torus_y(handle_R, handle_r);
}
maxnot run
xhighnot run

iteration: iter-png

i1 success
iter 1
73.3s · 1248/5212t · $0.0537
diff vs bare: +10/-13
- // マグカップ: 外径80mm, 高さ100mm, 肉厚4mm, 底面厚6mm
- // 取手: 半径12mmのリング状、中心高さ付近に配置
- 
  $fn = 128;
  
  outer_d = 80;
- outer_r = outer_d/2;   // 40
+ outer_r = outer_d/2;
  height  = 100;
  wall    = 4;
  bottom  = 6;
  
- inner_r = outer_r - wall; // 36
+ inner_r = outer_r - wall;
  
- handle_R = 12;  // リング半径
- handle_r = 4;   // リング断面半径(太さ)
- handle_z = height/2; // 中心高さ
- handle_out_offset = 1; // 外周から更に押し出す量(内側に貫通しないように少し外へ)
+ handle_R = 12;
+ handle_r = 4;
+ handle_z = height/2;
+ embed    = 1;
  
  module cup_body() {
    difference() {
      cylinder(h=height, r=outer_r);
      translate([0,0,bottom]) cylinder(h=height-bottom, r=inner_r);
    }
  }
  
  module torus(R, r) {
    rotate_extrude(angle=360)
      translate([R,0,0])
        circle(r=r);
  }
  
  module handle() {
-   // y軸方向を回転軸にするリング(x-z平面に見える円)
-   // カップ外周から十分はみ出すように外側へ配置
-   translate([outer_r + handle_R + handle_out_offset, 0, handle_z])
-     rotate([0,90,0])
+   near_x = inner_r + embed;
+   c = near_x + (handle_R + handle_r);
+   translate([c, 0, handle_z])
+     rotate([90,0,0])
        torus(handle_R, handle_r);
  }
  
  union() {
    cup_body();
    handle();
  }
SCAD (40 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d/2;
height  = 100;
wall    = 4;
bottom  = 6;

inner_r = outer_r - wall;

handle_R = 12;
handle_r = 4;
handle_z = height/2;
embed    = 1;

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

module torus(R, r) {
  rotate_extrude(angle=360)
    translate([R,0,0])
      circle(r=r);
}

module handle() {
  near_x = inner_r + embed;
  c = near_x + (handle_R + handle_r);
  translate([c, 0, handle_z])
    rotate([90,0,0])
      torus(handle_R, handle_r);
}

union() {
  cup_body();
  handle();
}
i2 success
iter 2
58.1s · 1109/4398t · $0.0454
diff vs i1: +0/-0
  $fn = 128;
  
  outer_d = 80;
  outer_r = outer_d/2;
  height  = 100;
  wall    = 4;
  bottom  = 6;
  
  inner_r = outer_r - wall;
  
  handle_R = 12;
  handle_r = 4;
  handle_z = height/2;
  embed    = 1;
  
  module cup_body() {
    difference() {
      cylinder(h=height, r=outer_r);
      translate([0,0,bottom]) cylinder(h=height-bottom, r=inner_r);
    }
  }
  
  module torus(R, r) {
    rotate_extrude(angle=360)
      translate([R,0,0])
        circle(r=r);
  }
  
  module handle() {
    near_x = inner_r + embed;
    c = near_x + (handle_R + handle_r);
    translate([c, 0, handle_z])
      rotate([90,0,0])
        torus(handle_R, handle_r);
  }
  
  union() {
    cup_body();
    handle();
  }
SCAD (40 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d/2;
height  = 100;
wall    = 4;
bottom  = 6;

inner_r = outer_r - wall;

handle_R = 12;
handle_r = 4;
handle_z = height/2;
embed    = 1;

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

module torus(R, r) {
  rotate_extrude(angle=360)
    translate([R,0,0])
      circle(r=r);
}

module handle() {
  near_x = inner_r + embed;
  c = near_x + (handle_R + handle_r);
  translate([c, 0, handle_z])
    rotate([90,0,0])
      torus(handle_R, handle_r);
}

union() {
  cup_body();
  handle();
}
i3 success
iter 3
40.5s · 1109/3118t · $0.0326
diff vs i2: +0/-0
  $fn = 128;
  
  outer_d = 80;
  outer_r = outer_d/2;
  height  = 100;
  wall    = 4;
  bottom  = 6;
  
  inner_r = outer_r - wall;
  
  handle_R = 12;
  handle_r = 4;
  handle_z = height/2;
  embed    = 1;
  
  module cup_body() {
    difference() {
      cylinder(h=height, r=outer_r);
      translate([0,0,bottom]) cylinder(h=height-bottom, r=inner_r);
    }
  }
  
  module torus(R, r) {
    rotate_extrude(angle=360)
      translate([R,0,0])
        circle(r=r);
  }
  
  module handle() {
    near_x = inner_r + embed;
    c = near_x + (handle_R + handle_r);
    translate([c, 0, handle_z])
      rotate([90,0,0])
        torus(handle_R, handle_r);
  }
  
  union() {
    cup_body();
    handle();
  }
SCAD (40 lines)
$fn = 128;

outer_d = 80;
outer_r = outer_d/2;
height  = 100;
wall    = 4;
bottom  = 6;

inner_r = outer_r - wall;

handle_R = 12;
handle_r = 4;
handle_z = height/2;
embed    = 1;

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

module torus(R, r) {
  rotate_extrude(angle=360)
    translate([R,0,0])
      circle(r=r);
}

module handle() {
  near_x = inner_r + embed;
  c = near_x + (handle_R + handle_r);
  translate([c, 0, handle_z])
    rotate([90,0,0])
      torus(handle_R, handle_r);
}

union() {
  cup_body();
  handle();
}