$fn = 200; plate_width = 70; plate_depth = 140; plate_height = 2; mounting_hole_diameter = 5; mounting_hole_outer_offset = 5.5; mounting_hole_true_offset = mounting_hole_outer_offset + (mounting_hole_diameter/2); power_switch_hole_width = 13.5; power_switch_hole_depth = 19.9; oem_pcb_mount_post_diameter = 5; oem_pcb_upper_mount_x_outer_dimension = 13; oem_pcb_upper_mount_y_outer_dimension = 22.5; oem_pcb_upper_mount_center_x = plate_width - oem_pcb_upper_mount_x_outer_dimension + (oem_pcb_mount_post_diameter/2); oem_pcb_upper_mount_center_y = oem_pcb_upper_mount_y_outer_dimension - (oem_pcb_mount_post_diameter/2); oem_pcb_lower_mount_x_outer_dimension = 36.25; oem_pcb_lower_mount_y_outer_dimension = 26; oem_pcb_lower_mount_center_x = plate_width - oem_pcb_lower_mount_x_outer_dimension + (oem_pcb_mount_post_diameter/2); oem_pcb_lower_mount_center_y = plate_depth - oem_pcb_lower_mount_y_outer_dimension + (oem_pcb_mount_post_diameter/2); oem_pcb_mount_post_height = 60; oem_pcb_mount_new_post_diameter = 6; function in(inches) = inches * 25.4; oled_width = 33; oled_depth = 18; feather_mount_screw_hole_diameter = 2.2; feather_width = 51; feather_depth = 23; featherWidth = in(2); featherDepth = in(0.9); feather_position_x = plate_width/2 - featherWidth/2; feather_position_y = 30; module featherPosts(height=4) { hole_center_offset = in(0.1); mount_post_diameter = feather_mount_screw_hole_diameter+2; translate([hole_center_offset, hole_center_offset, 0]) { cylinder(h = height, d = mount_post_diameter); } translate([featherWidth - hole_center_offset, hole_center_offset, 0]) { cylinder(h = height, d = mount_post_diameter); } translate([featherWidth - hole_center_offset, featherDepth - hole_center_offset, 0]) { cylinder(h = height, d = mount_post_diameter); } translate([hole_center_offset, featherDepth - hole_center_offset, 0]) { cylinder(h = height, d = mount_post_diameter); } } module featherHoles(height=4) { hole_center_offset = in(0.1); mount_post_diameter = feather_mount_screw_hole_diameter+2; translate([hole_center_offset, hole_center_offset, 0]) { cylinder(h = height, d = feather_mount_screw_hole_diameter); } translate([featherWidth - hole_center_offset, hole_center_offset, 0]) { cylinder(h = height, d = feather_mount_screw_hole_diameter); } translate([featherWidth - hole_center_offset, featherDepth - hole_center_offset, 0]) { cylinder(h = height, d = feather_mount_screw_hole_diameter); } translate([hole_center_offset, featherDepth - hole_center_offset, 0]) { cylinder(h = height, d = feather_mount_screw_hole_diameter); } } difference() { union(){ cube([plate_width, plate_depth, plate_height]); translate([feather_position_x, feather_position_y, 0]){ featherPosts(5); } } translate([plate_width/2, mounting_hole_true_offset, -0.05]) { cylinder(h= plate_height + 0.1, d = mounting_hole_diameter); translate([0, plate_depth - (mounting_hole_true_offset * 2), 0]) { cylinder(h= plate_height + 0.1, d = mounting_hole_diameter); } } translate([feather_position_x, feather_position_y, -0.05]) { featherHoles(5.1); translate([10,featherDepth/2-oled_depth/2,0]) { cube([oled_width, oled_depth, plate_height + 0.1]); } } translate([plate_width/2 - power_switch_hole_depth/2, plate_depth - 50, -0.05]) { cube([power_switch_hole_depth, power_switch_hole_width, plate_height + 0.1]); } } translate([oem_pcb_upper_mount_center_x, oem_pcb_upper_mount_center_y, 0]) { cylinder(h = oem_pcb_mount_post_height, d = oem_pcb_mount_new_post_diameter); } translate([oem_pcb_lower_mount_center_x, oem_pcb_lower_mount_center_y, 0]) { cylinder(h = oem_pcb_mount_post_height, d = oem_pcb_mount_new_post_diameter); }