$fn = 8; inL = 83.00; inW = 51.50; inH = 23.00; wallW = 2.00; holeW = 14.00; holeH = 10.75; holeY = 11.75; holeX = 4.00; screwHoleBig = 9.00; screwHoleSmall = 5.00; trackGrooveExtraH = 0.25; module ventHole() { rotate(a=90, v=[1, 0, 0]) { cylinder(r=2, h=wallW+2); } } module ventHoles() { for(z=[0:2]) { xTo = 5+(z%2); for(x=[0:xTo]) { translate([((z%2)*-1*3)+wallW+5+(6*x), wallW+1, wallW+4+(7*z)]) { ventHole(); } } } } module screwHole() { cylinder($fn=40, d=screwHoleBig, h=wallW+2); translate([(screwHoleSmall*1.2)*-1, 0, 0]) { cylinder($fn=40, d=screwHoleSmall, h=wallW+2); } translate([(screwHoleBig*-1)+(screwHoleSmall/1.67), ((screwHoleBig/2)*-1)+((screwHoleBig-screwHoleSmall)/2), 0]) { cube([screwHoleSmall, screwHoleSmall, wallW+2]); } } difference() { difference() { cube([inL+(wallW*2), inW+(wallW*2), inH+(wallW*2)]); translate([wallW, wallW, wallW]) { cube([inL, inW, inH]); } } // Charge Hole translate([(inL+wallW)-1, (wallW+inW)-(holeX+holeW), wallW+holeY]) { cube([wallW+2, holeW, holeH]); } // Open top translate([wallW, wallW, (wallW+inH)-1]) { cube([inL, inW, wallW+2]); } translate([-1, wallW, wallW+inH]) { cube([wallW+2, inW, wallW+1]); } // Track Groove translate([-1, wallW-(wallW/2), (wallW+inH)-trackGrooveExtraH]) { cube([inL+wallW+1+(wallW/2), wallW+inW, trackGrooveExtraH+wallW-1]); } translate([3, 0, 0]) { ventHoles(); } translate([3, inW+wallW, 0]) { ventHoles(); } translate([wallW, 5, 0]) { rotate(a=90, v=[0, 0, 1]) { ventHoles(); } } translate([20, wallW+(inW-(inW/4)), -1]) { screwHole(); } translate([20, wallW+(inW/4), -1]) { screwHole(); } }