4 body_w = 32; // outer parameter, incl. foam
21 translate([-body_w/2, -body_h/2, 0])
22 cube([body_w, body_h, base_wall]);
24 translate([0, 0, -eps])
25 cylinder(r = center_hole_d/2, h = base_wall + 2*eps);
26 // screw_d2 screw holes
27 for (y = [-1, 1]) scale([1, y, 1])
28 translate([0, screw_d2/2, -eps]) {
29 cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn=6);
30 translate([0, 0, base_wall/2])
31 cylinder(r1 = screw_hole/2,
32 r2 = screw_hole/2 + base_wall/2,
33 h = base_wall/2 + 2*eps, $fn = 6);
35 // screw_d1 screw holes
36 for (x = [-1, 1]) scale([x, 1, 1])
37 translate([screw_d1/2, 0, -eps]) {
38 cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn=6);
39 translate([0, 0, base_wall/2])
40 cylinder(r1 = screw_hole/2,
41 r2 = screw_hole/2 + base_wall/2,
42 h = base_wall/2 + 2*eps, $fn = 6);
45 translate([-body_w/2+foam_w+wall, -body_h/2+foam_w+wall, -eps])
46 cube([8, 6, base_wall + 2*eps]);
49 motor_angle_right = 3;
53 angle_r = base_angle + motor_angle_right;
54 angle_l = base_angle - motor_angle_right;
55 angle_t = base_angle - motor_angle_down;
56 angle_d = base_angle + motor_angle_down;
58 // +x axis is to the right
59 // +y axis is to the top
60 module cone(l, r, t, d, h) {
64 rotate([-angle_t, 0, 0]) translate([-infty/2, -infty, -infty/2]) cube(infty);
67 rotate([angle_d, 0, 0]) translate([-infty/2, 0, -infty/2]) cube(infty);
70 rotate([0, angle_r, 0]) translate([-infty, -infty/2, -infty/2]) cube(infty);
73 rotate([0, -angle_l, 0]) translate([0, -infty/2, -infty/2]) cube(infty);
75 translate([-infty/2, -infty/2, 0]) cube(infty);
77 translate([-infty/2, -infty/2, h-infty]) cube(infty);
87 translate([0, 0, -eps])
88 cone(body_w/2 - foam_w - wall/cos(angle_l),
89 body_w/2 - foam_w - wall/cos(angle_r),
90 body_h/2 - foam_w - wall/cos(angle_t),
91 body_h/2 - foam_w - wall/cos(angle_d),