chiark / gitweb /
knifeblock: Holes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 31 Dec 2014 18:45:41 +0000 (18:45 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 31 Dec 2014 18:45:41 +0000 (18:45 +0000)
knifeblock.scad

index d083156a76ec722fcf3b5fb992e8898417dd92f0..e79fca3923be50e1dae2068aa7b5d33afa9dd7c7 100644 (file)
@@ -36,6 +36,13 @@ covertopwing = 15;
 covertopwingbase = 20;
 coveredge = 3;
 
+holesize = 12.5;
+holestrut = 7;
+holeedge = 4;
+
+holeoffx = 0.6;
+holeoffy = 0.3;
+
 pegstem = 3.5;
 peghead = 10;
 pegstemheight = 2;
@@ -61,6 +68,8 @@ maxkx = locations[nknives-1] + widths[nknives-1]/2;
 minx = minkx - side;
 maxx = maxkx + side;
 
+holepitch = holesize+holestrut;
+
 pegrecess = pegdepthproportion*totaldepth - 0.5*peglen;
 
 module ImportTemplate(w,k,t) {
@@ -203,10 +212,49 @@ 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);
+  }
+}
+
+module HolesScope(){
+  intersection_for (dx=[-1,+1]) {
+    intersection_for (dy=[-1,+1]) {
+      translate([dx * holeedge, dy * holeedge, -1])
+       scale([1,1,2])
+       CoverTemplate();
+    }
+  }
+}
+
+module Holes(){
+  intersection(){
+    translate([holeoffx * holepitch, holeoffy * holepitch, 0]) {
+      for (i=[-10:10]) {
+       translate([i * sqrt(3) * holepitch, 0, 0]) {
+         HoleRow();
+         translate([sqrt(3)/2 * holepitch, -0.5 * holepitch, 0])
+           HoleRow();
+       }
+      }
+    }
+    HolesScope();
+  }
+}
+
+module CoverCover(){
+  difference(){
+    CoverTemplate();
+    Holes();
+  }
+}
+
 module Cover(){
   difference(){
     union(){
-      CoverTemplate();
+      CoverCover();
       AtSides() { CoverSide(covershortlen); CoverSide(coverlonglen); }
     }
     AtSides() { CoverPegSlot(); CoverPegSlot(); }