vibe-openscad

tier-2-l-bracket / claude-opus-5

7 run / 累計 292.1s / 累計 $0.6393

claude opus 5 bare

bare (provider default effort)

run detail →
render
bare render of tier-2-l-bracket
loading STL…
success 35.0s · 381/2832t · $0.0727
SCAD (58 lines)
// =====================================================
//  L-bracket (L 字金具)  M4 皿穴 x 4
// =====================================================
$fn = 96;

W        = 50;   // 幅 (X)
D        = 40;   // 水平面の奥行き (Y)
H        = 40;   // 垂直面の高さ  (Z)
T        = 3;    // 板厚
HOLE_D   = 4.5;  // 貫通穴径
CSK_D    = 8;    // 皿座面径
CSK_DP   = 2;    // 皿座面深さ
EDGE     = 10;   // 面の縁からの距離

XOFF = W/2 - EDGE;   // ±15 : 左右の穴位置
YPOS = D/2;          // 水平面 中心線
ZPOS = H/2;          // 垂直面 中心線

// -----------------------------------------------------
// 皿穴 : +Z 方向へ貫通、z=0 側(外側)に皿座面
// -----------------------------------------------------
module countersunk_hole(t = T) {
    // 貫通穴
    translate([0, 0, -1])
        cylinder(d = HOLE_D, h = t + 2);
    // 皿座面(円錐)
    cylinder(d1 = CSK_D, d2 = HOLE_D, h = CSK_DP);
    // 外側の逃げ
    translate([0, 0, -1])
        cylinder(d = CSK_D, h = 1);
}

// -----------------------------------------------------
// 本体
// -----------------------------------------------------
difference() {

    union() {
        // 水平フランジ : 内面 z=0 、外面 z=-T 、+Y 方向へ
        translate([-W/2, -T, -T])
            cube([W, D + T, T]);

        // 垂直フランジ : 内面 y=0 、外面 y=-T 、+Z 方向へ
        translate([-W/2, -T, -T])
            cube([W, T, H + T]);
    }

    // --- 水平面の皿穴(皿座面は下面 z=-T)---
    for (x = [-XOFF, XOFF])
        translate([x, YPOS, -T])
            countersunk_hole(T);

    // --- 垂直面の皿穴(皿座面は手前面 y=-T)---
    for (x = [-XOFF, XOFF])
        translate([x, -T, ZPOS])
            rotate([-90, 0, 0])
                countersunk_hole(T);
}
パラメータ (8) —
スライダを動かすと 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 ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。

variant: effort

low success →
low
15.1s · 381/1046t · $0.0281
SCAD (40 lines)
// L-bracket with countersunk holes
$fn = 64;

W  = 50;   // 幅
D  = 40;   // 水平面の奥行き
H  = 40;   // 垂直面の高さ
T  = 3;    // 板厚

HOLE_D  = 4.5;  // 貫通穴径
CS_D    = 8;    // 皿座面径
CS_DEPTH= 2;    // 皿深さ

EDGE = 10;      // 縁からの距離
XOFF = W/2 - EDGE;   // ±15
POS  = D - EDGE;     // 30 (外側の縁から10mm内側)

// 皿穴(z-方向に貫通、皿は -Z 側=外側)
module csk_hole(len) {
    translate([0, 0, -1])
        cylinder(d = HOLE_D, h = len + 2);
    translate([0, 0, -0.01])
        cylinder(d1 = CS_D, d2 = HOLE_D, h = CS_DEPTH);
}

difference() {
    union() {
        // 水平フランジ (+Y 方向)
        translate([-W/2, 0, -T]) cube([W, D, T]);
        // 垂直フランジ (+Z 方向)
        translate([-W/2, -T, 0]) cube([W, T, H]);
    }

    // 水平面の皿穴(皿は下面 = 外側)
    for (x = [-XOFF, XOFF])
        translate([x, POS, -T]) csk_hole(T);

    // 垂直面の皿穴(皿は -Y 面 = 外側)
    for (x = [-XOFF, XOFF])
        translate([x, -T, POS]) rotate([-90, 0, 0]) csk_hole(T);
}
mediumnot run
—
high (default) success →
high
12.0s · 381/983t · $0.0265
SCAD (66 lines)
// L-bracket with countersunk holes for M4 screws
// Inner corner at origin; horizontal flange extends +Y, vertical flange extends +Z

