vibe-openscad

tier-2-l-bracket / gpt-4.1-2025-04-14

4 run / 累計 43.4s / 累計 $0.0320

openai gpt 4.1 2025-04-14 bare

bare (provider default effort)

run detail →
render
bare render of tier-2-l-bracket
loading STL…
success 8.1s · 295/571t · $0.0052
SCAD (73 lines)
// L-bracket parameters
bracket_w = 50;   // width (common to both flanges)
bracket_h = 40;   // height / depth of flanges
thickness = 3;

// Countersunk hole parameters
hole_d = 4.5;      // through hole diameter
cs_d = 8;          // countersink diameter
cs_depth = 2;      // countersink depth
edge_offset = 10;  // distance from edge to hole center (along the main axis)
center_line = bracket_w/2;

// Hole positions (symmetric along width)
hole_y_pos = [edge_offset, bracket_h-edge_offset];

// Utilities
module countersunk_hole(face="") {
    // face: "top" or "side"
    if (face == "top") {
        // Plate at Z = 0, +Y; hole along -Z
        translate([0,0,thickness])
        rotate([90,0,0])
        union() {
            // Through hole
            cylinder(d=hole_d, h=thickness+0.5, $fn=32);
            // Countersink
            translate([0,0,-cs_depth])
            cylinder(d=cs_d, h=cs_depth, $fn=32);
        }
    }
    if (face == "side") {
        // Plate at Y = 0, +Z; hole along -Y
        translate([0,thickness,0])
        rotate([0,90,0])
        union() {
            // Through hole
            cylinder(d=hole_d, h=thickness+0.5, $fn=32);
            // Countersink
            translate([0,0,-cs_depth])
            cylinder(d=cs_d, h=cs_depth, $fn=32);
        }
    }
}

// Horizontal flange
module flange_top() {
    difference() {
        // Main plate
        translate([0, 0, 0])
            cube([bracket_w, bracket_h, thickness]);
        // Holes
        for (ypos = hole_y_pos)
            translate([center_line, ypos, 0])
                countersunk_hole("top");
    }
}

// Vertical flange
module flange_side() {
    difference() {
        // Main plate
        translate([0, 0, 0])
            cube([bracket_w, thickness, bracket_h]);
        // Holes
        for (zpos = hole_y_pos)
            translate([center_line, 0, zpos])
                countersunk_hole("side");
    }
}

// Assemble L-bracket at origin (inner corner at [0,0,0])
flange_top();
flange_side();
パラメータ (7)
スライダを動かすと openscad-wasm で再レンダリング

prompt

OpenSCAD で、L 字に折れた金具(L-bracket)を作ってください。

形状:
- 水平面と垂直面の 2 つのフランジが直角に繋がっている
- 水平面は 50mm × 40mm(幅 × 奥行き)
- 垂直面は 50mm × 40mm(幅 × 高さ)
- 板厚はどちらも 3mm
- 内側コーナーが原点になるように配置(水平面は +Y 方向、垂直面は +Z 方向に伸びる)

皿穴(countersunk holes):
- 各面に 2 個ずつ、合計 4 個
- M4 ねじ用(貫通穴 Φ4.5mm + 皿座面 Φ8mm × 深さ 2mm)
- 各面の中心線上で、面の縁から 10mm 内側、左右対称に 2 個並べる
- 皿座面は外側(ボルト頭が当たる側)に向ける

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

iteration: iter-png

i1 success
iter 1
13.1s · 1726/732t · $0.0093
diff vs bare: +50/-60
- // L-bracket parameters
- bracket_w = 50;   // width (common to both flanges)
- bracket_h = 40;   // height / depth of flanges
+ // パラメータ
+ bracket_w = 50;   // 幅
+ bracket_h = 40;   // 奥行・高さ
  thickness = 3;
  
- // Countersunk hole parameters
- hole_d = 4.5;      // through hole diameter
- cs_d = 8;          // countersink diameter
- cs_depth = 2;      // countersink depth
- edge_offset = 10;  // distance from edge to hole center (along the main axis)
- center_line = bracket_w/2;
+ // 皿穴パラメータ
+ hole_d = 4.5;      // 貫通穴径
+ cs_d = 8;          // 皿座径
+ cs_depth = 2;      // 皿座深さ
+ edge_offset = 10;  // フランジ面の縁から穴中心までの距離
  
- // Hole positions (symmetric along width)
- hole_y_pos = [edge_offset, bracket_h-edge_offset];
+ // 2つ穴のY/Z座標
+ hole_pos = [edge_offset, bracket_h - edge_offset];
  
