vibe-openscad

iter-png-3/gpt-5.4-nano / tier-2-l-bracket

success tier 2

bare (gpt 5.4 nano)

render
bare render of tier-2-l-bracket
loading STL…
success 5.2s · 1710/735t · $0.0006
SCAD (66 lines)
// L-bracket with 4x M4 countersunk holes (2 per flange)
// Inner corner at origin: horizontal flange extends +Y, vertical flange extends +Z

$fn = 96;

module countersunk_hole(shaft_d=4.5, head_d=8, head_h=2, through=100)
{
    // Cut with axis along +Z (top at z=0, extends to -Z)
    union() {
        cylinder(h=through, d=shaft_d, center=false);                       // through hole
        cylinder(h=head_h,  d1=head_d, d2=shaft_d, center=false);          // countersink
    }
}

module l_bracket()
{
    w = 50;   // X size
    d = 40;   // Y (horizontal) / Z (vertical) size
    t = 3;    // thickness of both flanges

    // Hole centers along X on the centerline; 10mm from outer edges.
    // Outer edges at x=±w/2 => center positions at x=±(w/2 - 10)
    hx = [-(w/2 - 10), (w/2 - 10)];

    // Hole center lines 10mm inside from outer edge.
    // Horizontal flange outer edge at Y=d => hole centers at y=d-10
    // Vertical flange outer edge at Z=d => hole centers at z=d-10
    hy = d - 10;
    hz = d - 10;

    difference() {
        union() {
            // Horizontal flange: X[-w/2..+w/2], Y[0..d], Z[0..t]
            translate([-w/2, 0, 0])
                cube([w, d, t]);

            // Vertical flange: X[-w/2..+w/2], Y[0..t], Z[0..d]
            translate([-w/2, 0, 0])
                cube([w, t, d]);
        }

        // --- Horizontal flange holes (2x) ---
        // Countersink should face the outer side: +Z face (top of horizontal flange).
        // We cut by placing hole primitive at z=t and cutting downward (-Z).
        for (x = hx) {
            translate([x, hy, t])
                // hole axis along -Z: already built as cutting from z=0 downwards,
                // so just translate; no flips needed.
                countersunk_hole(shaft_d=4.5, head_d=8, head_h=2, through=100);
        }

        // --- Vertical flange holes (2x) ---
        // Countersink should face outer side: +Y face of the vertical flange (away from inner corner).
        // Place at y=t and cut toward -Y (i.e., axis along -Y).
        for (x = hx) {
            translate([x, t, hz])
                rotate([0, 90, 0])   // rotate Z-axis hole to Y-axis
                    // now the countersink axis direction should be toward -Y.
                    // The countersunk_hole is built to extend along -Z from its local origin.
                    // After rotation, that becomes extension along -Y.
                    countersunk_hole(shaft_d=4.5, head_d=8, head_h=2, through=100);
        }
    }
}

l_bracket();

meta

runIditer-png-3_gpt-5.4-nano-f05e088d72be-2026-04-28T18-59-28-643Z
matrixIditer-png-3/gpt-5.4-nano
signaturef05e088d72beb157…
provideropenai
modelgpt-5.4-nano-2026-03-17
harnessbare
statussuccess
duration5.21s (wallclock: load + prompt eval + generation + network)
tokens1710 in / 735 out
wallclock tok/s141.2 tok/s (end-to-end)
cost$0.0006
createdAt2026-04-28T18:59:28.643Z
gitCommit781e6c683dda
openscadOpenSCAD version 2026.04.27

iteration chain

各 iteration step は独立した benchmark run です。parentRunId で前段にリンクします。

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 ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。