After sliding the HON Lateral File Cabinet shelf into place and installing the bumpers, it seemed rather loose and floppy. Comparing the situation with the other file cabinet showed it had a missing glide button in the rear and two missing slides at the front.
A replacement button emerged from the end of a Delrin rod:

The original buttons had an expanding stem, which is easy to do with an injection-molded part. I opted for simple adhesive, with enough of a blob underneath the shelf to (presumably) lock it in place forevermore:

The slides required an iterative design technique (pronounced “fumbling around”), because nothing on either side remained square / plumb / true / unbent. I hacked the first version from scrap acrylic, broke off anything that didn’t fit, and got better measurements from what remained:

With those measurements in hand, the second version used a pair of weird flat-head shoulder screws (probably from a hard drive) to anchor 3D printed angle brackets into the frame:

Those worked reasonably well, but PETG doesn’t produce a nice sliding surface, so the final version has flat-head Delrin studs in slightly tweaked brackets:

As with the buttons in the back, the original slides had expanding studs holding them in place, but glue works fine here, too:

The button isn’t quite square to the surface and the slide isn’t quite flush with the bent metal in the frame, but it’s Good Enough™ for a shelf that won’t get lots of mileage.
For reference, the brackets should print vertically to wrap the plastic threads around the upright for better strength:

If you did it the obvious way, the upright side would break right off at the first insult from the hulking shelf, although they’re basically a solid chip of plastic, with a little infill inside the bottom slab.
While I was at it, I pulled the springs to make them a bit longer, so they touch the back of the frame when the shelf is half an inch behind the front face of the drawers. A firm push and those Delrin contact points let the shelf pop out an inch or so, with plenty of room for fingers underneath the front edge.
Some drawer slide stops near the back needed attention, too:

I cannot imagine how hard somebody slammed the drawers, because bending the stops back to a right angle required a Vise-Grip and some muttering:

Oddly, the cushiony hollow side faces away from the drawer, toward the back of the frame, because putting it forward holds the drawer front proud of the front frame face. Maybe HON cost-reduced the steel slides by making them just slightly shorter and using the same bumpers?
The drawers have begun filling up from boxes scattered around the house:

That’s the “orange” part of Mary’s collection, now with plenty of room to grow!
The OpenSCAD source code as a GitHub Gist:
// HON Lateral File Cabinet | |
// Shelf slides | |
// Ed Nisley KE4ZNU 2020-02-25 | |
//- Extrusion parameters must match reality! | |
// Print with 3 shells and 3 solid layers | |
ThreadThick = 0.25; | |
ThreadWidth = 0.40; | |
HoleWindage = 0.2; | |
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
Protrusion = 0.1; // make holes end cleanly | |
inch = 25.4; | |
ID = 0; | |
OD = 1; | |
LENGTH = 2; | |
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); | |
} | |
//---------------------- | |
// Dimensions | |
SlideBlock = [18.0,25.0,12.0]; // across, along, height of left shelf bracket | |
SlideWalls = [1.0,-SlideBlock.y/2,2.0]; // wall thicknesses, dummy Y | |
HoleOffset = [8.4,7.0,0]; // hole center from left, front, dummy Z | |
HoleOD = 4.0; | |
Screw = [4.0,10,0.8]; // weird flat-head shoulder screw | |
ScrewRecess = Screw.z + 2*ThreadThick; // depth to keep head below slide surface | |
echo(str("Head base: ",SlideWalls.z - ScrewRecess)); | |
$fn = 12*4; | |
//------------------- | |
// Single slide | |
module Slide() { | |
difference() { | |
cube(SlideBlock,center=false); | |
translate(SlideWalls) | |
cube(SlideBlock * 2,center=false); | |
translate(HoleOffset - [0,0,SlideBlock.z/2]) | |
rotate(180/8) | |
PolyCyl(HoleOD,2*SlideBlock.z,8); | |
translate(HoleOffset + [0,0,SlideWalls.z] - [0,0,ScrewRecess]) | |
rotate(180/12) | |
PolyCyl(Screw[OD],3*Screw[LENGTH],12); | |
} | |
} | |
//------------------- | |
// Build them | |
Gap = 5.0/2; | |
translate([0,-Gap,0]) | |
rotate([90,0,0]) | |
Slide(); | |
translate([0,Gap,0]) | |
rotate([-90,0,0]) | |
mirror([0,1,0]) | |
Slide(); |