The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

HQ Sixteen: Improved Fabric Rod Bushings

Descending from the previous bearings / sleeves / bushings, I added a rib to hold them in place as the rod slides back and forth while fiddling with fabric:

HQ Sixteen - Rod Bushing - rib retainer - solid model - build view
HQ Sixteen – Rod Bushing – rib retainer – solid model – build view

An idealized serving suggestion:

HQ Sixteen - Rod Bushing - rib retainer - solid model - show view
HQ Sixteen – Rod Bushing – rib retainer – solid model – show view

Which might count as the “better design” I expected it would need.

They’re still almost invisible in use:

HQ Sixteen - Rod Bushing - rib retainer
HQ Sixteen – Rod Bushing – rib retainer

Which is as it should be: inconspicuous, no more black dust, and E-Z rotation.

The modified OpenSCAD source code is added to the original GitHub Gist:

// Bushing for HQ Sixteen table rods
// Ed Nisley – KE4ZNU
// 2026-02-20
// 2026-09-29 add retaining rib
include <BOSL2/std.scad>
Layout = "Show"; // [Show,Build]
/* [Hidden] */
ID = 0;
OD = 1;
LENGTH = 2;
HoleWindage = 0.2;
Protrusion = 0.1;
NumSides = 8*3*2*4;
$fn=NumSides;
Rod = [25.0,28.7,100.0]; // very short rod
Sleeve = [Rod[OD] + 0.3,31.2 – 0.2,9.0]; // LENGTH = overall
Rim = [Sleeve[ID],Sleeve[OD] + 6.0,0.6];
LockRing = [Sleeve[ID],Sleeve[OD] + 2*(1.0),4.0]; // locks sleeve on plate
IdlerLength = 15.0; // far right end of rods
NumSlots = 2*4;
Kerf = 1.0;
Gap = 5.0;
module Bushing(oal,lk=false) {
difference() {
union() {
tube(oal,id=Sleeve[ID],od=Sleeve[OD],anchor=BOTTOM);
tube(Rim[LENGTH],id=Rim[ID],od=Rim[OD],anchor=BOTTOM);
if (lk)
up(oal)
tube(LockRing[LENGTH],id=LockRing[ID],od=LockRing[OD],chamfer=LockRing[LENGTH]/3,anchor=TOP);
}
for (a=[0:NumSlots-1])
zrot(a*360/NumSlots)
up(oal/4 + Rim[LENGTH])
right(Sleeve[ID]/2)
cuboid([Sleeve[OD],Kerf,oal],anchor=BOTTOM);
}
}
//—–
// Build things
if (Layout == "Show") {
color("Gray",0.5)
xcyl(Rod[LENGTH],d=Rod[OD]);
right(Rod[LENGTH]/3)
zrot(180) yrot(90)
Bushing(Sleeve[LENGTH]);
left(Rod[LENGTH]/3)
yrot(90)
Bushing(IdlerLength,lk=true);
}
if (Layout == "Build") {
right(Rim[OD]/2 + Gap/2)
Bushing(Sleeve[LENGTH]);
left(Rim[OD]/2 + Gap/2)
Bushing(IdlerLength,lk=true);
}
// Bearing sleeve for HQ Sixteen table rods
// Ed Nisley – KE4ZNU
// 2026-02-20
include <BOSL2/std.scad>
Layout = "Show"; // [Show,Build]
/* [Hidden] */
ID = 0;
OD = 1;
LENGTH = 2;
HoleWindage = 0.2;
Protrusion = 0.1;
NumSides = 8*3*2*4;
$fn=NumSides;
Rod = [25.0,28.7,100.0]; // very short rod
Sleeve = [Rod[OD] + 0.3,31.2 – 0.2,9.0]; // LENGTH = overall
Rim = [Sleeve[ID],Sleeve[OD] + 6.0,0.6];
IdlerLength = 15.0;
NumSlots = 2*4;
Kerf = 1.0;
Gap = 5.0;
module Bearing(oal) {
difference() {
union() {
tube(oal,id=Sleeve[ID],od=Sleeve[OD],anchor=BOTTOM);
tube(Rim[LENGTH],id=Rim[ID],od=Rim[OD],anchor=BOTTOM);
}
for (a=[0:NumSlots-1])
zrot(a*360/NumSlots)
up(oal/4 + Rim[LENGTH])
right(Sleeve[ID]/2)
cuboid([Sleeve[OD],Kerf,oal],anchor=BOTTOM);
}
}
//—–
// Build things
if (Layout == "Show") {
color("Gray",0.5)
xcyl(Rod[LENGTH],d=Rod[OD]);
right(Rod[LENGTH]/3)
yrot(90)
Bearing(Sleeve[LENGTH]);
left(Rod[LENGTH]/3)
yrot(90)
Bearing(IdlerLength);
}
if (Layout == "Build") {
right(Rim[OD]/2 + Gap/2)
Bearing(Sleeve[LENGTH]);
left(Rim[OD]/2 + Gap/2)
Bearing(IdlerLength);
}

Comments

Spam comments get trashed, so don’t bother; you’re not as clever as you think. Comment moderation may cause a delay.