box_length=230; box_width=155; box_height=34.25; xboxes=5; yboxes=2; wall_thickness=3; lid_thickness=2; module pocket(x=0,y=0){ pocket_length=((box_length-((xboxes+1)*wall_thickness))/xboxes); //echo("pocket_length:",pocket_length); pocket_width=((box_width-((yboxes+1)*wall_thickness))/yboxes); //echo("pocket_width:",pocket_width); pocket_height=(box_height-wall_thickness-lid_thickness); //echo("pocket_height:",pocket_height); translate([(wall_thickness+(x*(pocket_length+wall_thickness))),(wall_thickness+(y*(pocket_width+wall_thickness))),wall_thickness]) cube([pocket_length,pocket_width,pocket_height]); } module lid(){ translate([wall_thickness,wall_thickness,(box_height-wall_thickness)]) cube([(box_length-wall_thickness),(box_width-(2*wall_thickness)),wall_thickness],false); translate([(wall_thickness/2),(wall_thickness/2),(box_height-lid_thickness-wall_thickness)]) cube([(box_length-(wall_thickness/2)),(box_width-wall_thickness),wall_thickness],false); } module stacking_phase() { difference() { cube([box_length,box_width,(wall_thickness/2)],false); translate([(wall_thickness+1),(wall_thickness+1),0]) cube([(box_length-(wall_thickness/2)-1),(box_width-(2*wall_thickness)-2),(wall_thickness/2)],false); } } difference() { color("grey") cube([box_length,box_width,box_height],false); union(){ color("red") lid(); color("orange") stacking_phase(); for(x = [0:xboxes]) for(y = [0:yboxes]) pocket(x,y); } }