-
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 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 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 The interior matches the stud brazed onto the downtube:

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 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.