$fn = 33; height = 40; width = 60; b = 3; triagleheight = 5; M4HoleDiam = 4.4; holedistance = 10; // main call angle_bracket(); module angle_bracket() { render() difference() { frame(); holes(); } } module frame() { // x plate cube([width, b, height]); // y plate translate([b, 0, 0]) rotate([0, 0, 90]) cube([width, b, height]); //bottom triangle translate([b, b, 0]) stabilizetriangle(); // upper triangle translate([b, b, height - triagleheight]) stabilizetriangle(); } module holes() { // y holes translate([0, holedistance, height - holedistance]) YM3Hole(); translate([0, width - holedistance, height - holedistance]) YM3Hole(); translate([0, holedistance, holedistance]) YM3Hole(); translate([0, width - holedistance, holedistance]) YM3Hole(); translate([holedistance, 0, height - holedistance]) XM3Hole(); translate([width - holedistance, 0, height - holedistance]) XM3Hole(); translate([holedistance, 0, holedistance]) XM3Hole(); translate([width - holedistance, 0, holedistance]) XM3Hole(); } module stabilizetriangle() { linear_extrude(triagleheight) polygon([[0, 0], [0, width - b], [width - b, 0]]); } module YM3Hole() { rotate([0, 90, 0])cylinder(h = b, d = M4HoleDiam); } module XM3Hole() { rotate([270, 0, 0])cylinder(h = b, d = M4HoleDiam); }