eps = 0.01; infty = 100; body_w = 32; // outer parameter, incl. foam body_h = 32; foam_w = 3; screw_d1 = 19; screw_d2 = 16; screw_hole = 3.5; base_wall = 1.5; center_hole_d = 9; insert_h = 10; wall = 1; // base plate difference() { translate([-body_w/2, -body_h/2, 0]) cube([body_w, body_h, base_wall]); // center hole translate([0, 0, -eps]) cylinder(r = center_hole_d/2, h = base_wall + 2*eps); // screw_d2 screw holes for (y = [-1, 1]) scale([1, y, 1]) translate([0, screw_d2/2, -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 + 2*eps, $fn = 6); } // screw_d1 screw holes for (x = [-1, 1]) scale([x, 1, 1]) translate([screw_d1/2, 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 + 2*eps, $fn = 6); } // cable hole translate([-body_w/2+foam_w+wall, -body_h/2+foam_w+wall, -eps]) cube([8, 6, base_wall + 2*eps]); } motor_angle_right = 3; motor_angle_down = 3; base_angle = 10; angle_r = base_angle + motor_angle_right; angle_l = base_angle - motor_angle_right; angle_t = base_angle - motor_angle_down; angle_d = base_angle + motor_angle_down; // +x axis is to the right // +y axis is to the top module cone(l, r, t, d, h) { intersection() { // top translate([0, t, 0]) rotate([-angle_t, 0, 0]) translate([-infty/2, -infty, -infty/2]) cube(infty); // bottom translate([0, -d, 0]) rotate([angle_d, 0, 0]) translate([-infty/2, 0, -infty/2]) cube(infty); // right translate([r, 0, 0]) rotate([0, angle_r, 0]) translate([-infty, -infty/2, -infty/2]) cube(infty); // left translate([-l, 0, 0]) rotate([0, -angle_l, 0]) translate([0, -infty/2, -infty/2]) cube(infty); // front translate([-infty/2, -infty/2, 0]) cube(infty); // rear translate([-infty/2, -infty/2, h-infty]) cube(infty); } } difference() { cone(body_w/2-foam_w, body_w/2-foam_w, body_h/2-foam_w, body_h/2-foam_w, insert_h); translate([0, 0, -eps]) cone(body_w/2 - foam_w - wall/cos(angle_l), body_w/2 - foam_w - wall/cos(angle_r), body_h/2 - foam_w - wall/cos(angle_t), body_h/2 - foam_w - wall/cos(angle_d), insert_h + 2*eps); }