-module screw_hole() {
- translate([0, 0, -eps])
- cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn = 6);
- translate([0, 0, base_wall/2])
- cylinder(r1 = screw_hole/2,
- r2 = screw_hole/2 + base_wall/2,
- h = base_wall/2+eps, $fn = 6);
- translate([0, 0, base_wall-eps])
- cylinder(r = screw_hole/2 + base_wall/2, h = 2*base_wall + eps, $fn = 6);
+module body_diff() {
+ difference() {
+ body_solid();
+ // center hole
+ translate([0, 0, -eps])
+ cylinder(r = center_hole/2, h = base_wall + 2*eps);
+ // horizontal foam
+ difference() {
+ translate([-infty/2, -foam_horiz/2, base_wall])
+ cube([infty, foam_horiz, infty]);
+ // in the center there is only bottom half of the foam
+ translate([-fuse_w/2, 0, base_wall-eps])
+ cube([fuse_w, foam_horiz/2, infty]);
+ }
+ // screw holes
+ for (angle = [0:90:360])
+ rotate([0, 0, angle])
+ translate([screw_dist/2, 0, -eps])
+ cylinder(r = screw_d/2, h = base_wall + 2*eps);
+ // fuse clips inside
+ hull() for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1]) {
+ translate([fuse_w/2 - wall/sin(atan(fuse_h/fuse_w)), 0, base_wall])
+ cylinder(r = eps, h = base_wall + fuse_top, $fn = 4);
+ translate([0, fuse_h/2 - wall/sin(atan(fuse_w/fuse_h)), base_wall])
+ cylinder(r = eps, h = base_wall + fuse_top, $fn = 4);
+ }
+ }