include module luniebox_front_panel() { grill_width=2; difference() { union() { cube([length+depth,height+depth,depth]); } // speaker hole middle translate([length/2,height/2,-depth / 2]) cylinder(d=103,h=depth*2); } for ( i = [grill_width*2 : grill_width*2 : 51.5] ) { translate([length/2,height/2,depth/2]) difference () { cylinder (h = depth, r=i+grill_width/2, center = true); cylinder (h = depth*2, r=i-grill_width/2, center = true); } } translate([length/2,height/2,0]) rotate([0,0,-45]) translate([-grill_width/2,grill_width*1.5,0]) cube([grill_width,51.5,depth]); translate([length/2,height/2,0]) rotate([0,0,45]) translate([-grill_width/2,grill_width*1.5,0]) cube([grill_width,51.5,depth]); translate([length/2,height/2,0]) rotate([0,0,-135]) translate([-grill_width/2,grill_width*1.5,0]) cube([grill_width,51.5,depth]); translate([length/2,height/2,0]) rotate([0,0,135]) translate([-grill_width/2,grill_width*1.5,0]) cube([grill_width,51.5,depth]); // screws front translate([5,5+depth,depth]) screw(h=front_offset-depth); translate([5,width-5+depth,depth]) screw(h=front_offset-depth); translate([length-5,5+depth,depth]) screw(h=front_offset-depth); translate([length-5,width-5+depth,depth]) screw(h=front_offset-depth); } luniebox_front_panel();