width=112; height=31; borderwidth=2.2; $fn=100; module body() { difference() { intersection() { cube([width,height,6]); translate([56, height/2, 0]) cylinder(d=112, h=6); } translate([2.2,2.2,2]) cube([width-2.2*2, height-2.2*2, 4]); } translate([borderwidth-0.75,16.3,0]) cube([4.5,7,16]); translate([width - 4.5 - borderwidth + .75,16.3,0]) cube([4.5,7,16]); translate([10,2.2-0.7,6]) cube([90, 0.7, 2.5]); translate([10,31-2.2,6]) cube([90, 0.7, 2.5]); // 3 round holders in middle translate([11.75 - 4.15/2, 18.4, 0]) holecylinder(); translate([44.6 - 4.15/2, 9.5 - 4.15/2, 0]) holecylinder(); translate([width- 20 + 4.15, height - 8.10 + 4.15/2, 0]) holecylinder(); } module holecylinder() { difference() { rotate([0,0,45]) cylinder(h=14.3, d=4.15 * sqrt(2), $fn=4); translate([0,0,14.3-7]) cylinder(h=7, d=2); } } difference() { body(); translate([15.25,height-3.25-11.3,0]) cube([9.3,11.3,5]); translate([36.25,height-7-7.5,0]) cube([3.7, 8.5, 5]); translate([width - 10 - 15.75, height-10.75-8, 0]) cube([15.75, 8,5]); translate([width-40.25 + 1.5, height-15.75, 0]) cylinder(d=3.5, h=5); // holes translate([0,16.3 + 7/2,11.6]) rotate([0, 90, 0]) cylinder(h=10, d=1); #translate([width - 10,16.3 + 7/2,11.6]) rotate([0, 90, 0]) cylinder(h=10, d=1); }