$fn=33; height=40; width=60; b=3; triagleheight=5; M3HoleDiam=3.4; holedistance=10; 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=M3HoleDiam); } module XM3Hole() { rotate([270,0,0])cylinder(h=b, d=M3HoleDiam); }