+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);