Faced with a need to send documents rolled up in a tube, rather than folded flat, I sawed off a suitable length of cardboard tube from the heap, then discovered a distinct lack of end caps.
Well, once again, it’s 3D printing to the rescue:
The small ribs probably don’t actually do anything, but seemed like a nice touch.
They’re somewhat less boring from the bottom:
The fancy spider supports that big flat top and provides some crush resistance. The flat flange should collect the edge of the packing tape wrapped around the ends.
A firm shove installs them, so the size worked out perfectly:
Add a wrap of tape to each end, affix the USPS label, and they went out with the next day’s mail, PETG hair and all.
The OpenSCAD source code as a GitHub Gist:
| // Mailing tube end cap | |
| // Ed Nisley KE4ZNU – June 2017 | |
| Layout = "Build"; | |
| //- Extrusion parameters – must match reality! | |
| ThreadThick = 0.25; | |
| ThreadWidth = 0.40; | |
| function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
| Protrusion = 0.1; | |
| HoleWindage = 0.2; | |
| //- Screw sizes | |
| inch = 25.4; | |
| TubeID = 2 * inch; | |
| TubeWall = 0.1 * inch; | |
| CapInsert = 15.0; | |
| CapRim = 1.0; | |
| CapWall = 3*ThreadWidth; | |
| NumFlanges = 3; | |
| FlangeHeight = 3*ThreadThick; | |
| FlangeWidth = ThreadWidth/2; | |
| FlangeSpace = CapInsert / (NumFlanges + 1); | |
| OAHeight = CapInsert + CapRim; | |
| NumRibs = 3*4; | |
| NumSides = 3*NumRibs; | |
| //- Adjust hole diameter to make the size come out right | |
| module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes | |
| Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); | |
| FixDia = Dia / cos(180/Sides); | |
| cylinder(r=(FixDia + HoleWindage)/2,h=Height,$fn=Sides); | |
| } | |
| module TubeCap() { | |
| difference() { | |
| cylinder(d=TubeID,h=OAHeight,$fn=NumSides); | |
| translate([0,0,CapWall]) | |
| cylinder(d=TubeID – 2*CapWall,h=OAHeight,$fn=NumSides); | |
| } | |
| for (i=[1:NumFlanges]) | |
| translate([0,0,i*FlangeSpace]) | |
| difference() { | |
| cylinder(d=TubeID + 2*FlangeWidth,h=FlangeHeight,$fn=NumSides); | |
| translate([0,0,-Protrusion]) | |
| cylinder(d=TubeID – 2*CapWall,h=FlangeHeight + 2*Protrusion,$fn=NumSides); | |
| } | |
| for (i=[0:NumRibs-1]) | |
| rotate(i*360/NumRibs) | |
| translate([0,-ThreadWidth,CapWall + ThreadThick]) | |
| cube([TubeID/2 – CapWall/2,2*ThreadWidth,CapInsert + CapRim – CapWall – ThreadThick],center=false); | |
| translate([0,0,CapInsert]) { | |
| difference() { | |
| cylinder(d=TubeID + 2*TubeWall,h=CapRim,$fn=NumSides); | |
| translate([0,0,-Protrusion]) | |
| cylinder(d=TubeID – 3*2*CapWall,h=2*CapRim,$fn=NumSides); | |
| } | |
| } | |
| } | |
| //- Build things | |
| if (Layout == "Show") | |
| TubeCap(); | |
| if (Layout == "Build") | |
| translate([0,0,OAHeight]) | |
| rotate([180,0,0]) | |
| TubeCap(); |



Comments
One response to “Mailing Tube End Caps”
[…] mailing tube arrived with contents intact, although the USPS inlet scanning didn’t work and the tube […]