X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=knifeblock.scad;h=e79fca3923be50e1dae2068aa7b5d33afa9dd7c7;hb=1d5ba2a44400c0b2ca21db7b9a109dcb2a0e05bc;hp=d083156a76ec722fcf3b5fb992e8898417dd92f0;hpb=598580b9d50534cb09752fc10913a13d4d1d52bb;p=reprap-play.git diff --git a/knifeblock.scad b/knifeblock.scad index d083156..e79fca3 100644 --- a/knifeblock.scad +++ b/knifeblock.scad @@ -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(); }