vibe-openscad

iter-png-2/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.6s · 1829/751t · $0.0006
SCAD (65 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=50){
    // Countersink + through: axis along +Z (top at z=0, extends to -)
    // Note: We start hole at z=0 and cut downward so it cleanly matches the faces.
    union() {
        // through
        cylinder(h=through, d=shaft_d, center=false);

        // countersink (cone)
        translate([0,0,0])
            cylinder(h=head_h, d1=head_d, d2=shaft_d, center=false);
    }
}

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

    // hole x positions: on center line in X, 10mm inside from outer edge -> x = ±(w/2-10)
    hx = [-(w/2 - 10), (w/2 - 10)];

    // hole y/z positions: 10mm inside from outer edge
    hy = d - 10; // for horizontal flange: y in [0..d], outer edge at y=d
    hz = d - 10; // for vertical flange: z in [0..d], outer edge at z=d

    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 outer side: +Z (top face at z=t)
        for (x = hx) {
            // Place so that countersink seat is cut from the top face (z=t) downwards
            translate([x, hy, t])
                rotate([180,0,0]) // flip so the countersink points upward (+Z face) in original model coordinates
                    countersunk_hole(shaft_d=4.5, head_d=8, head_h=2, through=100);
        }

        // --- Vertical flange holes (2x) ---
        // Countersink should face outer side: +Y (away from inner corner)
        // Vertical flange thickness is along Y: Y in [0..t], outer face at Y=t
        for (x = hx) {
            // Place at outer face (y=t) and cut toward -Y
            translate([x, t, hz])
                rotate([0,90,0])   // rotate Z-axis hole to Y-axis
                    // flip to ensure countersink opens toward +Y (outer face)
                    rotate([180,0,0])
                        countersunk_hole(shaft_d=4.5, head_d=8, head_h=2, through=100);
        }
    }
}

l_bracket();

meta

runIditer-png-2_gpt-5.4-nano-b4edbf3777f4-2026-04-28T18-59-23-377Z
matrixIditer-png-2/gpt-5.4-nano
signatureb4edbf3777f41664…
provideropenai
modelgpt-5.4-nano-2026-03-17
harnessbare
statussuccess
duration5.63s (wallclock: load + prompt eval + generation + network)
tokens1829 in / 751 out
wallclock tok/s133.4 tok/s (end-to-end)
cost$0.0006
createdAt2026-04-28T18:59:23.377Z
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 ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。