// -*- C -*- whole_depth = 90; whole_width = 120; antifoot_width = 15; antifoot_height = 15; antifoot_slope = 1.0; antifoot_depth = 10; antifoot_base = 12; antifoot_front = 5; leg_width = 8; leg_thick = 8; post_height = 50; orifice_dia = 22.1 + 0.3; post_thick = 8; stretcher_thick = 5; stretcher_width = 8; antifoot_back = antifoot_depth + antifoot_height/antifoot_slope; post_rad = orifice_dia/2 + post_thick; module AntiFoot(){ translate([-antifoot_front-antifoot_back, antifoot_width/2, 0]) rotate([90,0,0]) translate([antifoot_front, antifoot_base, 0]) linear_extrude(height=antifoot_width) polygon([[-antifoot_front, -antifoot_base], [-antifoot_front, antifoot_height], [0, antifoot_height], [0, 0], [antifoot_depth, 0], [antifoot_back, antifoot_height], [antifoot_back, -antifoot_base]]); translate([-antifoot_back, 0, 0]) cube([stretcher_width, whole_width*0.55, stretcher_width]); } module LeftLeg(){ effective_depth = whole_depth - antifoot_back; translate([-effective_depth, -whole_width/2, 0]) AntiFoot(); multmatrix([[1,0,0,0], [-((whole_width - leg_width)/2 / effective_depth), 1,0,0], [0,0,1,0], [0,0,0,1]]) mirror([1,0,0]) cube([effective_depth, leg_width, leg_thick]); } module RightLeg(){ mirror([0,1,0]) LeftLeg(); } module Post(){ cylinder(h=post_height, r=post_rad, $fn=70); } module Stand(){ difference(){ union(){ LeftLeg(); RightLeg(); Post(); } translate([0,0,-1]) cylinder(h=post_height+2, r=orifice_dia/2); } } Stand();