eps = 0.01; infty = 200; wall = 1.0; tube_d = 8.0 + 0.5; clip_w = 6; slot_w = 3; support_l = 12; servo_w = 12.5; cable_w = 5; cable_zoff = 2; module clip(support_zoff) { difference() { hull() { // clip cylinder cylinder(r = tube_d/2 + wall, h = clip_w); // under the servo translate([-servo_w/2-wall, tube_d/2+support_zoff, 0]) cube([servo_w+2*wall, support_l + wall, clip_w]); } // fuse tube translate([0, 0, -eps]) cylinder(r = tube_d/2, h = clip_w + 2*eps); // slot translate([-slot_w/2, -tube_d,, -eps]) cube([slot_w, tube_d, clip_w + 2*eps]); // servo translate([-servo_w/2, tube_d/2+support_zoff+wall, wall]) cube([servo_w, support_l + eps, clip_w]); // cable hole translate([-cable_w/2, tube_d/2+support_zoff+cable_zoff+wall, -eps]) cube([cable_w, support_l + eps, clip_w]); } } for (x = [-1, 1]) scale([x, 1, 1]) translate([servo_w, tube_d, 0]) clip(support_zoff = 0); for (x = [-1, 1]) scale([x, -1, 1]) translate([servo_w, tube_d, 0]) clip(support_zoff = 3);