vibe-openscad

tier-1-mug / google/gemma-4-12b-qat

4 run / 累計 476.2s / 累計 $0

google (self-hosted) gemma-4-12b-qat bare

bare (provider default effort)

run detail →
render
bare render of tier-1-mug
loading STL…
success 218.7s · 156/8759t
SCAD (41 lines)
$fn = 64;

// パラメータ
outer_diameter = 80;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_protrusion = 12; // 外径方向への飛び出し量
handle_ring_thickness = 12; // 取手の太さ(直径)

// 内寸の計算
inner_diameter = outer_diameter - (2 * wall_thickness);
inner_height = height - bottom_thickness;

// 取っ手の計算
// 取っ手の外側の端が「外径 + 飛び出し量」になるように配置
// 外径半径 = 40mm, 飛び出し = 12mm => 外端 = 52mm
// 取っ手半径 = 6mm (直径12mm)
// 取っ手の中心半径 = 52 - 6 = 46mm
handle_r = handle_ring_thickness / 2;
handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_r;

// 形状の構築
union() {
    // マグカップ本体
    difference() {
        // 外側の円柱
        cylinder(d = outer_diameter, h = height);
        
        // 内側の空間(底面を考慮して上にオフセット)
        translate([0, 0, bottom_thickness])
            cylinder(d = inner_diameter, h = inner_height + 1);
    }

    // 取っ手 (リング状)
    translate([handle_major_r, 0, height / 2])
    rotate([0, 90, 0])
    rotate_extrude()
    translate([handle_r, 0, 0])
    circle(r = handle_r);
}
パラメータ (6) —
スライダを動かすと openscad-wasm で再レンダリング

prompt

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

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

iteration: iter-png

i1 success →
iter 1
103.0s · 871/7646t
diff vs bare: +15/-12
  $fn = 64;
  
  // パラメータ
  outer_diameter = 80;
  height = 100;
  wall_thickness = 4;
  bottom_thickness = 6;
- handle_protrusion = 12; // 外径方向への飛び出し量
- handle_ring_thickness = 12; // 取手の太さ(直径)
+ handle_protrusion = 12; // 外径方向への飛び出し量 (40mm + 12mm = 52mmの位置まで)
  
  // 内寸の計算
  inner_diameter = outer_diameter - (2 * wall_thickness);
  inner_height = height - bottom_thickness;
  
  // 取っ手の計算
- // 取っ手の外側の端が「外径 + 飛び出し量」になるように配置
- // 外径半径 = 40mm, 飛び出し = 12mm => 外端 = 52mm
- // 取っ手半径 = 6mm (直径12mm)
- // 取っ手の中心半径 = 52 - 6 = 46mm
- handle_r = handle_ring_thickness / 2;
- handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_r;
+ // 「指を通せる」ためには、カップの表面と取手の内側に隙間が必要です。
+ // カップの半径 = 40mm
+ // 取っ手の太さを直径10mm(半径5mm)と設定。
+ // 取っ手の内側の端をカップ表面から2mm離した位置(42mm)に配置。
+ handle_thickness = 10;
+ handle_radius = handle_thickness / 2;
+ handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_radius;
+ // 上記の計算で handle_major_r = 40 + 12 - 5 = 47mm となり、
+ // 取っ手の内側は 47 - 5 = 42mm(カップから2mm離れた位置)にきます。
  
  // 形状の構築
  union() {
      // マグカップ本体
      difference() {
          // 外側の円柱
          cylinder(d = outer_diameter, h = height);
          
-         // 内側の空間(底面を考慮して上にオフセット)
+         // 内側の空間
          translate([0, 0, bottom_thickness])
              cylinder(d = inner_diameter, h = inner_height + 1);
      }
  
-     // 取っ手 (リング状)
+     // 取っ手 (リング状・ループ状)
+     // 中心高さに配置
      translate([handle_major_r, 0, height / 2])
      rotate([0, 90, 0])
      rotate_extrude()
-     translate([handle_r, 0, 0])
-     circle(r = handle_r);
+     translate([handle_radius, 0, 0])
+     circle(r = handle_radius);
  }
SCAD (44 lines)
$fn = 64;

// パラメータ
outer_diameter = 80;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_protrusion = 12; // 外径方向への飛び出し量 (40mm + 12mm = 52mmの位置まで)

// 内寸の計算
inner_diameter = outer_diameter - (2 * wall_thickness);
inner_height = height - bottom_thickness;

// 取っ手の計算
// 「指を通せる」ためには、カップの表面と取手の内側に隙間が必要です。
// カップの半径 = 40mm
// 取っ手の太さを直径10mm(半径5mm)と設定。
// 取っ手の内側の端をカップ表面から2mm離した位置(42mm)に配置。
handle_thickness = 10;
handle_radius = handle_thickness / 2;
handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_radius;
// 上記の計算で handle_major_r = 40 + 12 - 5 = 47mm となり、
// 取っ手の内側は 47 - 5 = 42mm(カップから2mm離れた位置)にきます。

