-
Injured Arm Support Table: Wide Version
This table must sit across the threshold of a walk-in / sit-down shower, with the shower curtain draped across the table to keep the water inside.
Starting with another patio side table, as before, I installed a quartet of 5 mm stainless screws to lock the top panels in place and convert the table into a rigid assembly:
Because the shower floor is slightly higher than the bathroom floor, I conjured a set of foot pads to raise the outside legs:
The sloping top surface on the pads compensates for the angle on the end of the table legs:
I think the leg mold produces legs for several different tables, with the end angle being Close Enough™ for most purposes. Most likely, it’d wear flat in a matter of days on an actual patio.
Using good 3M outdoor-rated foam tape should eliminate the need for fiddly screw holes and more hardware:
The feet fit reasonably well:
They may need nonskid tape on those flat bottoms, but that’s in the nature of fine tuning.
And, as with the narrow table, it may need foam blocks to raise the top surface to arm level. Perhaps a pair of Yoga Blocks will come in handy for large adjustments.
The OpenSCAD source code as a GitHub Gist:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters// Patio Side Table Feet // Ed Nisley – KE4ZNU // 2019-03 /* [Layout Options] */ Layout = "Build"; // [Show,Build] /* [Extrusion Parameters] */ ThreadWidth = 0.40; ThreadThick = 0.25; HoleWindage = 0.2; Protrusion = 0.1; //—– // Dimensions TapeThick = 1.0; // 3M double-stick outdoor tape LegWall = [2.5,3.5]; // leg walls are not the same in X and Y! LegBase = [36.0,19.0]; // flat on floor LegOuter = [31.0,19.0]; // perpendicular to leg axis LegInner = [28.5,11.5]; // … ditto LegAngle = 90 – 53; // vertical to leg LegRecess = [LegInner.x,LegInner.y,LegInner.x*tan(LegAngle)]; PadWedge = 2; // to fit end of leg PadRadius = 4.0; // rounding radius for nice corners PadBase = [LegBase.x + 2*PadRadius,LegBase.y + 2*PadRadius,5.0]; PadSides = 6*4; BathStep = 20; // offset between shower bottom and floor /* [Hidden] */ EmbossDepth = 1*ThreadThick; // recess depth DebossHeight = 1*ThreadThick + Protrusion; // text height + Protrusion into part //—– // Useful routines function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); FixDia = Dia / cos(180/Sides); cylinder(r=(FixDia + HoleWindage)/2, h=Height, $fn=Sides); } //—– // Foot pad module FootPad(Riser = 0.0) { difference() { union() { hull() for (i=[-1,1], j=[-1,1]) { translate([i*(PadBase.x/2 – PadRadius),j*(PadBase.y/2 – PadRadius),0]) cylinder(r=PadRadius,h=1,$fn=PadSides); translate([i*(PadBase.x/2 – PadRadius), j*(PadBase.y/2 – PadRadius), Riser + PadBase.z – PadRadius – (i-1)*PadWedge/2]) sphere(r=PadRadius/cos(180/PadSides),$fn=PadSides); } translate([PadRadius – PadBase.x/2,0,Riser + PadBase.z]) rotate([0,LegAngle,0]) translate([LegRecess.x/2,0,(LegRecess.z – Protrusion)/2 ]) cube(LegRecess – [2*TapeThick,0,2*TapeThick],center=true); } translate([0,0,-2*PadBase.z]) // remove anything under Z=0 cube(4*PadBase,center=true); cube([17,12,2*DebossHeight],center=true); } mirror([1,0,0]) linear_extrude(height=EmbossDepth) translate([0,0,0]) text(text=str(Riser),size=10,spacing=1.05, font="Arial:style=Bold", valign="center",halign="center"); } //—– // Build things if (Layout == "Build") { if (true) { translate([-0.7*PadBase.x,-0.7*PadBase.y,0]) FootPad(0); translate([-0.7*PadBase.x,+0.7*PadBase.y,0]) FootPad(0); } translate([+0.7*PadBase.x,-0.7*PadBase.y,0]) FootPad(BathStep); translate([+0.7*PadBase.x,+0.7*PadBase.y,0]) FootPad(BathStep); } if (Layout == "Show") FootPad();




