$fn=64; // --- Parameters --- arm_length = 100; // Length of both horizontal and vertical arms bracket_width = 25; // Width of the bracket thickness = 6; // Thickness of the main arms rib_thickness = 4; // Thickness of the side support ribs hole_dia = 4.5; // Diameter of the mounting holes (fits #8/#10 screws) cs_dia = 8.5; // Countersink outer diameter module shelf_bracket() { difference() { union() { // Vertical arm (mounts to wall) translate([0, 0, -arm_length + thickness]) cube([thickness, bracket_width, arm_length]); // Horizontal arm (supports shelf) cube([arm_length, bracket_width, thickness]); // Left support rib (U-channel design for strength) hull() { translate([thickness, 0, 0]) cube([0.1, rib_thickness, 0.1]); translate([arm_length - 5, 0, 0]) cube([5, rib_thickness, 0.1]); translate([thickness, 0, -arm_length + thickness]) cube([0.1, rib_thickness, 5]); } // Right support rib hull() { translate([thickness, bracket_width - rib_thickness, 0]) cube([0.1, rib_thickness, 0.1]); translate([arm_length - 5, bracket_width - rib_thickness, 0]) cube([5, rib_thickness, 0.1]); translate([thickness, bracket_width - rib_thickness, -arm_length + thickness]) cube([0.1, rib_thickness, 5]); } } // --- Mounting holes --- // Vertical arm holes (Wall side) // Lower hole translate([-1, bracket_width/2, -arm_length + 20]) rotate([0, 90, 0]) cylinder(h=thickness+2, d=hole_dia); translate([thickness - 3, bracket_width/2, -arm_length + 20]) rotate([0, 90, 0]) cylinder(h=3.1, d1=hole_dia, d2=cs_dia); // Upper hole translate([-1, bracket_width/2, -20]) rotate([0, 90, 0]) cylinder(h=thickness+2, d=hole_dia); translate([thickness - 3, bracket_width/2, -20]) rotate([0, 90, 0]) cylinder(h=3.1, d1=hole_dia, d2=cs_dia); // Horizontal arm holes (Shelf side) // Inner hole translate([25, bracket_width/2, -1]) cylinder(h=thickness+2, d=hole_dia); translate([25, bracket_width/2, -0.1]) cylinder(h=3.1, d1=cs_dia, d2=hole_dia); // Outer hole translate([arm_length - 20, bracket_width/2, -1]) cylinder(h=thickness+2, d=hole_dia); translate([arm_length - 20, bracket_width/2, -0.1]) cylinder(h=3.1, d1=cs_dia, d2=hole_dia); } } // Render the bracket shelf_bracket();