// all parameters in mm WALL_THICKNESS = 2; LENGTH = 80; WIDTH = 50; HEIGHT = 30; TOLERANCE = 0.2; SCREW_DIA = 2 + TOLERANCE; SCREW_DIA_B = 4 + TOLERANCE; SCREW_HEAD_HEIGHT = 1.3; SCREW_MARGIN = 2.5; MOUNT_HOLE_HEIGHT = 5; MOUNT_HOLE_DIA = 3.2 + TOLERANCE; $fn=35; difference() { cube([LENGTH, WIDTH, HEIGHT]); translate([WALL_THICKNESS, WALL_THICKNESS, WALL_THICKNESS]) cube([LENGTH-2*WALL_THICKNESS, WIDTH-2*WALL_THICKNESS, HEIGHT]); } translate([0, -WIDTH-5, 0]) { difference() { d = WALL_THICKNESS + SCREW_DIA; cube([LENGTH, WIDTH, WALL_THICKNESS]); translate([ d, d, 0]) CutOut(); translate([LENGTH-d, d, 0]) CutOut(); translate([ d, WIDTH-d, 0]) CutOut(); translate([LENGTH-d, WIDTH-d, 0]) CutOut(); } } module CutOut() { translate([0, 0, -WALL_THICKNESS/2]) cylinder(d=SCREW_DIA, h=2*WALL_THICKNESS); translate([0, 0, WALL_THICKNESS-SCREW_HEAD_HEIGHT+0.01]) cylinder(d1=SCREW_DIA, d2=SCREW_DIA_B, h=SCREW_HEAD_HEIGHT); } d = WALL_THICKNESS + SCREW_DIA; translate([ d, d, 0]) Mount(); translate([LENGTH-d, d, 0]) Mount(); translate([ d, WIDTH-d, 0]) Mount(); translate([LENGTH-d, WIDTH-d, 0]) Mount(); module Mount() { difference() { cylinder(d=SCREW_DIA+2*SCREW_MARGIN, h=HEIGHT); translate([0, 0, HEIGHT-MOUNT_HOLE_HEIGHT+0.01]) cylinder(d=MOUNT_HOLE_DIA, h=MOUNT_HOLE_HEIGHT); } }