eps = 0.01; infty = 200; wall = 1.5; thin_wall = 1.0; fuse_tube_d = 8.0 + 0.5; clip_w = 6; slot_w = 3; servo_l = 23.0; servo_w = 12.5; beam_w = fuse_tube_d/2 + wall; cable_w = 2.0; cable_l = 5.0; difference() { union() { // servo frame translate([-wall, -servo_l/2-clip_w, 0]) cube([servo_w + 2*wall, servo_l + 2*clip_w, wall]); // main beam translate([-beam_w, -servo_l/2-clip_w, 0]) cube([beam_w, servo_l + 2*clip_w, beam_w]); // clips for (y = [-1, 1]) scale([1, y, 1]) translate([-fuse_tube_d - 2*wall, servo_l/2, 0]) cube([fuse_tube_d + 2*wall, clip_w, fuse_tube_d + 2*wall]); } // hole for servo translate([0, -servo_l/2, -eps]) cube([servo_w, servo_l, wall + 2*eps]); // fuse tube translate([-fuse_tube_d/2-wall, servo_l/2+clip_w+eps, fuse_tube_d/2+wall]) rotate([90, 0, 0]) cylinder(r = fuse_tube_d/2, h = servo_l +2*clip_w + 2*eps); // fuse tube slot translate([-fuse_tube_d/2-wall-slot_w/2, -servo_l/2-clip_w-eps, fuse_tube_d/2+wall]) cube([slot_w, servo_l + 2*clip_w + 2*eps, fuse_tube_d/2+wall+eps]); // cable hole for (y = [-1, 1]) scale ([1, y, 1]) translate([servo_w/2-cable_l/2, servo_l/2-eps, -eps]) cube([cable_l, cable_w + eps, wall + 2*eps]); }