$fn = 72; case_width_top = 317.5000; case_width_bottom = 320.0000; case_length_top = 150.0000; case_length_bottom = 151.5000; wall_width = 2.5000; wall_height = 17.2500; accent_width = 1.0000; accent_height = 0.5; accent_y_stride = 19.0500; accent_y_bottom = 12.0000; key_switch_width = 19.0500; key_switch_length = 19.0500; keyboard_width = key_switch_width * 13.5; keyboard_length = key_switch_length * 5.0; keyboard_x_offset = 12.2500; keyboard_y_offset = 12.2500; fin_width = 2.0000; fin_gap_width = 2.0000; fin_gap_length = 2.0000; fin_gap_height = 12.0000; fin_gap_count = 33; fin_gap_x_first = keyboard_x_offset + keyboard_width - fin_gap_count * (fin_width + fin_gap_width); fin_gap_y_offset = case_length_bottom - fin_gap_length; module fascia_main() { difference() { square([case_width_bottom, case_length_bottom], false); translate([keyboard_x_offset, keyboard_y_offset, 0]) square([keyboard_width, keyboard_length], false); } } module fascia_top() { linear_extrude(accent_height) difference() { fascia_main(); for (y = [accent_y_bottom: accent_y_stride: case_width_bottom]) { translate([0, y, 0]) square([case_width_bottom, accent_width], false); } } } module fascia() { translate([0, 0, wall_width - accent_height]) fascia_top(); linear_extrude(wall_width - accent_height) fascia_main(); } module fin_gaps() { for (i = [0:fin_gap_count]) { x = fin_gap_x_first + (i * (fin_width + fin_gap_width)); translate([x, fin_gap_y_offset, 0]) square([fin_gap_width, fin_gap_length], false); } } fascia();