Bathroom Door Retainer: Bigger and Stronger

After three years, the retainer holding the front bathroom door open against winds blowing through the house on stormy days finally fractured, right at the top of the towel rack where you’d expect it:

Bathroom Door Retainer - fractured
Bathroom Door Retainer – fractured

I was all set to add reinforcing pins and whatnot, then came to my senses and just made the whole thing a few millimeters larger:

Bathroom Door Retainer - stronger
Bathroom Door Retainer – stronger

Customer feedback indicates white blends better with the background.

I made a few minor tweaks to the original design, including slightly larger bumps to hold it against the towel bar that, regrettably, put corresponding gouges into the bar. Who knew they used such soft plastic back in the day?

The OpenSCAD source code as a GitHub Gist:

// Bathroom Door Retainer
// Ed Nisley KE4ZNU - May 2017
// 2020-07 beef up, particularly at top of bar
Layout = "Show"; // [Show, Build]
//- Extrusion parameters must match reality!
/* [Hidden] */
ThreadThick = 0.20;
ThreadWidth = 0.40;
HoleWindage = 0.2;
Protrusion = 0.1; // make holes end cleanly
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
// Dimensions
/* [Dimensions] */
TowelBarSide = 20.5; // towel bar across flat side
TowelBarAngle = 45; // rotation of top flat from horizontal
BumpOD = 2.0; // retaining ball
DoorOffset = 14.0; // from towel bar to door
DoorThick = 37.0;
WallThick = 8.0; // minimum wall thickness
PlateThick = 4.0; // ... slab
RetainerDepth = 15.0; // thickness of retaining notch
NumSides = 6*4;
CornerRad = WallThick;
BarClipOD = TowelBarSide*sqrt(2) + 2*WallThick;
BarClipRad = BarClipOD/2;
OAH = RetainerDepth + PlateThick;
module LatchPlan() {
union() {
difference() {
union() {
for (i=[0,1], j=[0,1])
translate([i*(BarClipRad + DoorOffset + DoorThick + WallThick - CornerRad),j*(BarClipRad - CornerRad)])
rotate(TowelBarAngle) // towel bar shape
translate([0,-TowelBarSide/sqrt(2)]) // make access slot
for (a=[0:180:360])
rotate(a + TowelBarAngle)
module Latch() {
difference() {
translate([BarClipRad + DoorOffset,-BarClipRad/2,-Protrusion])
cube([DoorThick,BarClipOD,RetainerDepth + Protrusion],center=false);
// Build it!
if (Layout == "Show") {
if (Layout == "Build") {


4 thoughts on “Bathroom Door Retainer: Bigger and Stronger

  1. It seems like it might be nice if the hole was round so that, when not in use, the retainer would swivel down and out of the way instead of sticking out. Maybe that doesn’t matter for this WC configuration though.

    1. The only time we go past the latch is when the door’s open, so not fiddling with it is a win. There’s nothing to see / access / do on either wall of the little passageway into the bathroom when the door’s closed.

      The “design” actually survived a review process, wherein we decided just sliding it half an inch would be OK.

      But, yeah, if it swung down, the bar wouldn’t have those gouges right now … [heavy sigh]

  2. And to think the peanut gallery thought it’d only make it for the year. Some things last!

Comments are closed.