Bafang BBS02: Terry Cable Stop Cap

The Terry Symmetry had shift cables running along the down tube, with cable housing stop bushings at the top:

Terry Bafang - OEM shift stop
Terry Bafang – OEM shift stop

Without the front derailleur and with the wiring harness cable on the left side, a tidy cap seemed in order:

Terry Bafang - shift stop cap
Terry Bafang – shift stop cap

The oversize passage give the cable a little flex room, although that’s probably unnecessary. I reused the original M5 screw, with a washer to spread the load.

The solid model is basically a hull around some cylinders:

Terry - Bafang shift cap - solid model
Terry – Bafang shift cap – solid model

The interior matches the stud brazed onto the downtube:

Terry - Bafang shift cap - interior - solid model
Terry – Bafang shift cap – interior – solid model

The only practical way to build the thing required a brim stabilizing it on the platform:

Terry - Bafang shift cap - slice preview
Terry – Bafang shift cap – slice preview

My usual 0.25 mm layers came out a bit crude on the vast overhang, but 0.15 mm layers worked fine.

The OpenSCAD source code snippet:

CapBlock = [18,18,16.5];

module ShiftCap() {

Rounding = 3.5;
CapM = 3.0;
StudBase = [12.5,12.5,4.5];
Stud = [5.0,9.3,15.5];

    difference() {
        hull() {
            translate([0,0,CapBlock.z - 0.5])
                PolyCyl(Washer5[OD],0.5,12);
            for (i=[-1,1], j=[-1,1])
                translate([i*(CapBlock.x/2 - Rounding),j*(CapBlock.y/2 - Rounding),0])
                    sphere(r=Rounding,$fn=12);
            translate([-CapBlock.x/2,-Harness[ID]/2 - StudBase.y/2,StudBase.z/2])
                rotate([0,90,0])
                    cylinder(d=Harness[ID] + 2*WallThick,h=CapBlock.x,$fn=12);
        }

        translate([0,0,-(FrameTube.z/2 - CapM)])
            Frame();

        PolyCyl(Screw5[ID],2*CapBlock.z,6);

        PolyCyl(Stud[OD],Stud[LENGTH],12);

        translate([0,0,StudBase.z/2])
            cube(StudBase,center=true);

        translate([0,-StudBase.y/2,StudBase.z/2])
            cube(StudBase + [0,-StudBase.y/2,0],center=true);

       translate([-CapBlock.x,-Harness[ID]/2 - StudBase.y/2,StudBase.z/2])
            rotate([0,90,0])
                cylinder(d=1.5*Harness[ID],h=2*CapBlock.x,$fn=12);

    }
}

Of course, I needed three tries to get the correct dimensions, but that’s what rapid prototyping is all about.