vibe-openscad

tier-1-mug / o4-mini-2025-04-16

7 run / 累計 300.3s / 累計 $0.1639

openai o4 mini 2025-04-16 bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 19.9s · 168/2660t · $0.0119
SCAD (26 lines)
$fn = 100;

// マグカップ本体
module mug() {
    difference() {
        // 外形
        cylinder(d = 80, h = 100);
        // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
        translate([0, 0, 6])
            cylinder(d = 80 - 2 * 4, h = 100 - 6);
    }
}

// リング状取手
module handle() {
    // トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
    rotate_extrude()
        translate([52, 0, 50])
            circle(r = 12);
}

// 結合
union() {
    mug();
    handle();
}

prompt

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

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

variant: effort

low success
low
9.1s · 168/1011t · $0.0046
SCAD (38 lines)
// マグカップのパラメータ
outer_d = 80;      // 外径
height = 100;      // 高さ
wall_t = 4;        // 壁厚
bottom_t = 6;      // 底厚
handle_offset = 12; // 取手のカップ外壁からの突出量
handle_r = 6;      // 取手チューブの断面半径

module mug() {
    // 外形
    cylinder(h = height, r = outer_d/2, $fn=100);
    // 内部くり抜き
    translate([0,0,bottom_t])
        cylinder(h = height - bottom_t, r = outer_d/2 - wall_t, $fn=100);
}

module handle() {
    // トーラス風の取手 (rotate_extrude)
    translate([outer_d/2 + handle_offset, 0, height/2])
        rotate_extrude($fn=100)
            translate([handle_r, 0, 0])
                circle(r = handle_r, $fn=50);
}

difference() {
    mug();
    // 内部をくり抜く
    translate([0,0,0])
        // 図形を上位で差分扱い(既に内側だけくり抜いているため不要ですが構造示すため)
        // ここは空
        cube([0,0,0]);
}
union() {
    // カップ本体
    mug();
    // 取手を追加
    handle();
}
medium (default) success
medium
19.9s · 168/2660t · $0.0119
SCAD (26 lines)
$fn = 100;

// マグカップ本体
module mug() {
    difference() {
        // 外形
        cylinder(d = 80, h = 100);
        // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
        translate([0, 0, 6])
            cylinder(d = 80 - 2 * 4, h = 100 - 6);
    }
}

// リング状取手
module handle() {
    // トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
    rotate_extrude()
        translate([52, 0, 50])
            circle(r = 12);
}

// 結合
union() {
    mug();
    handle();
}
high success
high
112.6s · 168/16229t · $0.0716
SCAD (34 lines)
$fn = 100;

outer_d       = 80;
height        = 100;
wall_thick    = 4;
bottom_thick  = 6;
outer_r       = outer_d/2;
inner_r       = outer_r - wall_thick;
handle_r      = 12;

module mug() {
    difference() {
        // 外胴
        cylinder(h = height, r = outer_r);
        // 内胴(底面厚みを残して上部をくり抜く)
        translate([0, 0, bottom_thick])
            cylinder(h = height - bottom_thick, r = inner_r);
    }
}

module handle() {
    // リング状の取手を torus で作成(マグ外周に面一接触)
    rotate([90, 0, 0])
        rotate_extrude()
            translate([outer_r + handle_r, 0])
                circle(r = handle_r);
}

union() {
    mug();
    // 取手はカップの中心高さに配置
    translate([0, 0, height/2])
        handle();
}
maxnot run
xhighnot run

iteration: iter-png

i1 success
iter 1
78.6s · 1264/7059t · $0.0325
diff vs bare: +0/-0
  $fn = 100;
  
  // マグカップ本体
  module mug() {
      difference() {
          // 外形
          cylinder(d = 80, h = 100);
          // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
          translate([0, 0, 6])
              cylinder(d = 80 - 2 * 4, h = 100 - 6);
      }
  }
  
  // リング状取手
  module handle() {
      // トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
      rotate_extrude()
          translate([52, 0, 50])
              circle(r = 12);
  }
  
  // 結合
  union() {
      mug();
      handle();
  }
SCAD (26 lines)
$fn = 100;

