-
Round Patio Table Feet
For a round patio table, although you can’t tell from the picture:

Round patio table feet – installed Also despite appearances, that’s 3D printed from clear-ish TPU, with its black appearance due to internal reflections from the leg’s dark interior.
The original hard-white-plastic feet had eroded enough to let the aluminum legs scrape the deck paint:

Round patio table feet – old vs new The only way to extract each old foot was to hack out a segment with a razor knife, after which it slid out easily.
The ring around the top of the sections provides enough griptivity inside the leg to hold the foot in place:

Round Patio Table Foot – solid model As with the TPU chains on the bike rack tray holder, I expect the compressed / bent segments will gradually relax inside the legs, but the feet ought not fall out in normal use.
The OpenSCAD source code isn’t quite a one-liner, but it’s close:
// Patio Table Foot - round legs // Ed Nisley - KE4ZNU // 2026-05-29 include <BOSL2/std.scad> /* [Hidden] */ ID = 0; OD = 1; LENGTH = 2; HoleWindage = 0.2; Protrusion = 0.01; NumSides = 4*3*2*4; Gap = 5.0; $fn=NumSides; PadOA = [8.0,1*INCH,3.0]; SleeveOA = [13.0,21.7 - HoleWindage,12.0]; Kerf = 2.5; //----- // Build it difference() { union() { tube(PadOA[LENGTH],od=PadOA[OD],id=PadOA[ID],anchor=BOTTOM) position(TOP) tube(SleeveOA[LENGTH],od=SleeveOA[OD],id=SleeveOA[ID],anchor=BOTTOM); up(PadOA[LENGTH] + SleeveOA[LENGTH] - 1.0) torus(d_maj=SleeveOA[OD],r_min=(PadOA[OD] - SleeveOA[OD])/2,anchor=TOP); } up(PadOA[LENGTH]) for (a = [0,60,120]) zrot(a) cuboid([PadOA[OD],Kerf,2*SleeveOA[LENGTH]],anchor=BOTTOM); }