--- /dev/null
+eps = 0.01;
+infty = 200;
+
+wall = 1.0;
+
+tube_d = 8.0 + 0.5;
+
+clip_w = 4;
+
+slot_w = 3;
+slot_angle = 180+45;
+
+fiber_hole = 2;
+
+support_l = tube_d/2 + 10;
+
+difference() {
+ union() {
+ // clip cylinder
+ cylinder(r = tube_d/2 + wall, h = clip_w);
+ // fiber x-dir
+ hull() {
+ cylinder(r = fiber_hole/2+wall, h = clip_w);
+ translate([tube_d/2+fiber_hole/2, 0, 0])
+ cylinder(r = fiber_hole/2+wall, h = clip_w, $fn = 16);
+ }
+ // fiber y-dir
+ hull() {
+ cylinder(r = fiber_hole/2+wall, h = clip_w);
+ translate([0, tube_d/2+fiber_hole/2, 0])
+ cylinder(r = fiber_hole/2+wall, h = clip_w, $fn = 16);
+ }
+ }
+
+ // 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]);
+ // fiber hole x-dir
+ translate([0, -wall/2, -eps])
+ cube([tube_d/2+fiber_hole/2, wall, clip_w+2*eps]);
+ translate([tube_d/2+fiber_hole/2, 0, -eps])
+ cylinder(r = fiber_hole/2, h = clip_w+2*eps, $fn = 16);
+ // fiber hole y-dir
+ translate([-wall/2, 0, -eps])
+ cube([wall, tube_d/2+fiber_hole/2, clip_w+2*eps]);
+ translate([0, tube_d/2+fiber_hole/2, -eps])
+ cylinder(r = fiber_hole/2, h = clip_w+2*eps, $fn = 16);
+}