X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=knifeblock.scad;h=6d7e96a5a1a355607cccd6cfeda4465013407317;hb=65d1fbff98e91c996b7c27d8cbea3c7010952f5b;hp=ef7345c35b0e2b5a9faeaf536af68d7f7e4c0968;hpb=897f22af92252115f8e70b8a50787fb18b89d078;p=reprap-play.git diff --git a/knifeblock.scad b/knifeblock.scad index ef7345c..6d7e96a 100644 --- a/knifeblock.scad +++ b/knifeblock.scad @@ -36,6 +36,14 @@ covertopwing = 15; covertopwingbase = 20; coveredge = 3; +pegstem = 3.5; +peghead = 10; +pegstemheight = 2; +pegheight = 9; +peglen = 12; + +pegslop = 0.5; + // computed side = minsidein + screwcsinkdia + minsideout; totaldepth = front + maxhandledepth + back; @@ -121,9 +129,9 @@ module CoverTemplate(){ } module CoverSide(xpos, len){ - translate([xpos, 0 ,0]) - rotate([90,0,90]) - linear_extrude(height=coverside) + translate([xpos, 0 ,0]) { + rotate([90,0,90]) + linear_extrude(height=coverside) polygon([[0, 0], [0, totaldepth], [covertopwing, totaldepth], @@ -132,21 +140,53 @@ module CoverSide(xpos, len){ [len - covertopwing, totaldepth], [len, totaldepth], [len, 0]]); -// } + } +} + +module PegTemplate(){ + for (mx=[0,1]) for (my=[0,1]) { + mirror([mx,0,0]) mirror([0,my,0]) + polygon([[-0.1, -0.1], + [pegstem/2, -0.1], + [pegstem/2, pegstemheight/2], + [peghead/2, pegheight /2], + [-0.1, pegheight /2]]); + } +} + +module Peg(){ + echo("peg angle slope (must be <1)", + (peghead-pegstem)/(pegheight-pegstemheight)); + d = pegslop; + rotate([90,0,0]) { + linear_extrude(height=peglen) { + intersection(){ + translate([-d,-d,0]) PegTemplate(); + translate([-d,+d,0]) PegTemplate(); + translate([+d,+d,0]) PegTemplate(); + translate([+d,-d,0]) PegTemplate(); + } + } + } } module Cover(){ CoverTemplate(); CoverSide(minx, covershortlen); - CoverSide(maxx-coverside, coverlonglen); + mirror([1,0,0]) CoverSide(-maxx, coverlonglen); +} + +module CoverAligned(){ + translate([0,-front,-height]) + rotate([-90,0,0]) + Cover(); } module Demo(){ ////toplevel %Block(); DoKnives(); - translate([0,0,-height]) - rotate([90,0,0]) - Cover(); + color([0,0,1]) CoverAligned(); } Demo(); +//Cover();