Wednesday, September 21, 2016

3D printed cable guide for X-Peria tandem fork

In my original entry about the X-Peria tandem, I noted that the fork did not have an obvious method for routing the cable to the disc brake, but that there was a screw hole on the inside of the left fork blade. My solution was a 3D-printed bracket designed to attach to the screw hole and reach around behind the fork blade where the cable would pass through it.

I used OpenSCAD, a free CAD software to create the design. This is an OpenSCAD rendering:

Note that the hole for the screw mount has a flared shape to accommodate an angle-head screw, so as to minimize the amount the screw protrudes into the space inside the fork. The OpenSCAD source code for this design is below:

guidelength = 20;
width = 15;
cablesize = 5;
thickness = 1.5;
screwhole = 5;
len1 = 5;
len2 = 5;
th2 = 2.5;
angle = 70;
bendradius = 10;


r2 = screwhole/2+4;
cr = cablesize/2;
ofs = width/2-r2;
d = (guidelength-width)/2;

rotate(angle) {
difference () {
    union () {
        // cable guide outer
        translate([0, 0, -d]) cylinder(guidelength, r=cr+thickness);

        // connector section 1
        translate([0, -th2/2, 0]) cube([len1, th2, width]);

        // connector bend
        translate([len1, -th2/2-bendradius, 0]) rotate([0, 0, 90])
        rotate_extrude(angle=-angle) {
            translate([bendradius, 0, 0]) square([th2, width]);

    // cable guide hole
    translate([0, 0, -d-0.01]) cylinder(guidelength+0.02, r=cr);

// connector section 2
translate([len1, -bendradius-th2/2, 0]) rotate([0, 0, -angle])
translate([len2, bendradius+th2/2, width/2]) rotate([90, 0, 0])
translate([0, 0, -th2/2])
    difference() {
        hull() {
            cylinder(th2, r=r2);
            translate([-len2/2, -ofs, 0]) cylinder(th2, r=r2);
            translate([-len2/2, ofs, 0]) cylinder(th2, r=r2);
            translate([-len2-1, -width/2, 0]) cube([1, width, th2]);
        translate([-len2-r2, -width/2-0.05, -0.05]) cube([r2, width+0.1, th2+0.1]);

        // Screw hole
        translate([0, 0, -0.05]) cylinder(th2+0.1, r=screwhole/2);

        // flared hold for angle head screw
        translate([0, 0, -1]) cylinder(screwhole/2, screwhole, screwhole/2);

The part was printed in white ABS plastic by Shapeways. I have produced other parts using Shapeways before and have found the results to be very high quality. A couple of weeks after placing my order, the cable guide arrived.

The hole for the cable was actually just a little too tight for the cable to fit, so I widened it slightly with a drill. This is actually the second version of the design, the result of some changes I made to my first design after I had a chance to test it on the bike. Here is the final product, installed on the bike.

No comments:

Post a Comment