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.

Outlet Strip Bench Mount

A spate of tidying-up led to mounting an outlet strip along the back of a bench:

Outlet Bench Mount - installed
Outlet Bench Mount – installed

Rather than drill holes into the top of the bench for those screws, they fit into M4 brass inserts heat-staked into the brackets:

Outlet Bench Mount - show view
Outlet Bench Mount – show view

The holes for those inserts aren’t centered side-to-side on the brackets, because the screw holes aren’t centered on the bent-steel angles forming the outlet strip endplates.

The bottom arm on the brackets probably isn’t necessary, but they kept the outlet strip from crawling away while I match-drilled two holes for the screws into the side of the benchtop.

For obvious reasons, the brackets print on their sides:

Outlet Bench Mount - build view
Outlet Bench Mount – build view

Another outlet strip from a different manufacturer is, of course, different, but changing three parameters in the OpenSCAD program summons a different bracket from the vasty digital deep:

Outlet Bench Mount - different brand
Outlet Bench Mount – different brand

Parametric modeling and a 3D printer are exactly the right hammers for the job …

The OpenSCAD source code as a GitHub Gist:

// Shower soap dish
// Ed Nisley – KE4ZNU
// 2026-06-04
include <BOSL2/std.scad>
Layout = "Show"; // [Show,Build]
/* [Hidden] */
HoleWindage = 0.2;
Protrusion = 0.1;
NumSides = 3*3*4;
Gap = 10.0/2;
$fn=NumSides;
ID = 0;
OD = 1;
LENGTH = 2;
BenchThick = 21.0; // workbench top
ScrewOD = 4.0; // into edge of bench
Insert = [4.0,5.5,10.0]; // robust M4 insert
WallThick = 10.0;
BaseThick = 10.0;
OutletBase = [15.0,40.0];
HoleOffset = 6.5; // from outside edge of bracket
HoleOC = 24.0;
MountOA = [OutletBase.x,OutletBase.y,BenchThick + Insert[LENGTH] + 1.0 + BaseThick];
//———-
// Build it
module Mount() {
difference() {
cuboid(MountOA,rounding=1.0,anchor=BOTTOM + BACK);
up(BaseThick)
fwd(WallThick)
cuboid([2*MountOA.x,MountOA.y,BenchThick],anchor=BOTTOM + BACK);
up(BaseThick + BenchThick/2) back(Protrusion)
ycyl(OutletBase.y,d=ScrewOD,circum=true,$fn=6,anchor=BACK);
for (j=[-1,1])
fwd(MountOA.y/2 + j*HoleOC/2)
right(HoleOffset – MountOA.x/2)
up(MountOA.z + Protrusion)
cyl(Insert[LENGTH],d=Insert[OD],circum=true,$fn=6,anchor=TOP);
}
}
//———-
// Build it
if (Layout == "Show") {
left(Gap + MountOA.x/2)
Mount();
right(Gap + MountOA.x/2)
xflip() Mount(); // mirror for the other end of the outlet strip
}
if (Layout == "Build") {
left(MountOA.z/2)
up(MountOA.x/2)
yrot(90)
Mount();
fwd(1.5*MountOA.y)
left(MountOA.z/2 – BenchThick/2 – Insert[LENGTH]/2)
zrot(180)
up(MountOA.x/2)
yrot(-90)
xflip() Mount(); // mirror for the other end of the outlet strip
}

Comments

Spam comments get trashed, so don’t bother. Comment moderation may cause a delay.