Skip to content

Instantly share code, notes, and snippets.

@ednisley
Created May 31, 2026 18:42
Show Gist options
  • Select an option

  • Save ednisley/c87ba8d31e620f8ab44d3eef899a6796 to your computer and use it in GitHub Desktop.

Select an option

Save ednisley/c87ba8d31e620f8ab44d3eef899a6796 to your computer and use it in GitHub Desktop.
OpenSCAD source code: 3D printed feet for square patio table
// Patio Table Foot - rectangular legs
// Ed Nisley - KE4ZNU
// 2026-05-26
include <BOSL2/std.scad>
Layout = "Show"; // [Show,Build]
/* [Hidden] */
HoleWindage = 0.2;
Protrusion = 0.01;
NumSides = 4*3*2*4;
Gap = 5.0/2;
$fn=NumSides;
PadOA = [50,23.5,4.5];
LegAngles = [5,5];
EndStrut = [2.5 + 2.5,13.3 - 1.0,23.0];
SideStrut = [12.0,5.5 - 1.0,13.0];
Clearance = 0.5;
StrutsOC = [44.0 - EndStrut.x,18.0 - SideStrut.y];
//-----
// Define it
module Foot(angles = LegAngles) {
difference() {
up((PadOA.x/2)*abs(sin(angles.x)) + (PadOA.y/2)*abs(sin(angles.y)))
xrot(angles.x) yrot(angles.y)
union() {
down(3*PadOA.z)
linear_extrude(4*PadOA.z)
left(PadOA.x/2) fwd(PadOA.y/2)
import("Patio Table Foot - pad outline.svg",center=true);
up(PadOA.z)
for (i = [-1,1])
right(i*StrutsOC.x/2)
cuboid(EndStrut,anchor=BOTTOM) position(TOP)
down(EndStrut.y/2) left(i*Clearance)
pie_slice(r=(PadOA.x - StrutsOC.x)/2,ang=180,l=EndStrut.y,anchor=CENTER,spin=-i*90,orient=FRONT);
up(PadOA.z)
for (j = [-1,1])
fwd(j*StrutsOC.y/2)
cuboid(SideStrut,anchor=BOTTOM) position(TOP)
down(SideStrut.x/2) zrot(90) right(j*Clearance)
pie_slice(r=(PadOA.y - StrutsOC.y)/2,ang=180,l=SideStrut.x,anchor=CENTER,spin=j*90,orient=FRONT);
}
cuboid(4*PadOA,anchor=TOP);
}
}
//-----
// Build it
if (Layout == "Show") {
back(PadOA.y/2 + Gap)
Foot();
left(0.8*PadOA.x) fwd(PadOA.y) zrot(-90)
yflip() Foot();
}
if (Layout == "Build") {
union() {
fwd(PadOA.y/2 + Gap)
Foot();
back(PadOA.y/2 + Gap)
yflip() Foot();
}
}
@ednisley

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment