$fn=180; // ACE Screen Dimensions screen_width=120.25; screen_height=81; screen_depth=10; screen_radius=5; // Est. - need to actually measure left_long_edge=62; left_short_edge=40; // Screen Cover Frame Dimensions frame_thickness=1; frame_width=screen_width+(frame_thickness*2); frame_height=screen_height+(frame_thickness*2); frame_depth=screen_depth+frame_thickness; // Screen Cover Object Dimensions cover_width=frame_width-(frame_thickness*10); cover_height=frame_height-(frame_thickness*10); cover_depth=frame_thickness; // Screen Cover Frame Object module screen_cover_frame() { cube([frame_width, frame_height, frame_depth], center=true); } // Screen Cover Frame Cutout Object module screen_cover_frame_cutout() { coords=[ [0,0], [0,(frame_height-left_long_edge)], [frame_depth,(frame_height-left_short_edge)], [frame_depth,0] ]; translate([0, -(frame_height-left_short_edge)/2, (frame_depth/2)]) rotate([0,90,0]) linear_extrude(height = frame_thickness, center = true) polygon(points=coords); } // Screen Cover Object module screen_cover() { cube([cover_width, cover_height, cover_depth], center=true); } // ACE Screen Object module ace_screen() { cube([screen_width, screen_height, screen_depth], center=true); } difference(){ screen_cover_frame(); translate([0, 0, (frame_depth-frame_thickness)/2]) screen_cover(); translate([-((frame_width-frame_thickness)/2), -(frame_height-(frame_height-left_short_edge))/2, 0]) screen_cover_frame_cutout(); translate([0, 0, -(frame_thickness/2)]) ace_screen(); }