thickness = 2; width = 150; height = 100; depth = 45; hole_distance = 5; extrusion_depth = 5; hole_radius = 1; // Create grid of pins to cut holes later module holeGrid(width, height, holeradius, holedistance){ numx = round(width/holedistance) - 2; numy = round(height/holedistance) - 2; for(x = [0:numx]){ for(y = [0:numy]){ if(x == 0 || y == 0 || x == numx || y == numy){ linear_extrude(extrusion_depth) translate([x*holedistance, y*holedistance]) circle(holeradius, $fn=10); } } } } // Create hollow box difference(){ cube([width, depth, height]); translate([thickness, thickness, -thickness]){ cube([width-2*thickness,depth-2*thickness, height+1]); } translate([hole_distance,hole_distance,-extrusion_depth/2+height]){ holeGrid(width,depth,hole_radius,hole_distance); } rotate(90,[1,0,0]){ translate([hole_distance,hole_distance,-extrusion_depth/2]){ holeGrid(width,height,hole_radius,hole_distance); } } rotate(90,[1,0,0]){ translate([hole_distance,hole_distance,-extrusion_depth/2-depth]){ holeGrid(width,height,hole_radius,hole_distance); } } rotate(90,[0,0,1]){ rotate(90,[1,0,0]){ translate([hole_distance,hole_distance,-extrusion_depth/2]){ holeGrid(depth,height,hole_radius,hole_distance); } } } rotate(90,[0,0,1]){ rotate(90,[1,0,0]){ translate([hole_distance,hole_distance,-extrusion_depth/2+width]){ holeGrid(depth,height,hole_radius,hole_distance); } } } } // holeGrid(width,height,hole_radius,hole_distance);