include difference() { cube([ 175, 55, 37 ], false); translate([ 1.5, 1.5, 1.5 ]) cube([ 172, 52, 36 ], false); // windows window(16.875, 55, 37, "Neuling"); window(49.5, 55, 37, "Krieger"); window(83.25, 55, 37, "Schurkin"); window(113.5, 55, 37, "Magier"); window(149.25, 55, 37, "Bogenschützin"); } // deviders translate([ 8.25, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 27.5, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 38, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 63, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 73.25, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 95.25, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 99.25, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 129.75, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 137.5, 1.5, 1.5]) cube([1, 52, 5.5], false); translate([ 163, 1.5, 1.5]) cube([1, 52, 5.5], false); module window(x, y, z, name) { windowHelper(x, 0, z, name); windowHelper(x, y - 1, z, ""); } module windowHelper(x, y, z, name) { translate([ x - 10, y - 1, 12 ]) cuboid( [ 23, 3.5, z - 12 ], anchor = [-1, -1, -1], rounding = 5, edges = [ BOTTOM + LEFT, BOTTOM + RIGHT ] ); difference() { translate([ x - 15, y - 1, z - 5 ]) cube([ 33, 3.5, 6 ], false); translate([ x - 16, y - 1, z - 6 ]) cuboid( [ 6, 3.5 , 6 ], anchor = [-1, -1, -1], rounding = 5, edges = TOP + RIGHT ); translate([ x + 13, y - 1, z - 6 ]) cuboid( [ 6, 3.5 , 6 ], anchor = [-1, -1, -1], rounding = 5, edges = TOP + LEFT ); } translate([ x + 1.5, y + 0.6, 6 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( name, size = 4, font = "Arial:style=Bold", halign="center", valign="center" ); }