// 形状の構築
union() {
    // マグカップ本体
    difference() {
        // 外側の円柱
        cylinder(d = outer_diameter, h = height);
        
        // 内側の空間
        translate([0, 0, bottom_thickness])
            cylinder(d = inner_diameter, h = inner_height + 1);
    }

    // 取っ手 (リング状・ループ状)
    // 中心高さに配置
    translate([handle_major_r, 0, height / 2])
    rotate([0, 90, 0])
    rotate_extrude()
    translate([handle_radius, 0, 0])
    circle(r = handle_radius);
}
i2 success →
iter 2
82.0s · 930/6164t
diff vs i1: +24/-19
- $fn = 64;
+ $fn = 100; // 滑らかさを向上
  
  // パラメータ
  outer_diameter = 80;
  height = 100;
  wall_thickness = 4;
  bottom_thickness = 6;
- handle_protrusion = 12; // 外径方向への飛び出し量 (40mm + 12mm = 52mmの位置まで)
  
+ // 取っ手の設計
+ // 「指を通せる」ためには、取手の内側の空洞が十分に必要です。
+ // 外径半径 40mm に対し、外径方向への飛び出しを 12mm とすると、
+ // 外側の端は 52mm になります。
+ // 内側の端をカップ表面から少し離した 42mm に設定すると、
+ // 取っ手の太さ(厚み)は 10mm となります。
+ // しかし、これでは指を通すための「空洞」が小さすぎるため、
+ // 実用性を考慮し、取手の外側への飛び出しを少し調整(または内側の空洞を確保)します。
+ handle_protrusion = 15; // 12mmより少し大きくして実用性を確保
+ inner_clearance = 2;    // カップ表面からの隙間
+ 
+ // 取っ手の計算
+ cup_radius = outer_diameter / 2;
+ handle_inner_r = cup_radius + inner_clearance; // 42mm
+ handle_outer_r = cup_radius + handle_protrusion; // 55mm
+ handle_major_r = (handle_inner_r + handle_outer_r) / 2; // 中心位置 (48.5mm)
+ handle_tube_r = (handle_outer_r - handle_inner_r) / 2; // 取っ手の太さ (6.5mm)
+ 
  // 内寸の計算
  inner_diameter = outer_diameter - (2 * wall_thickness);
  inner_height = height - bottom_thickness;
  
- // 取っ手の計算
- // 「指を通せる」ためには、カップの表面と取手の内側に隙間が必要です。
- // カップの半径 = 40mm
- // 取っ手の太さを直径10mm(半径5mm)と設定。
- // 取っ手の内側の端をカップ表面から2mm離した位置(42mm)に配置。
- handle_thickness = 10;
- handle_radius = handle_thickness / 2;
- handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_radius;
- // 上記の計算で handle_major_r = 40 + 12 - 5 = 47mm となり、
- // 取っ手の内側は 47 - 5 = 42mm(カップから2mm離れた位置)にきます。
- 
- // 形状の構築
  union() {
      // マグカップ本体
      difference() {
          // 外側の円柱
          cylinder(d = outer_diameter, h = height);
          
-         // 内側の空間
+         // 内側の空間(底面をくり抜く)
          translate([0, 0, bottom_thickness])
              cylinder(d = inner_diameter, h = inner_height + 1);
      }
  
-     // 取っ手 (リング状・ループ状)
-     // 中心高さに配置
+     // 取っ手 (リング状)
+     // rotate_extrude を使ってドーナツ状の形状を作成
      translate([handle_major_r, 0, height / 2])
      rotate([0, 90, 0])
      rotate_extrude()
-     translate([handle_radius, 0, 0])
-     circle(r = handle_radius);
+     translate([handle_tube_r, 0, 0])
+     circle(r = handle_tube_r);
  }
SCAD (49 lines)
$fn = 100; // 滑らかさを向上

// パラメータ
outer_diameter = 80;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;

// 取っ手の設計
// 「指を通せる」ためには、取手の内側の空洞が十分に必要です。
// 外径半径 40mm に対し、外径方向への飛び出しを 12mm とすると、
// 外側の端は 52mm になります。
// 内側の端をカップ表面から少し離した 42mm に設定すると、
// 取っ手の太さ(厚み)は 10mm となります。
// しかし、これでは指を通すための「空洞」が小さすぎるため、
// 実用性を考慮し、取手の外側への飛び出しを少し調整(または内側の空洞を確保)します。
handle_protrusion = 15; // 12mmより少し大きくして実用性を確保
inner_clearance = 2;    // カップ表面からの隙間

// 取っ手の計算
cup_radius = outer_diameter / 2;
handle_inner_r = cup_radius + inner_clearance; // 42mm
handle_outer_r = cup_radius + handle_protrusion; // 55mm
handle_major_r = (handle_inner_r + handle_outer_r) / 2; // 中心位置 (48.5mm)
handle_tube_r = (handle_outer_r - handle_inner_r) / 2; // 取っ手の太さ (6.5mm)

// 内寸の計算
inner_diameter = outer_diameter - (2 * wall_thickness);
inner_height = height - bottom_thickness;

union() {
    // マグカップ本体
    difference() {
        // 外側の円柱
        cylinder(d = outer_diameter, h = height);
        
        // 内側の空間(底面をくり抜く)
        translate([0, 0, bottom_thickness])
            cylinder(d = inner_diameter, h = inner_height + 1);
    }

