eps = 0.01; infty = 200; wall = 1.5; tube_d = 8.0 + 0.5; clip_w = 6; slot_w = 3; slot_angle = 180+45; support_l = tube_d/2 + 10; module clip(support_zoff) { difference() { union() { // clip cylinder cylinder(r = tube_d/2 + wall, h = clip_w); // under the servo hull() { translate([0, tube_d/2+support_zoff - wall, 0]) cube([tube_d/2+wall, wall, clip_w]); translate([support_l-wall, tube_d/2+support_zoff - wall, 0]) cube([wall, wall, clip_w/2]); } // vertical strut hull() { translate([support_l - eps, tube_d/2+support_zoff-wall, 0]) cube([eps, wall, wall]); translate([0, -tube_d/2-wall/2, 0]) cube([eps, tube_d+wall/2+support_zoff, wall]); } } // fuse tube translate([0, 0, -eps]) cylinder(r = tube_d/2, h = clip_w + 2*eps); // slot rotate([0, 0, slot_angle]) translate([0, -slot_w/2, -eps]) cube([tube_d, slot_w, clip_w + 2*eps]); } } // clip(support_zoff = -2); for (x = [-1, 1]) scale([x, 1, 1]) translate([tube_d, tube_d, 0]) clip(support_zoff = wall); for (x = [-1, 1]) scale([x, -1, 1]) translate([tube_d, tube_d, 0]) clip(support_zoff = wall-3);