mil = 25.4/1000; $fn = 48; W = 1900*mil; H = 2700*mil; T = 1; module holes() { translate([200*mil, 200*mil, 0]) children(); translate([1700*mil, 200*mil, 0]) children(); translate([1700*mil, 2500*mil, 0]) children(); translate([200*mil, 2500*mil, 0]) children(); } *translate([0, 0, 4]) difference() { color("green") cube([W, H, 1.6]); holes() cylinder (d=3.5, h=10, center=true); } module cm(x1, y1, x2, y2) { translate([min(x1, x2)*mil, H-max(y1,y2)*mil, 0]) cube([abs(x2-x1)*mil, abs(y2-y1)*mil, 4]); } module cp(x, y) { cm (x-120, y-120, x+120, y+120); } difference() { union() { difference() { translate([-T, -T, 0]) cube([W+2*T, H+2*T, 4 + 1.6]); translate([0, 0, 4]) cube([W, H, 6]); translate([T, T, 1]) cube([W-T*2, H-T*2, 6]); } holes() translate([-200*mil, -200*mil, 0]) cube([400*mil, 400*mil, 4]); cm(800, 2400, 1150, 2062); cm(1425, 2225, 1625, 462); cp(537, 1950); cp(1325, 1700); cp(1325, 650); } holes() cylinder (d=3, h=30, center=true); }