include // Parameter for console overwrite x = 172; y = 84; z = 35.5; figureHolder(x, y, z); module figureHolder(x, y, z) { difference() { cube([ x, y, z ], false); translate([ 1.5, 1.5, 1.5 ]) cube([ x - 3, y - 3, z - 1 ], false); // windows window(32 / 2, y, z, "Schleim"); // floor xInner = x - 10; yInner = y - 10; if (xInner >= 6 && yInner >= 6) { xSpace = 5 + (((xInner + 2) % 8) / 2); xAmount = (((xInner + 2) - xSpace + 5) / 8); ySpace = 5 + (((yInner + 2) % 8) / 2); yAmount = (((yInner + 2) - ySpace + 5) / 8); for (i = [0:xAmount - 1], j = [0:yAmount - 1]) translate([ xSpace + i * 8, ySpace + j * 8, -1 ]) cube([ 6, 6, 3.5 ], false); } translate([ 94 / 2 + 32, 0.6, 4 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Rattenvolk", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); translate([ 43 / 2 + 127.5, 0.6, 4 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Unholde", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); translate([ 74 / 2 + 32, 0.6, 12 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Gnoll", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); translate([ 63 / 2 + 104.5, 0.6, 12 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Skelette", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); translate([ 54 / 2 + 32, 0.6, 20 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Echsenvolk", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); translate([ 36 / 2 + 84.5, 0.6, 20 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Hexen", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); translate([ 42 / 2 + 122, 0.6, 20 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( "Feen", size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); } // deviders translate([ 30.5, 1.5, 0 ]) cube([ 1.5, y - 3, 6.5], false); // Schleim translate([ 32, 5, 0 ]) cube([ 94, 1.5, 6.5], false); // Rattenvolk translate([ 32, 19.5, 0 ]) cube([ 94, 1.5, 6.5], false); // Rattenvolk translate([ 126, 5, 0 ]) cube([ 1.5, 21, 6.5], false); // Rattenvolk translate([ 127.5, 6, 0 ]) cube([ 43, 1.5, 6.5], false); // Unholde translate([ 127.5, 24.5, 0 ]) cube([ 43, 1.5, 6.5], false); // Unholde translate([ 32, 24, 0 ]) cube([ 74, 1.5, 6.5], false); // Gnolle translate([ 32, 50.5, 0 ]) cube([ 74, 1.5, 6.5], false); // Gnolle translate([ 106, 24, 0 ]) cube([ 1.5, 31.5, 6.5], false); // Gnolle translate([ 107.5, 28, 0 ]) cube([ 63, 1.5, 6.5], false); // Skelette translate([ 107.5, 55.5, 0 ]) cube([ 63, 1.5, 6.5], false); // Skelette translate([ 32, 76, 0 ]) cube([ 54, 1.5, 6.5], false); // Echsenvolk translate([ 86, 52, 0 ]) cube([ 1.5, 27.5, 6.5], false); // Echsenvolk translate([ 87.5, 55.5, 0 ]) cube([ 28, 1.5, 6.5], false); // Hexen translate([ 87.5, 78, 0 ]) cube([ 28, 1.5, 6.5], false); // Hexen translate([ 115.5, 57, 0 ]) cube([ 1.5, 22.5, 6.5], false); // Hexen translate([ 127, 57, 0 ]) cube([ 1.5, 27, 6.5], false); // Feen translate([ 128.5, 81.5, 0 ]) cube([ 42, 1.5, 6.5], false); // Feen /* */ } module window(x, y, z, name) { windowHelper(x, 0, z, name); windowHelper(x, y - 1, z, ""); } module windowHelper(x, y, z, name) { translate([ 7, y - 1, 8 ]) cuboid( [ 2 * (x - 7), 3.5, z - 8 ], anchor = [-1, -1, -1], rounding = 3, edges = [ BOTTOM + LEFT, BOTTOM + RIGHT ] ); difference() { translate([ 1.5, y - 1, z - 5 ]) cube([ 2 * (x - 1.5), 3.5, 6 ], false); translate([ 1, y - 1, z - 6 ]) cuboid( [ 6, 3.5 , 6 ], anchor = [-1, -1, -1], rounding = 5, edges = TOP + RIGHT ); translate([ 2 * x - 7, y - 1, z - 6 ]) cuboid( [ 6, 3.5 , 6 ], anchor = [-1, -1, -1], rounding = 5, edges = TOP + LEFT ); } translate([ x, y + 0.6, 4 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( name, size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); }