include module side() { // frame difference() { cube([tray_length, num_hdd_y * tray_height, 10], center=true); side_inner(); } // support intersection() { side_inner(); union() { for (i = [-1:1]) for (j = [-2:2]) translate([0, j*50, 0]) rotate(i*30) line(); } } // TODO: joins } module line() cube([300, 0.8, 10], center=true); module side_inner() cube([tray_length - 10, num_hdd_y * tray_height - 10, 10], center=true); side();