A SquidWrench meeting discussion about printing transparent objects prompted me to conjure a soap dish from the vasty digital deep:

They’re all done in “natural” PETG with sufficient variations in speed, temperature, extrusion multiplier, and fill pattern to stock the shower & tub:

The single-thread sidewalls came out reasonably translucent in all the variations, but the baseplate remained stubbornly white-ish, even at 20 mm/s and 250 °C with 100% infill. The seams where the extruder retracts and lifts to the next layer remain conspicuous, with a scarf joint forming the white slab in the left-rear dish.
Quite a while ago, I’d considered making soap dishes with shattered-glass bottoms, but came to my senses. These have some key advantages:
- Exactly the right size for narrow shower shelves
- Light enough to not damage anything when it inevitably falls off
- Reasonably unbreakable when that happens
- Easily replaced
They’re also test pieces for the whole transparency thing, so it’s all good.
The OpenSCAD source code as a GitHub Gist:
| // Shower soap dish | |
| // Ed Nisley – KE4ZNU | |
| // 2026-01-13 | |
| include <BOSL2/std.scad> | |
| /* [Hidden] */ | |
| HoleWindage = 0.2; | |
| Protrusion = 0.1; | |
| NumSides = 3*3*4; | |
| $fn=NumSides; | |
| ID = 0; | |
| OD = 1; | |
| LENGTH = 2; | |
| WallThick = 0.6; | |
| BaseThick = 2.0; | |
| //DishOA = [80.0,40.0,20.0]; // standing used Dove | |
| DishOA = [90.0,50.0,30.0]; // standing Dove | |
| //DishOA = [100.0,65.0,30.0]; // half-bar | |
| DishTaper = [10.0,10.0]; | |
| CornerRadius = 15.0; | |
| DrainOA = [10.0,DishOA.y,3.0]; | |
| DrainOC = DishOA.x/3; | |
| //———- | |
| // Build it | |
| difference() { | |
| union() { | |
| linear_extrude(BaseThick) | |
| rect([DishOA.x,DishOA.y] – DishTaper,rounding=CornerRadius); | |
| rect_tube(DishOA.z,wall=WallThick, | |
| size1=[DishOA.x,DishOA.y] – DishTaper,size2=[DishOA.x,DishOA.y], | |
| rounding=CornerRadius,anchor=BOTTOM); | |
| } | |
| for (j=[-1,1]) | |
| right(j*DrainOC/2) | |
| up(BaseThick) | |
| cuboid(DrainOA,rounding=1.0,anchor=BOTTOM+BACK); | |
| } |
Spam comments get trashed, so don’t bother. Comment moderation may cause a delay.