include // Parameter for console overwrite b = 30.0; t = 30.0; module lid(b, t) { bInner = b - 10; tInner = t - 10; if (bInner >= 6 && tInner >= 6) { difference() { cube([ b, t, 2 ], false); bSpace = 5 + (((bInner + 2) % 8) / 2); bAmount = (((bInner + 2) - bSpace + 5) / 8); tSpace = 5 + (((tInner + 2) % 8) / 2); tAmount = (((tInner + 2) - tSpace + 5) / 8); for (i = [0:bAmount - 1], j = [0:tAmount - 1]) translate([ bSpace + i * 8, tSpace + j * 8, -1 ]) cube([ 6, 6, 3.5 ], false); } } else cube([ b, t, 2 ], false); sideCut(b,t); translate([b, 0, 0]) mirror([1, 0, 0]) sideCut(b,t); } module sideCut(b,t) { difference() { translate([0,0,2]) cube([3, 0.75 * t - 2.5,6.6], false); translate([2.3,t/4+2,0.5]) rotate([-90,-90,0]) linear_extrude(0.5 * t) polygon(points=[ [-1,-1], [-1,1], [7, 1], [5.1,-1] ]); } translate([0,0,2]) cube([1.4, t, 3.4], false); } lid(b, t);