My bath has – well, had – a push-action bath which would seal when pushed down and unseal when pushed again. Over-engineered crap like this is bugbear of mine. An old-fashioned plug or tap is intuitive to use, and very grabbable in a Gaudi-like way. My experience of modern ‘bathroom innovation’ is just bad UX. The prime example of this was a tap in a restaurant bathroom which had a plain cube on top. Should I turn it or push it? Nope, I tilt it. Naturally.
These designs just add entropy to the universe; they fuel consumer insanity and replace old wisdoms with trends. Case in point, the push-plug in my bathroom was a nightmare to clean and eventually broke off. My bachelor solution for the past week was to simply tape over the hole with gaffa, which works surprisingly well!
Today I thought it would be a good bit micro-DIY to make a new one and test my 3D printing skills. I cracked open a Jupyter notebook and wrote the following.
from solid import * import math import viewscad def make_plug( top_diameter: float, base_diameter: float, height: float, ball_radius: float, handle_height: float, handle_diameter: float ): handle_top_radius = handle_diameter / 2 handle_taper_radius = handle_top_radius / 2 handle = translate((0, 0, 1))( cylinder( r1=handle_taper_radius, r2=handle_top_radius, h=handle_height, segments=30 ) ) top_radius = top_diameter / 2 base_radius = base_diameter / 2 ball_height = ball_radius + height / 2 return union()( handle, difference()( cylinder( r1=base_radius, r2=top_radius, h=height, segments=60 ), translate((0, 0, ball_height))( sphere( r=ball_radius, segments=40 ) ) ) ) # Bespoke just for my bath! plug = make_plug(41, 38, 10, 40, 16, 20)
The radii were roughly measured and I did a very low-res print but I was surprised that the test came out really well. Here’s the initial draft.
And amazingly the test print is a perfect fit. A little PVC tape around it will make a good seal. I’ll iterate this a bit, the final print will be in white, higher res, and with bevelled edges.