X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=knifeblock.scad;h=c1f1869f4b1a07e9a777f9077b0274ccc7478a63;hp=9a7303a41b0a72503bb02c4e5f88d3c333f8aba7;hb=3db5630259f06c51cf1548dfab2f5154bf555ab3;hpb=1e698dada535d4b8f32867f8cd017a91a79edcf4 diff --git a/knifeblock.scad b/knifeblock.scad index 9a7303a..c1f1869 100644 --- a/knifeblock.scad +++ b/knifeblock.scad @@ -45,6 +45,10 @@ holeedge = 4; holeoffx = 0.33; holeoffy = 0.23; +indentdepth = 1; +indentoutersize = holesize + 2.15; +indentinnersize = indentoutersize - indentdepth * 3.0; + pegstem = 3.5; peghead = 10; pegstemheight = 2; @@ -140,6 +144,18 @@ module BlockPegSlot(){ } } +module DecorativeIndents(){ + translate([0, -front, 0]) + rotate([90,0,0]) + HexGrid(-height, 0, minx,maxx) { + hull(){ + translate([0, 0, -indentdepth]) + cylinder(r=indentinnersize/2, h=indentdepth, $fn=40); + cylinder(r=indentoutersize/2, h=indentdepth, $fn=40); + } + } +} + module Block(){ sidemidx = minsideout + screwcsinkdia/2; @@ -156,6 +172,7 @@ module Block(){ translate([0, yshift * frontbackslop, 0]) DoKnives(); AtSides() { BlockPegSlot(); BlockPegSlot(); } + DecorativeIndents(); } } @@ -214,15 +231,6 @@ module CoverPegSlot(coverlen){ } } -module HoleRow(){ - 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=40); - } -} - module HolesScope(){ intersection_for (dx=[-1,+1]) { intersection_for (dy=[-1,+1]) { @@ -233,19 +241,34 @@ module HolesScope(){ } } -module Holes(){ - jmin = ceil((maxx-minx)/(sqrt(3)*holepitch)); - echo("Holes X count 2 x", jmin); - intersection(){ - translate([holeoffx * holepitch, holeoffy * holepitch, 0]) { - for (j=[-jmin:2]) { - translate([j * sqrt(3) * holepitch, 0, 0]) { - HoleRow(); - translate([sqrt(3)/2 * holepitch, -0.5 * holepitch, 0]) - HoleRow(); - } +module HexGrid(xa,xb,ya,yb) { + imin = floor(xa / holepitch); + imax = ceil(xb / holepitch); + jmin = floor(ya / (sqrt(3)*holepitch)); + jmax = ceil(yb / (sqrt(3)*holepitch)); + echo("HexGrid ",imin,imax,jmin,jmax); + for (i=[imin:imax]) { + for (j=[jmin:jmax]) { + translate([(j * sqrt(3) + holeoffx) * holepitch, + (i + 0.5 + holeoffy) * holepitch, + 0]) { + child(); + translate([sqrt(3)/2 * holepitch, -0.5 * holepitch, 0]) + child(); } } + } +} + +module Hole(){ + cylinder(r=holesize/2, h=40, $fn=40); +} + +module Holes(){ + intersection(){ + translate([0, 0, -20]) + HexGrid(0, coverlonglen, minx, maxx) + Hole(); HolesScope(); } } @@ -296,6 +319,22 @@ module CoverParts(){ ////toplevel Pegs(); } +module FrontDemo(){ ////toplevel + color([1,0,1]) Block(); + color([1,0,1]) CoverAligned(); + color([0,0,0]) DoKnives(); +} + +module BlockFrontTest(){ ////toplevel + intersection(){ + Block(); + translate([minx-10, -front-10, -height-10]) { + cube([75,14,35]); + cube([75,25,13]); + } + } +} + //Block(); //Demo(); //Cover();