// ---------- Parameters ----------
width      = 50;   // X: common width of both flanges
h_depth    = 40;   // Y: horizontal flange depth
v_height   = 40;   // Z: vertical flange height
thick      = 3;    // plate thickness

hole_d     = 4.5;  // through hole diameter (M4 clearance)
cs_d       = 8;    // countersink face diameter
cs_depth   = 2;    // countersink depth

edge_off   = 10;   // distance from flange outer edge to hole center
x_off      = 15;   // holes symmetric about X center, +/- x_off

$fn = 64;

// ---------- Countersunk hole cutter ----------
// Cut along -Z direction from the outer surface (z = 0 is the outer face).
// Countersink cone opens upward (toward the tool/bolt head side).
module countersunk_hole(plate_t = thick) {
    eps = 0.01;
    union() {
        // through hole
        translate([0, 0, -plate_t - eps])
            cylinder(h = plate_t + 2 * eps, d = hole_d);
        // countersink cone (cs_d at outer face -> hole_d at cs_depth)
        translate([0, 0, -cs_depth])
            cylinder(h = cs_depth, d1 = hole_d, d2 = cs_d);
        // small clearance above the outer face
        translate([0, 0, -eps])
            cylinder(h = cs_depth, d = cs_d);
    }
}

// ---------- Bracket ----------
module l_bracket() {
    difference() {
        union() {
            // horizontal flange: X 0..width, Y 0..h_depth, Z -thick..0
            translate([0, 0, -thick])
                cube([width, h_depth, thick]);
            // vertical flange: X 0..width, Y -thick..0, Z 0..v_height
            translate([0, -thick, 0])
                cube([width, thick, v_height]);
            // fill inner corner block
            translate([0, -thick, -thick])
                cube([width, thick, thick]);
        }

        // --- holes in horizontal flange (countersink on bottom, z = -thick) ---
        for (dx = [-x_off, x_off])
            translate([width / 2 + dx, h_depth - edge_off, -thick])
                rotate([180, 0, 0])
                    countersunk_hole(thick);

        // --- holes in vertical flange (countersink on front, y = -thick) ---
        for (dx = [-x_off, x_off])
            translate([width / 2 + dx, -thick, v_height - edge_off])
                rotate([-90, 0, 0])
                    countersunk_hole(thick);
    }
}

l_bracket();
max success →
max
86.4s · 381/7723t · $0.1950
SCAD (66 lines)
// ============================================================
//  L-bracket (L字金具) + M4 皿穴 4個
//  内側コーナー = 原点  /  水平面 : +Y 方向  /  垂直面 : +Z 方向
// ============================================================

$fn = 96;

/* ---------------- パラメータ ---------------- */
W = 50;     // 幅 (X)
D = 40;     // 水平フランジ 奥行 (+Y)
H = 40;     // 垂直フランジ 高さ (+Z)
T = 3;      // 板厚

HOLE_D = 4.5;   // 貫通穴 Φ4.5 (M4 バカ穴)
CS_D   = 8;     // 皿座面 Φ8
CS_H   = 2;     // 皿座 深さ 2
EDGE   = 10;    // 面の縁から穴中心までの距離

EPS = 0.01;

X_OFF = W/2 - EDGE;   // ±15 : 左右対称配置
Y_POS = D/2;          //  20 : 水平面の中心線
Z_POS = H/2;          //  20 : 垂直面の中心線

/* ---------------- 皿穴モジュール ----------------
   材料は z = 0 → t に存在し、皿座は z = 0 側(-Z 方向)に開口   */
module csk_hole(t = T) {
    ext   = 1;                                  // 座面を面外へ延長(差集合用)
    slope = (CS_D - HOLE_D) / (2 * CS_H);       // 皿のテーパ

    // 貫通穴
    translate([0, 0, -EPS])
        cylinder(h = t + 2*EPS, d = HOLE_D);

    // 皿座(円錐)
    translate([0, 0, -ext])
        cylinder(h = ext + CS_H, d1 = CS_D + 2*slope*ext, d2 = HOLE_D);
}

