Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
OpenSCAD source code: Patio Side Table feet to compensate for shower-to-floor difference
// 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();
@ednisley

This comment has been minimized.

Copy link
Owner Author

commented Mar 18, 2019

More details on my blog at https://wp.me/poZKh-87S

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.