chiark / gitweb /
sewing-table: Leg: rework wip
[reprap-play.git] / sewing-table.scad.m4
index ed0cc5ef763bca7446e1cbabd5590d38d824c23d..eacbc3d5484ebfddb9a3c95d8d9d36d1f6bdf015 100644 (file)
@@ -30,6 +30,26 @@ interlock_fine_lenslop = 1.0;
 
 demo_slop = 0.1;
 
+leg_height = 62;
+
+leg_hole_dia = 5 + 0.75;
+leg_big_dia = 37;
+leg_bot_dia = 15;
+leg_top_flat_z = 5;
+leg_top_thick = 10;
+
+leg_midspc_dia = 20;
+leg_bot_thick = 10;
+
+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;
+leg_n_tubules = 4;
+leg_tubule_dia = 4;
+
 // cutout
 
 machine_rear_to_front = 84 + 0.25 - 1.4;
@@ -108,13 +128,18 @@ thehd_tl = [ -thehd_tr[0], thehd_tr[1] ];
 thehd_bl = -thehd_tr;
 thehd_br = -thehd_tl;
 
-tablet_z_slop = 0.25;
+tablet_z_slop = 1.00;
 
 interlock_rad = interlock_dia/2;
 interlock_negative_rad = interlock_rad + 0.125;
 
 interlock_sq_adj = 0.2; // arbitrary
 
+leg_fin_top_rad = sqrt( pow(leg_big_dia/2,2) -
+                       pow(leg_fin_top_w/2,2) );
+
+leg_tubule_pos_rad = leg_big_dia/2 * 0.6;
+
 m4_define(`POST_TCROSSSZ',
           `2*( tile_hard_edge_hole_dist - test_edge + 1 )')
 
@@ -207,6 +232,17 @@ module TileBase(botleft, topright){
          MachineEnvelope();
          cube(shufflesz, center=true);
        }
+       if (JIG) {
+         translate([0,0,-20]) linear_extrude(height=20) {
+           for (diag=[[ +1, botleft                   ],
+                      [ -1, [topright[0], botleft[1]] ]]) {
+             translate(diag[1])
+               rotate(atan2(size[1], diag[0] * size[0]))
+               translate([0, -test_edge/2])
+               square([vectorlen2d(size), test_edge]);
+           }
+         }
+       }
       }
     }
   }
@@ -656,6 +692,42 @@ module MachineEnvelope(){
   }
 }
 
+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_top_thick])
+         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);
+    mirror([0,0,1]) translate([0,0,leg_top_thick - 0.1])
+      cylinder(r= leg_midspc_dia/2,
+              h=leg_height - leg_top_thick - leg_bot_thick,
+              $fn=30);
+    for (rot=[45: 360/leg_n_tubules : 359]) rotate(rot) {
+       mirror([0,0,1]) translate([ leg_tubule_pos_rad, 0, -1])
+         cylinder(r= leg_tubule_dia/2, h=leg_height+2, $fn=20);
+      }
+  }
+}
+
 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
@@ -1028,6 +1100,12 @@ module Demo(){ ////toplevel
   translate(demo_slop*[-3,1]) color("blue")   Tile10();
   translate(demo_slop*[-3,0]) color("red")    Tile00();
   %Machine();
+  // Can also do this, to print reference sheet:
+  //  load this into openscad
+  //  select Ctrl-4 view, view all, scale appropriately
+  //  import sewing-table,Demo-flat.png
+  //  pngtopnm <sewing-table,Demo-flat.png | ppmbrighten -s -50 -v +100 >t.pnm
+  //  lpr t.pnm
 }
   
 //TestPiece1();