chiark / gitweb /
knifeblock: Fewer holes
[reprap-play.git] / knifeblock.scad
index 1133e1cffbc106b3d3275bf9c68f96ab3383c6a3..7ea6079d580a4221ad95a69e589f6909b885a4ac 100644 (file)
@@ -5,7 +5,7 @@ nknives = 3;
 widths = [15.5, 15.8, 19.0];
 handlelenbase = 75;
 handlelendelta = [-15, 0, 10];
-locations = [-35, 0, 40];
+locations = [-35, 0, 37];
 bladew = 5; // 2.5
 maxhandledepth = 45;
 
@@ -23,6 +23,8 @@ minsideout = 4;
 
 frontbackslop = 0.25;
 
+knifewidthslop = 2.0;
+
 screwbackdepth = 6.0 - 1.0;
 screwdia =       4.0 + 0.5;
 screwcsinkdia =  9.8 + 1.0;
@@ -40,8 +42,8 @@ holesize = 12.5;
 holestrut = 7;
 holeedge = 4;
 
-holeoffx = 0.45;
-holeoffy = 0.25;
+holeoffx = 0.33;
+holeoffy = 0.23;
 
 pegstem = 3.5;
 peghead = 10;
@@ -59,11 +61,14 @@ pegslopl = 0.5;
 pegdepthproportion = 0.80;
 
 // computed
+
+function width(k) = widths[k] + knifewidthslop;
+
 side = minsidein + screwcsinkdia + minsideout;
 totaldepth = front + maxhandledepth + back;
 
-minkx = locations[0] -         widths[0]        /2;
-maxkx = locations[nknives-1] + widths[nknives-1]/2;
+minkx = locations[0] -         width(0)        /2;
+maxkx = locations[nknives-1] + width(nknives-1)/2;
 
 minx = minkx - side;
 maxx = maxkx + side;
@@ -83,9 +88,9 @@ module ImportTemplate(w,k,t) {
 module Knife(k){
   ImportTemplate(bladew, k,"bl");
   hull(){
-    ImportTemplate(widths[k], k,"hl");
+    ImportTemplate(width(k), k,"hl");
     translate([-100,0,0])
-      ImportTemplate(widths[k], k,"hl");
+      ImportTemplate(width(k), k,"hl");
   }
 }
 
@@ -210,26 +215,30 @@ module CoverPegSlot(coverlen){
 }
 
 module HoleRow(){
-  for (i=[0:10]) {
-    translate([0, (i+0.5)*holepitch, -1])
-      cylinder(r=holesize/2, h=coverthick+2, $fn=20);
+  imax = ceil(coverlonglen / holepitch);
+  echo("Holes Y count ", imax);
+  for (i=[0:imax]) {
+    translate([0, (i+0.5)*holepitch, -20])
+      cylinder(r=holesize/2, h=40, $fn=20);
   }
 }
 
 module HolesScope(){
   intersection_for (dx=[-1,+1]) {
     intersection_for (dy=[-1,+1]) {
-      translate([dx * holeedge, dy * holeedge, -1])
-       scale([1,1,2])
+      translate([dx * holeedge, dy * holeedge, -5])
+       scale([1,1,10])
        CoverTemplate();
     }
   }
 }
 
 module Holes(){
+  imin = ceil((maxx-minx)/(sqrt(3)*holepitch));
+  echo("Holes X count 2 x", imin);
   intersection(){
     translate([holeoffx * holepitch, holeoffy * holepitch, 0]) {
-      for (i=[-10:10]) {
+      for (i=[-imin:2]) {
        translate([i * sqrt(3) * holepitch, 0, 0]) {
          HoleRow();
          translate([sqrt(3)/2 * holepitch, -0.5 * holepitch, 0])