The weather got warm enough to open the windows before pollen season started, which led to the front bathroom door slamming closed in the middle of the night when a gusty rainstorm blew through town. After far too many years, I decided this was an annoyance up with which I need no longer put.
A few minutes with OpenSCAD and Slic3r produces the shape:

It’s basically an extrusion of a 2D shape with a rectangular recess for the door chewed out.
An hour later, it’s in full effect:

The model now sports a little ball to secure the retainer against the towel bar:

Maybe someday I’ll reprint it.
That was easy …
The cast-iron pig sometimes standing guard as a doorstop in the relatively narrow doorway poses a bit of a foot hazard, so he moves into a closet during the off season. He can now remain there, snug and comfy, until a need for ballast arises.
The OpenSCAD source code as a GitHub Gist:
| // Bathroom Door Retainer | |
| // Ed Nisley KE4ZNU – May 2017 | |
| Layout = "Show"; // Show Build | |
| //——- | |
| //- Extrusion parameters must match reality! | |
| 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 | |
| TowelBarSide = 20.5; // towel bar across flat side | |
| TowelBarAngle = 45; // rotation of top flat from horizontal | |
| DoorOffset = 16.0; // from towel bar to door | |
| DoorThick = 36.5; | |
| WallThick = 4.0; // minimum wall thickness | |
| RetainerDepth = 10.0; // thickness of retaining notch | |
| NumSides = 6*4; | |
| CornerRad = WallThick; | |
| BarClipOD = TowelBarSide*sqrt(2) + 2*WallThick; | |
| BarClipRad = BarClipOD/2; | |
| OAH = RetainerDepth + WallThick; | |
| module LatchPlan() { | |
| union() { | |
| linear_extrude(height=OAH,convexity=4) | |
| difference() { | |
| union() { | |
| circle(d=BarClipOD,$fn=NumSides); | |
| hull() | |
| for (i=[0,1], j=[0,1]) | |
| translate([i*(BarClipRad + DoorOffset + DoorThick + WallThick – CornerRad),j*(BarClipRad – CornerRad)]) | |
| circle(r=CornerRad,$fn=4*4); | |
| } | |
| rotate(TowelBarAngle) // towel bar shape | |
| square(size=TowelBarSide,center=true); | |
| translate([0,-TowelBarSide/sqrt(2)]) // make access slot | |
| rotate(-TowelBarAngle) | |
| square(size=[2*TowelBarSide,TowelBarSide],center=false); | |
| } | |
| translate([0,-TowelBarSide/sqrt(2),OAH/2]) | |
| rotate([90,0,45]) | |
| sphere(r=TowelBarSide/25,$fn=4*3); | |
| } | |
| } | |
| module Latch() { | |
| difference() { | |
| LatchPlan(); | |
| translate([BarClipRad + DoorOffset,-BarClipRad/2,-Protrusion]) | |
| cube([DoorThick,BarClipOD,RetainerDepth + Protrusion],center=false); | |
| } | |
| } | |
| //——- | |
| // Build it! | |
| if (Layout == "Show") { | |
| Latch(); | |
| } | |
| if (Layout == "Build") { | |
| translate([0,0,OAH]) | |
| rotate([180,0,0]) | |
| Latch(); | |
| } |
Comments
8 responses to “Bathroom Door Retainer”
That’s a very nice gizmo and it really shows off the high quality of your prints!
I admit to considerable bias, but Hilbert Curve infill definitely looks less “3D printed” than the usual straight-line pattern. We agreed the latch wasn’t much uglier than a store-bought version (if one existed), which would surely be dead white, smoothly rounded, and a poor fit to both the door and the towel rack.
Getting consistent results required some effort, with the result my much-hacked M2 Just Works with no fuss or muss. Need a shape? Presto! There it is!
Thanks for the good words …
Now is the time to take up Fusion 360 (said he with devilish grin) :)
Aye, you’ll have me designing smooth curvy objects requiring alignment pins, support material, and epoxy coatings. Life is soooo much simpler with OpenSCAD: no temptation to make anything more complicated than absolutely necessary.
Hey, those two rounded corners are a stylin’ thing …
Except for the smooth part, you’ve described my next print to the dot :)
Maybe I should stick to OpenSCAD to save myself :)
I wonder how long until someone forgets the door is latched and that strategic weak point delaminates to save the towel bar :)
And more importantly, will Ed then proceed to print a whole new one or glue this one back together – a real cliffhanger :)
Given how rarely we close the door, the next owner will break it.