include // Parameter for console overwrite x = 30.0; y = 30.0; z = 20.0; box(x, y, z); module box(x, y, z) { difference() { // base cuboid( [ x, y, z - 2], anchor = [ -1, -1, -1 ], rounding = 1, edges = [ TOP, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ] ); // inner translate([ 5, 1.5, 1.5 ]) cuboid( [ x - 10, y - 3, z - 0.5 ], anchor = [ -1, -1, -1 ], rounding = 8, edges = [ BOTTOM + FRONT, BOTTOM + LEFT, BOTTOM + BACK, BOTTOM + RIGHT, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ] ); sideCut(y); // left lower translate([0, 0, z - 2]) mirror([0, 0, 1]) sideCut(y); // left upper translate([x, 0, 0]) mirror([1, 0, 0]) sideCut(y); // right lower translate([x, 0, z - 2]) mirror([1, 0, 0]) mirror([0, 0, 1]) sideCut(y); // right upper } } module sideCut(y) { translate([0,-1,0]) rotate([-90,-90,0]) linear_extrude(y/4+4) polygon(points=[ [-1,-1], [-1,2.1], [3.05, 2.1], [6.35,-1] ]); difference() { translate([0,y/4+2,0]) rotate([-90,-90,0]) linear_extrude(0.75 * y) polygon(points=[ [-1,-1], [-1,3.45], [7.15, 3.45], [11.45,-1] ]); translate([2.45,0.75 * y - 2.4, 0]) rotate([90,-90,0]) linear_extrude(0.4 * y + 5) polygon(points=[ [-1,-1], [-1,0.35], [3.05, 0.35], [4.65,-1] ]); } }