/* ---------------- 本体 ---------------- */
module bracket_body() {
    // 水平フランジ : x = -W/2..W/2 , y = -T..D , z = -T..0
    translate([-W/2, -T, -T]) cube([W, D + T, T]);

    // 垂直フランジ : x = -W/2..W/2 , y = -T..0 , z = -T..H
    translate([-W/2, -T, -T]) cube([W, T, H + T]);
}

module l_bracket() {
    difference() {
        bracket_body();

        // 水平面の2穴(皿座は下面 z = -T = 外側 に向く)
        for (x = [-X_OFF, X_OFF])
            translate([x, Y_POS, -T])
                csk_hole(T);

        // 垂直面の2穴(皿座は背面 y = -T = 外側 に向く)
        for (x = [-X_OFF, X_OFF])
            translate([x, -T, Z_POS])
                rotate([-90, 0, 0])
                    csk_hole(T);
    }
}

l_bracket();
xhigh success →
xhigh
45.2s · 381/3749t · $0.0956
SCAD (66 lines)
// ============================================================
//  L-bracket (L字金具) with countersunk holes
//  内側コーナー = 原点 / 水平面 = +Y方向 / 垂直面 = +Z方向
// ============================================================

$fn = 64;

// ---- 主要寸法 ----
W    = 50;   // 幅 (X)
D    = 40;   // 水平面の奥行き (Y)
H    = 40;   // 垂直面の高さ (Z)
T    = 3;    // 板厚

// ---- 皿穴 (M4) ----
HOLE_D  = 4.5;   // 貫通穴径
CSK_D   = 8;     // 皿座面径
CSK_H   = 2;     // 皿座面深さ
EDGE    = 10;    // 面の縁からの距離
EPS     = 0.01;

HX = W/2 - EDGE;   // ±15mm : 左右対称位置

// ------------------------------------------------------------
// 皿穴カッター
//   ローカル座標: 外側表面 = z=0、材料は +Z 方向へ厚さ t
// ------------------------------------------------------------
module csk_cutter(t) {
    // 貫通穴
    translate([0, 0, -1])
        cylinder(d = HOLE_D, h = t + 2);
    // 皿座面 (テーパ)
    translate([0, 0, -EPS])
        cylinder(d1 = CSK_D, d2 = HOLE_D, h = CSK_H + EPS);
    // 表面より外側は完全に開口させる
    translate([0, 0, -1])
        cylinder(d = CSK_D, h = 1 + EPS);
}

// ------------------------------------------------------------
// 本体
// ------------------------------------------------------------
module l_bracket() {
    difference() {
        union() {
            // 水平フランジ (内側上面が z=0)
            translate([-W/2, 0, -T])
                cube([W, D, T]);
            // 垂直フランジ (内側前面が y=0) + コーナー部
            translate([-W/2, -T, -T])
                cube([W, T, H + T]);
        }

        // --- 水平面の皿穴 (皿座面は下面 = 外側) ---
        for (x = [-HX, HX])
            translate([x, D/2, -T])
                csk_cutter(T);

        // --- 垂直面の皿穴 (皿座面は背面 = 外側) ---
        for (x = [-HX, HX])
            translate([x, -T, H/2])
                rotate([-90, 0, 0])
                    csk_cutter(T);
    }
}

l_bracket();

variant: thinking

off success →
off
12.0s · 381/983t · $0.0265
SCAD (66 lines)
// L-bracket with countersunk holes for M4 screws
// Inner corner at origin; horizontal flange extends +Y, vertical flange extends +Z

// ---------- Parameters ----------
width      = 50;   // X: common width of both flanges
h_depth    = 40;   // Y: horizontal flange depth
v_height   = 40;   // Z: vertical flange height
thick      = 3;    // plate thickness

hole_d     = 4.5;  // through hole diameter (M4 clearance)
cs_d       = 8;    // countersink face diameter
cs_depth   = 2;    // countersink depth

edge_off   = 10;   // distance from flange outer edge to hole center
x_off      = 15;   // holes symmetric about X center, +/- x_off

$fn = 64;

