Replacement Shower Head Holder
This is a replacement of part of an adjustable shower head holder. The part you tighten up to set the placement/angle of the shower head.
I have no idea how specific it is to the exact model I had, I suspect the answer is very.
$fn=70;
module holder() {
module bottomRim() {
difference() {
cylinder(d=36.75, h=3);
cylinder(d=34.5, h=3);
}
}
module topRim() {
translate([0,0,(59.5+3)]) {
difference() {
cylinder(d=34, h=1.5);
translate([0,0,-0.5]) cylinder(d=32, h=2.5);
}
}
}
module topHole() {
translate([0,0,59.5]) {
cylinder(d=13.6, h=10);
}
}
module detentRing() {
detentCount = 19;
module detents() {
for(detentNum = [1:detentCount]) {
rotate([0,0,(360/detentCount)*detentNum]) {
translate([(23.6/2),0,-0.75]) {
sphere(d=2.5);
}
}
}
}
module ring() {
translate([0,0,1.4]) {
rotate_extrude(convexity = 10) {
translate([(23.6/2), 0, 0]) {
circle(d = 3.5);
}
}
}
}
translate([0,0,(59.5+3)]) {
detents();
ring();
}
}
module centerHole() {
translate([0,0,-1]) {
cylinder(d=34.5, h=61.25);
}
}
module mainBody() {
translate([0,0,3]) {
hull() {
cylinder(d=40, h=59.5);
translate([12,0,30/2]) {
cylinder(d=25, h=59.5-30);
}
}
}
bottomRim();
}
module notch() {
translate([(34.5/2)-0.75,0,(60/2)]) {
difference() {
translate([1/2,0,0]) {
cube([1.75,6.2,60], center=true);
}
cube([0.8,3.3,(60)], center=true);
}
}
}
module cutout() {
hull() {
translate([0,45/2,32]) {
rotate([90,0,0]) {
cylinder(d=28.8, h=45);
}
}
translate([-25,45/2,28.5]) {
rotate([90,0,0]) {
cylinder(d=28, h=45);
}
}
}
}
difference() {
mainBody();
centerHole();
topHole();
detentRing();
cutout();
}
notch();
topRim();
}
holder();