demo_slop = 0.1;
+leg_height = 50;
+
+leg_hole_dia = 5 + 0.75;
+leg_big_dia = 37;
+leg_bot_dia = 15;
+leg_top_flat_z = 5;
+
+leg_fin_top_w = 5;
+leg_fin_bot_w = 5;
+leg_fin_bot_rad = 30;
+leg_fin_bot_flat_z = 5;
+
+leg_n_fins = 4;
+
// cutout
machine_rear_to_front = 84 + 0.25 - 1.4;
interlock_sq_adj = 0.2; // arbitrary
+leg_fin_top_rad = sqrt( pow(leg_big_dia/2,2) -
+ pow(leg_fin_top_w/2,2) );
+
m4_define(`POST_TCROSSSZ',
`2*( tile_hard_edge_hole_dist - test_edge + 1 )')
}
}
+module Leg(){ ////toplevel
+ difference(){
+ union(){
+ hull(){
+ mirror([0,0,1])
+ cylinder(r= leg_big_dia/2, height=leg_top_flat_z, $fn=100);
+ translate([0,0, -leg_height])
+ cylinder(r= leg_bot_dia/2, height=1, $fn=100);
+ }
+ for (rot=[0: 360/leg_n_fins : 359]) rotate(rot) {
+ hull(){
+ mirror([0,0,1]) translate([0, -leg_fin_top_w/2, 0])
+ cube([ leg_fin_top_rad - 0.1,
+ leg_fin_top_w,
+ 1 ])
+ ;
+ translate([0, -leg_fin_bot_w/2, -leg_height])
+ cube([ leg_fin_bot_rad,
+ leg_fin_bot_w,
+ leg_fin_bot_flat_z ]);
+ }
+ }
+ }
+ mirror([0,0,1]) translate([0,0,-1])
+ cylinder(r= leg_hole_dia/2, h=leg_height+2, $fn=30);
+ }
+}
+
function Rectangle_corners(c0, sz) =
// returns the corners of a rectangle from c0 to c0+sz
// if sz is positive, the corners are anticlockwise starting with c0