- // Utilities
- module countersunk_hole(face="") {
-     // face: "top" or "side"
-     if (face == "top") {
-         // Plate at Z = 0, +Y; hole along -Z
-         translate([0,0,thickness])
-         rotate([90,0,0])
+ // 板金L金具
+ module flange_horizontal() {
+     // 原点コーナーから +Y 方向へ
+     difference() {
+         cube([bracket_w, bracket_h, thickness]);
+         // 穴: 原点からY方向へ広がる、皿頭外側(Z=0側が外面)
+         for (y = hole_pos)
+             translate([bracket_w/2, y, 0])
+                 countersunk_hole("down");
+     }
+ }
+ module flange_vertical() {
+     // 原点から +Z方向へ
+     difference() {
+         cube([bracket_w, thickness, bracket_h]);
+         // 穴: 原点からZ方向へ広がる、皿頭外側(Y=0側が外面)
+         for (z = hole_pos)
+             translate([bracket_w/2, 0, z])
+                 countersunk_hole("front");
+     }
+ }
+ 
+ // 皿穴モジュール
+ // face: "down"=下向き外面, "front"=前向き外面
+ module countersunk_hole(face) {
+     if (face == "down") {
+         // Z=0側が皿座
          union() {
-             // Through hole
-             cylinder(d=hole_d, h=thickness+0.5, $fn=32);
-             // Countersink
-             translate([0,0,-cs_depth])
+             // 貫通穴
+             cylinder(d=hole_d, h=thickness+0.2, $fn=32);
+             // 皿座
              cylinder(d=cs_d, h=cs_depth, $fn=32);
          }
-     }
-     if (face == "side") {
-         // Plate at Y = 0, +Z; hole along -Y
-         translate([0,thickness,0])
-         rotate([0,90,0])
+     } else if (face == "front") {
+         // Y=0側が皿座
+         rotate([-90,0,0])
          union() {
-             // Through hole
-             cylinder(d=hole_d, h=thickness+0.5, $fn=32);
-             // Countersink
-             translate([0,0,-cs_depth])
+             // 貫通穴
+             cylinder(d=hole_d, h=thickness+0.2, $fn=32);
+             // 皿座
              cylinder(d=cs_d, h=cs_depth, $fn=32);
          }
      }
  }
  
- // Horizontal flange
- module flange_top() {
-     difference() {
-         // Main plate
-         translate([0, 0, 0])
-             cube([bracket_w, bracket_h, thickness]);
-         // Holes
-         for (ypos = hole_y_pos)
-             translate([center_line, ypos, 0])
-                 countersunk_hole("top");
-     }
- }
- 
- // Vertical flange
- module flange_side() {
-     difference() {
-         // Main plate
-         translate([0, 0, 0])
-             cube([bracket_w, thickness, bracket_h]);
-         // Holes
-         for (zpos = hole_y_pos)
-             translate([center_line, 0, zpos])
-                 countersunk_hole("side");
-     }
- }
- 
- // Assemble L-bracket at origin (inner corner at [0,0,0])
- flange_top();
- flange_side();
+ // 組立(原点内コーナー)
+ flange_horizontal();
+ translate([0, 0, thickness]) // 水平板上端に垂直板
+     flange_vertical();
SCAD (63 lines)
// パラメータ
bracket_w = 50;   // 幅
bracket_h = 40;   // 奥行・高さ
thickness = 3;

// 皿穴パラメータ
hole_d = 4.5;      // 貫通穴径
cs_d = 8;          // 皿座径
cs_depth = 2;      // 皿座深さ
edge_offset = 10;  // フランジ面の縁から穴中心までの距離

// 2つ穴のY/Z座標
hole_pos = [edge_offset, bracket_h - edge_offset];

// 板金L金具
module flange_horizontal() {
    // 原点コーナーから +Y 方向へ
    difference() {
        cube([bracket_w, bracket_h, thickness]);
        // 穴: 原点からY方向へ広がる、皿頭外側(Z=0側が外面)
        for (y = hole_pos)
            translate([bracket_w/2, y, 0])
                countersunk_hole("down");
    }
}
module flange_vertical() {
    // 原点から +Z方向へ
    difference() {
        cube([bracket_w, thickness, bracket_h]);
        // 穴: 原点からZ方向へ広がる、皿頭外側(Y=0側が外面)
        for (z = hole_pos)
            translate([bracket_w/2, 0, z])
                countersunk_hole("front");
    }
}

// 皿穴モジュール
// face: "down"=下向き外面, "front"=前向き外面
module countersunk_hole(face) {
    if (face == "down") {
        // Z=0側が皿座
        union() {
            // 貫通穴
            cylinder(d=hole_d, h=thickness+0.2, $fn=32);
            // 皿座
            cylinder(d=cs_d, h=cs_depth, $fn=32);
        }
    } else if (face == "front") {
        // Y=0側が皿座
        rotate([-90,0,0])
        union() {
            // 貫通穴
            cylinder(d=hole_d, h=thickness+0.2, $fn=32);
            // 皿座
            cylinder(d=cs_d, h=cs_depth, $fn=32);
        }
    }
}

// 組立(原点内コーナー)
flange_horizontal();
translate([0, 0, thickness]) // 水平板上端に垂直板
    flange_vertical();
i2 success
iter 2
14.3s · 1746/786t · $0.0098
diff vs i1: +19/-25
  // パラメータ
  bracket_w = 50;   // 幅
  bracket_h = 40;   // 奥行・高さ
  thickness = 3;
  
  // 皿穴パラメータ
  hole_d = 4.5;      // 貫通穴径
  cs_d = 8;          // 皿座径
  cs_depth = 2;      // 皿座深さ
  edge_offset = 10;  // フランジ面の縁から穴中心までの距離
  
  // 2つ穴のY/Z座標
  hole_pos = [edge_offset, bracket_h - edge_offset];
  
- // 板金L金具
+ // 内側コーナーが原点
  module flange_horizontal() {
      // 原点コーナーから +Y 方向へ
      difference() {
          cube([bracket_w, bracket_h, thickness]);
          // 穴: 原点からY方向へ広がる、皿頭外側(Z=0側が外面)
          for (y = hole_pos)
              translate([bracket_w/2, y, 0])
-                 countersunk_hole("down");
+                 countersunk_hole_down();
      }
  }
  module flange_vertical() {
      // 原点から +Z方向へ
      difference() {
          cube([bracket_w, thickness, bracket_h]);
          // 穴: 原点からZ方向へ広がる、皿頭外側(Y=0側が外面)
          for (z = hole_pos)
              translate([bracket_w/2, 0, z])
-                 countersunk_hole("front");
+                 countersunk_hole_front();
      }
  }
  
- // 皿穴モジュール
- // face: "down"=下向き外面, "front"=前向き外面
- module countersunk_hole(face) {
-     if (face == "down") {
-         // Z=0側が皿座
-         union() {
-             // 貫通穴
-             cylinder(d=hole_d, h=thickness+0.2, $fn=32);
-             // 皿座
-             cylinder(d=cs_d, h=cs_depth, $fn=32);
-         }
-     } else if (face == "front") {
-         // Y=0側が皿座
-         rotate([-90,0,0])
-         union() {
-             // 貫通穴
-             cylinder(d=hole_d, h=thickness+0.2, $fn=32);
-             // 皿座
-             cylinder(d=cs_d, h=cs_depth, $fn=32);
-         }
+ // 水平面側: 下側が皿座
+ module countersunk_hole_down() {
+     // 貫通穴
+     cylinder(d=hole_d, h=thickness+0.5, $fn=48);
+     // 皿座
+     cylinder(d=cs_d, h=cs_depth, $fn=48);
+ }
+ 
+ // 垂直面側: 正面(Y=0)側が皿座
+ module countersunk_hole_front() {
+     rotate([-90,0,0])
+     {
+         cylinder(d=hole_d, h=thickness+0.5, $fn=48);
+         cylinder(d=cs_d, h=cs_depth, $fn=48);
      }
  }
  
- // 組立(原点内コーナー)
+ // 組立(内側コーナーが原点!)
  flange_horizontal();
- translate([0, 0, thickness]) // 水平板上端に垂直板
+ translate([0, thickness, 0]) // 水平板のY端の真上(Z=0)に垂直板
      flange_vertical();
SCAD (57 lines)
// パラメータ
bracket_w = 50;   // 幅
bracket_h = 40;   // 奥行・高さ
thickness = 3;

// 皿穴パラメータ
hole_d = 4.5;      // 貫通穴径
cs_d = 8;          // 皿座径
cs_depth = 2;      // 皿座深さ
edge_offset = 10;  // フランジ面の縁から穴中心までの距離

// 2つ穴のY/Z座標
hole_pos = [edge_offset, bracket_h - edge_offset];

// 内側コーナーが原点
module flange_horizontal() {
    // 原点コーナーから +Y 方向へ
    difference() {
        cube([bracket_w, bracket_h, thickness]);
        // 穴: 原点からY方向へ広がる、皿頭外側(Z=0側が外面)
        for (y = hole_pos)
            translate([bracket_w/2, y, 0])
                countersunk_hole_down();
    }
}
module flange_vertical() {
    // 原点から +Z方向へ
    difference() {
        cube([bracket_w, thickness, bracket_h]);
        // 穴: 原点からZ方向へ広がる、皿頭外側(Y=0側が外面)
        for (z = hole_pos)
            translate([bracket_w/2, 0, z])
                countersunk_hole_front();
    }
}

// 水平面側: 下側が皿座
module countersunk_hole_down() {
    // 貫通穴
    cylinder(d=hole_d, h=thickness+0.5, $fn=48);
    // 皿座
    cylinder(d=cs_d, h=cs_depth, $fn=48);
}

// 垂直面側: 正面(Y=0)側が皿座
module countersunk_hole_front() {
    rotate([-90,0,0])
    {
        cylinder(d=hole_d, h=thickness+0.5, $fn=48);
        cylinder(d=cs_d, h=cs_depth, $fn=48);
    }
}

// 組立(内側コーナーが原点!)
flange_horizontal();
translate([0, thickness, 0]) // 水平板のY端の真上(Z=0)に垂直板
    flange_vertical();
i3 success
iter 3
7.9s · 1700/545t · $0.0078
diff vs i2: +0/-0
  // パラメータ
  bracket_w = 50;   // 幅
  bracket_h = 40;   // 奥行・高さ
  thickness = 3;
  
  // 皿穴パラメータ
  hole_d = 4.5;      // 貫通穴径
  cs_d = 8;          // 皿座径
  cs_depth = 2;      // 皿座深さ
  edge_offset = 10;  // フランジ面の縁から穴中心までの距離
  
  // 2つ穴のY/Z座標
  hole_pos = [edge_offset, bracket_h - edge_offset];
  
  // 内側コーナーが原点
  module flange_horizontal() {
      // 原点コーナーから +Y 方向へ
      difference() {
          cube([bracket_w, bracket_h, thickness]);
          // 穴: 原点からY方向へ広がる、皿頭外側(Z=0側が外面)
          for (y = hole_pos)
              translate([bracket_w/2, y, 0])
                  countersunk_hole_down();
      }
  }
  module flange_vertical() {
      // 原点から +Z方向へ
      difference() {
          cube([bracket_w, thickness, bracket_h]);
          // 穴: 原点からZ方向へ広がる、皿頭外側(Y=0側が外面)
          for (z = hole_pos)
              translate([bracket_w/2, 0, z])
                  countersunk_hole_front();
      }
  }
  
  // 水平面側: 下側が皿座
  module countersunk_hole_down() {
      // 貫通穴
      cylinder(d=hole_d, h=thickness+0.5, $fn=48);
      // 皿座
      cylinder(d=cs_d, h=cs_depth, $fn=48);
  }
  
  // 垂直面側: 正面(Y=0)側が皿座
  module countersunk_hole_front() {
      rotate([-90,0,0])
      {
          cylinder(d=hole_d, h=thickness+0.5, $fn=48);
          cylinder(d=cs_d, h=cs_depth, $fn=48);
      }
  }
  
  // 組立(内側コーナーが原点!)
  flange_horizontal();
  translate([0, thickness, 0]) // 水平板のY端の真上(Z=0)に垂直板
      flange_vertical();
SCAD (57 lines)
// パラメータ
bracket_w = 50;   // 幅
bracket_h = 40;   // 奥行・高さ
thickness = 3;

// 皿穴パラメータ
hole_d = 4.5;      // 貫通穴径
cs_d = 8;          // 皿座径
cs_depth = 2;      // 皿座深さ
edge_offset = 10;  // フランジ面の縁から穴中心までの距離

// 2つ穴のY/Z座標
hole_pos = [edge_offset, bracket_h - edge_offset];

// 内側コーナーが原点
module flange_horizontal() {
    // 原点コーナーから +Y 方向へ
    difference() {
        cube([bracket_w, bracket_h, thickness]);
        // 穴: 原点からY方向へ広がる、皿頭外側(Z=0側が外面)
        for (y = hole_pos)
            translate([bracket_w/2, y, 0])
                countersunk_hole_down();
    }
}
module flange_vertical() {
    // 原点から +Z方向へ
    difference() {
        cube([bracket_w, thickness, bracket_h]);
        // 穴: 原点からZ方向へ広がる、皿頭外側(Y=0側が外面)
        for (z = hole_pos)
            translate([bracket_w/2, 0, z])
                countersunk_hole_front();
    }
}

// 水平面側: 下側が皿座
module countersunk_hole_down() {
    // 貫通穴
    cylinder(d=hole_d, h=thickness+0.5, $fn=48);
    // 皿座
    cylinder(d=cs_d, h=cs_depth, $fn=48);
}

// 垂直面側: 正面(Y=0)側が皿座
module countersunk_hole_front() {
    rotate([-90,0,0])
    {
        cylinder(d=hole_d, h=thickness+0.5, $fn=48);
        cylinder(d=cs_d, h=cs_depth, $fn=48);
    }
}

// 組立(内側コーナーが原点!)
flange_horizontal();
translate([0, thickness, 0]) // 水平板のY端の真上(Z=0)に垂直板
    flange_vertical();