+eps = 0.01;
+infty = 200;
+
+wall = 1.5;
+thin_wall = 0.6;
+
+stab_tube_d = 3.0 + 0.5;
+stab_tube_l = 25;
+
+stab_tube_off = 3;
+pulley_d = 10;
+
+fuse_tube_d = 8.0;
+fuse_tube_l = 12;
+
+slot_w = 3;
+
+base_d = 15;
+base_h = 0.6;
+
+module body() {
+ // fuse tube
+ cylinder(r = fuse_tube_d/2 + wall, h = fuse_tube_l);
+
+ // stab tube
+ hull() {
+ translate([fuse_tube_d/2 + wall + stab_tube_off, 0, stab_tube_d/2+wall])
+ rotate([0, 90, 0])
+ cylinder(r = stab_tube_d/2+wall, h = stab_tube_l);
+ translate([fuse_tube_d/2 + wall + stab_tube_off, -stab_tube_d/2, 0])
+ cube([stab_tube_l, stab_tube_d, eps]);
+ }
+ // joiner
+ hull() {
+ // stab tube tip
+ translate([fuse_tube_d/2 + wall + stab_tube_off + stab_tube_l - eps,
+ -thin_wall/2, stab_tube_d + 1.5*wall])
+ cube([eps, thin_wall, eps]);
+ // fuse tube tip
+ translate([fuse_tube_d/2 + wall/2, -thin_wall/2, fuse_tube_l - eps])
+ cube([eps, thin_wall, eps]);
+ translate([fuse_tube_d/2 + wall/2, -3*wall/2, stab_tube_d+1.5*wall])
+ cube([eps, 3*wall, eps]);
+ }
+}
+
+difference() {
+ body();
+ // fuse tube
+ translate([0, 0, -eps])
+ cylinder(r = fuse_tube_d/2, h = fuse_tube_l + 2*eps);
+ // fuse slot
+ translate([-fuse_tube_d, -slot_w/2, -eps])
+ cube([fuse_tube_d, slot_w, fuse_tube_l + 2*eps]);
+ // stab tube
+ translate([0, 0, stab_tube_d/2+wall])
+ rotate([0, 90, 0])
+ cylinder(r = stab_tube_d/2, h = stab_tube_l + stab_tube_off + fuse_tube_d/2 + wall + eps );
+}
+