// マグカップ本体
module mug() {
    difference() {
        // 外形
        cylinder(d = 80, h = 100);
        // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
        translate([0, 0, 6])
            cylinder(d = 80 - 2 * 4, h = 100 - 6);
    }
}

// リング状取手
module handle() {
    // トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
    rotate_extrude()
        translate([52, 0, 50])
            circle(r = 12);
}

// 結合
union() {
    mug();
    handle();
}
i2 success
iter 2
46.1s · 1264/5121t · $0.0239
diff vs i1: +6/-5
  $fn = 100;
  
  // マグカップ本体
  module mug() {
      difference() {
          // 外形
          cylinder(d = 80, h = 100);
          // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
          translate([0, 0, 6])
              cylinder(d = 80 - 2 * 4, h = 100 - 6);
      }
  }
  
- // リング状取手
+ // リング状取手(指が通る部分が外径から12mm飛び出す)
  module handle() {
-     // トーラス(管の半径 r = 12mm、トーラス中心半径 R = 40 + 12 = 52mm)
-     rotate_extrude()
-         translate([52, 0, 50])
-             circle(r = 12);
+     // プロファイルとして円(r=6)を、X=46, Y=50 の位置に置いて回転押し出し
+     // -> 内側R=46-6=40でカップに接触、外側R=46+6=52で外径40から12mm突出
+     rotate_extrude($fn = 100)
+         translate([46, 50])
+             circle(r = 6, $fn = 50);
  }
  
  // 結合
  union() {
      mug();
      handle();
  }
SCAD (27 lines)
$fn = 100;

// マグカップ本体
module mug() {
    difference() {
        // 外形
        cylinder(d = 80, h = 100);
        // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
        translate([0, 0, 6])
            cylinder(d = 80 - 2 * 4, h = 100 - 6);
    }
}

// リング状取手(指が通る部分が外径から12mm飛び出す)
module handle() {
    // プロファイルとして円(r=6)を、X=46, Y=50 の位置に置いて回転押し出し
    // -> 内側R=46-6=40でカップに接触、外側R=46+6=52で外径40から12mm突出
    rotate_extrude($fn = 100)
        translate([46, 50])
            circle(r = 6, $fn = 50);
}

// 結合
union() {
    mug();
    handle();
}
i3 success
iter 3
14.1s · 1324/1383t · $0.0075
diff vs i2: +5/-6
  $fn = 100;
  
  // マグカップ本体
  module mug() {
      difference() {
          // 外形
          cylinder(d = 80, h = 100);
          // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
          translate([0, 0, 6])
              cylinder(d = 80 - 2 * 4, h = 100 - 6);
      }
  }
  
- // リング状取手(指が通る部分が外径から12mm飛び出す)
+ // リング状取手(外周から半径 12mm 飛び出し、断面半径 12mm)
  module handle() {
-     // プロファイルとして円(r=6)を、X=46, Y=50 の位置に置いて回転押し出し
-     // -> 内側R=46-6=40でカップに接触、外側R=46+6=52で外径40から12mm突出
-     rotate_extrude($fn = 100)
-         translate([46, 50])
-             circle(r = 6, $fn = 50);
+     translate([0, 0, 50])       // カップ中心高さに配置
+         rotate_extrude()
+             translate([80/2 + 12, 0, 0])  // 外径40 + 飛び出し12 = 52
+                 circle(r = 12);
  }
  
  // 結合
  union() {
      mug();
      handle();
  }
SCAD (26 lines)
$fn = 100;

// マグカップ本体
module mug() {
    difference() {
        // 外形
        cylinder(d = 80, h = 100);
        // 内部をくり抜き(底面厚み 6mm、壁厚 4mm)
        translate([0, 0, 6])
            cylinder(d = 80 - 2 * 4, h = 100 - 6);
    }
}

// リング状取手(外周から半径 12mm 飛び出し、断面半径 12mm)
module handle() {
    translate([0, 0, 50])       // カップ中心高さに配置
        rotate_extrude()
            translate([80/2 + 12, 0, 0])  // 外径40 + 飛び出し12 = 52
                circle(r = 12);
}

// 結合
union() {
    mug();
    handle();
}