chiark / gitweb /
screw-recess-test: make shaftlen a parameter (nfc)
[reprap-play.git] / screw-recess-test.scad
index 5079008c20140580141d991f5b4f6f8bc4f97475..9e3a333a68ee217132bfb1d9cb5d2f986e2131a1 100644 (file)
@@ -3,28 +3,36 @@
 cubez = 12;
 
 shaftz = cubez;
-recessz = 5;
 
 tests = [[4 + 0.5,  10 + 1.0]];
 
 cubexy = 20;
 
-module RecessScrewCutout_RecessCylinder(recessdia, h){
-  translate([0,0,-1]) cylinder(r=recessdia/2, h=h+1, $fn=40);
+module RecessScrewCutout_RecessCylinder(recessdia,zbelow, h){
+  translate([0,0,-zbelow]) cylinder(r=recessdia/2, h=h+1, $fn=40);
 }
 
-module RecessedScrewCutout(shaftdia, recessdia) {
-  recesstopz = recessz + 0.5*recessdia + 0.1;
+RecessedScrewCutout_defaultrecessdepth_flat = -0.35;
+RecessedScrewCutout_defaultrecessdepth_hex = -0.70;
+
+module RecessedScrewCutout(shaftdia, recessdia, shaftlen,
+        recessdepth_arg=RecessedScrewCutout_defaultrecessdepth_flat,
+        zbelow=1) {
+  // pass recessdepth_arg=-1 for the default for flat heads
+  // pass recessdepth_arg=-1 for the default for flat heads
+  recessdepth = recessdepth_arg >= 0 ? recessdepth_arg
+    : -recessdepth_arg * recessdia;
+  recesstopz = recessdepth + 0.5*recessdia + 0.1;
   xblocky = shaftdia + 0.1;
 
-  translate([0,0,-1]) cylinder(r=shaftdia/2, h=shaftz+2, $fn=20);
-  RecessScrewCutout_RecessCylinder(recessdia, recessz);
+  translate([0,0,-zbelow]) cylinder(r=shaftdia/2, h=shaftlen+zbelow, $fn=20);
+  RecessScrewCutout_RecessCylinder(recessdia,zbelow, recessdepth);
   intersection(){
-    translate([-recessdia*1.5, -xblocky/2, -1])
-      cube([recessdia*3, xblocky, recesstopz+3]);
+    translate([-recessdia*1.5, -xblocky/2, -zbelow])
+      cube([recessdia*3, xblocky, recesstopz+2+zbelow]);
     translate([0, -recessdia, recesstopz])
       rotate([0,135,0]) cube([recessdia, recessdia*2, 10]);
-    RecessScrewCutout_RecessCylinder(recessdia, recesstopz+1);
+    RecessScrewCutout_RecessCylinder(recessdia,zbelow, recesstopz+1);
   }
 }
 
@@ -38,7 +46,7 @@ module Test(){
 module Hole(){
     RecessedScrewCutout(tests[0][0],
                        tests[0][1],
-                       -1);
+                       shaftz+1);
 }
 
 //Test();