// ---------- Countersunk hole cutter ----------
// Cut along -Z direction from the outer surface (z = 0 is the outer face).
// Countersink cone opens upward (toward the tool/bolt head side).
module countersunk_hole(plate_t = thick) {
    eps = 0.01;
    union() {
        // through hole
        translate([0, 0, -plate_t - eps])
            cylinder(h = plate_t + 2 * eps, d = hole_d);
        // countersink cone (cs_d at outer face -> hole_d at cs_depth)
        translate([0, 0, -cs_depth])
            cylinder(h = cs_depth, d1 = hole_d, d2 = cs_d);
        // small clearance above the outer face
        translate([0, 0, -eps])
            cylinder(h = cs_depth, d = cs_d);
    }
}

// ---------- Bracket ----------
module l_bracket() {
    difference() {
        union() {
            // horizontal flange: X 0..width, Y 0..h_depth, Z -thick..0
            translate([0, 0, -thick])
                cube([width, h_depth, thick]);
            // vertical flange: X 0..width, Y -thick..0, Z 0..v_height
            translate([0, -thick, 0])
                cube([width, thick, v_height]);
            // fill inner corner block
            translate([0, -thick, -thick])
                cube([width, thick, thick]);
        }

        // --- holes in horizontal flange (countersink on bottom, z = -thick) ---
        for (dx = [-x_off, x_off])
            translate([width / 2 + dx, h_depth - edge_off, -thick])
                rotate([180, 0, 0])
                    countersunk_hole(thick);

        // --- holes in vertical flange (countersink on front, y = -thick) ---
        for (dx = [-x_off, x_off])
            translate([width / 2 + dx, -thick, v_height - edge_off])
                rotate([-90, 0, 0])
                    countersunk_hole(thick);
    }
}

l_bracket();
adaptive (default) success →
adaptive
86.4s · 381/7723t · $0.1950
SCAD (66 lines)
// ============================================================
//  L-bracket (L字金具) + M4 皿穴 4個
//  内側コーナー = 原点  /  水平面 : +Y 方向  /  垂直面 : +Z 方向
// ============================================================

$fn = 96;

/* ---------------- パラメータ ---------------- */
W = 50;     // 幅 (X)
D = 40;     // 水平フランジ 奥行 (+Y)
H = 40;     // 垂直フランジ 高さ (+Z)
T = 3;      // 板厚

HOLE_D = 4.5;   // 貫通穴 Φ4.5 (M4 バカ穴)
CS_D   = 8;     // 皿座面 Φ8
CS_H   = 2;     // 皿座 深さ 2
EDGE   = 10;    // 面の縁から穴中心までの距離

EPS = 0.01;

X_OFF = W/2 - EDGE;   // ±15 : 左右対称配置
Y_POS = D/2;          //  20 : 水平面の中心線
Z_POS = H/2;          //  20 : 垂直面の中心線

/* ---------------- 皿穴モジュール ----------------
   材料は z = 0 → t に存在し、皿座は z = 0 側(-Z 方向)に開口   */
module csk_hole(t = T) {
    ext   = 1;                                  // 座面を面外へ延長(差集合用)
    slope = (CS_D - HOLE_D) / (2 * CS_H);       // 皿のテーパ

    // 貫通穴
    translate([0, 0, -EPS])
        cylinder(h = t + 2*EPS, d = HOLE_D);

    // 皿座(円錐)
    translate([0, 0, -ext])
        cylinder(h = ext + CS_H, d1 = CS_D + 2*slope*ext, d2 = HOLE_D);
}

/* ---------------- 本体 ---------------- */
module bracket_body() {
    // 水平フランジ : x = -W/2..W/2 , y = -T..D , z = -T..0
    translate([-W/2, -T, -T]) cube([W, D + T, T]);

    // 垂直フランジ : x = -W/2..W/2 , y = -T..0 , z = -T..H
    translate([-W/2, -T, -T]) cube([W, T, H + T]);
}

module l_bracket() {
    difference() {
        bracket_body();

        // 水平面の2穴(皿座は下面 z = -T = 外側 に向く)
        for (x = [-X_OFF, X_OFF])
            translate([x, Y_POS, -T])
                csk_hole(T);

        // 垂直面の2穴(皿座は背面 y = -T = 外側 に向く)
        for (x = [-X_OFF, X_OFF])
            translate([x, -T, Z_POS])
                rotate([-90, 0, 0])
                    csk_hole(T);
    }
}

l_bracket();
dynamicnot run
—