    // 取っ手 (リング状)
    // rotate_extrude を使ってドーナツ状の形状を作成
    translate([handle_major_r, 0, height / 2])
    rotate([0, 90, 0])
    rotate_extrude()
    translate([handle_tube_r, 0, 0])
    circle(r = handle_tube_r);
}
i3 success →
iter 3
72.4s · 1046/5431t
diff vs i2: +14/-19
  $fn = 100; // 滑らかさを向上
  
  // パラメータ
  outer_diameter = 80;
  height = 100;
  wall_thickness = 4;
  bottom_thickness = 6;
  
  // 取っ手の設計
- // 「指を通せる」ためには、取手の内側の空洞が十分に必要です。
- // 外径半径 40mm に対し、外径方向への飛び出しを 12mm とすると、
- // 外側の端は 52mm になります。
- // 内側の端をカップ表面から少し離した 42mm に設定すると、
- // 取っ手の太さ(厚み)は 10mm となります。
- // しかし、これでは指を通すための「空洞」が小さすぎるため、
- // 実用性を考慮し、取手の外側への飛び出しを少し調整(または内側の空洞を確保)します。
- handle_protrusion = 15; // 12mmより少し大きくして実用性を確保
- inner_clearance = 2;    // カップ表面からの隙間
+ // 課題の「外径方向に飛び出す半径 12mm」を厳守します。
+ // カップの半径は 40mm なので、取手の外側の端は 40 + 12 = 52mm になります。
+ handle_protrusion = 12; 
+ // 指を通すための空間を確保するため、取手の肉厚を調整します。
+ // 取っ手の中心位置を計算:
+ // 外側の端(52mm) - 取っ手の半径(r) = 中心位置
+ // 内側の端(40mm + 隙間) + 取っ手の半径(r) = 中心位置
+ // 隙間を 4mm とすると、取手の半径は (52 - 44) / 2 = 4mm となります。
+ handle_tube_radius = 4;
+ handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_tube_radius;
  
- // 取っ手の計算
- cup_radius = outer_diameter / 2;
- handle_inner_r = cup_radius + inner_clearance; // 42mm
- handle_outer_r = cup_radius + handle_protrusion; // 55mm
- handle_major_r = (handle_inner_r + handle_outer_r) / 2; // 中心位置 (48.5mm)
- handle_tube_r = (handle_outer_r - handle_inner_r) / 2; // 取っ手の太さ (6.5mm)
- 
  // 内寸の計算
  inner_diameter = outer_diameter - (2 * wall_thickness);
  inner_height = height - bottom_thickness;
  
  union() {
      // マグカップ本体
      difference() {
          // 外側の円柱
          cylinder(d = outer_diameter, h = height);
          
          // 内側の空間(底面をくり抜く)
          translate([0, 0, bottom_thickness])
              cylinder(d = inner_diameter, h = inner_height + 1);
      }
  
      // 取っ手 (リング状)
-     // rotate_extrude を使ってドーナツ状の形状を作成
+     // rotate_extrude を使用してドーナツ状の形状を作成
+     // 中心高さ (height / 2) に配置
      translate([handle_major_r, 0, height / 2])
      rotate([0, 90, 0])
      rotate_extrude()
-     translate([handle_tube_r, 0, 0])
-     circle(r = handle_tube_r);
+     translate([handle_tube_radius, 0, 0])
+     circle(r = handle_tube_radius);
  }
SCAD (44 lines)
$fn = 100; // 滑らかさを向上

// パラメータ
outer_diameter = 80;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;

// 取っ手の設計
// 課題の「外径方向に飛び出す半径 12mm」を厳守します。
// カップの半径は 40mm なので、取手の外側の端は 40 + 12 = 52mm になります。
handle_protrusion = 12; 
// 指を通すための空間を確保するため、取手の肉厚を調整します。
// 取っ手の中心位置を計算:
// 外側の端(52mm) - 取っ手の半径(r) = 中心位置
// 内側の端(40mm + 隙間) + 取っ手の半径(r) = 中心位置
// 隙間を 4mm とすると、取手の半径は (52 - 44) / 2 = 4mm となります。
handle_tube_radius = 4;
handle_major_r = (outer_diameter / 2) + handle_protrusion - handle_tube_radius;

// 内寸の計算
inner_diameter = outer_diameter - (2 * wall_thickness);
inner_height = height - bottom_thickness;

union() {
    // マグカップ本体
    difference() {
        // 外側の円柱
        cylinder(d = outer_diameter, h = height);
        
        // 内側の空間(底面をくり抜く)
        translate([0, 0, bottom_thickness])
            cylinder(d = inner_diameter, h = inner_height + 1);
    }

    // 取っ手 (リング状)
    // rotate_extrude を使用してドーナツ状の形状を作成
    // 中心高さ (height / 2) に配置
    translate([handle_major_r, 0, height / 2])
    rotate([0, 90, 0])
    rotate_extrude()
    translate([handle_tube_radius, 0, 0])
    circle(r = handle_tube_radius);
}