holeoffx = 0.33;
holeoffy = 0.23;
+indentdepth = 1;
+indentoutersize = holesize + 2.15;
+indentinnersize = indentoutersize - indentdepth * 3.0;
+
pegstem = 3.5;
peghead = 10;
pegstemheight = 2;
}
}
+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;
translate([0, yshift * frontbackslop, 0])
DoKnives();
AtSides() { BlockPegSlot(); BlockPegSlot(); }
+ DecorativeIndents();
}
}
}
}
+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(){
- imax = ceil(coverlonglen / holepitch);
- echo("Holes Y count ", imax);
- jmin = ceil((maxx-minx)/(sqrt(3)*holepitch));
- echo("Holes X count 2 x", jmin);
intersection(){
- translate([holeoffx * holepitch, holeoffy * holepitch, 0]) {
- for (i=[0:imax]) {
- translate([0, (i+0.5)*holepitch, -20])
- for (j=[-jmin:2]) {
- translate([j * sqrt(3) * holepitch, 0, 0]) {
- Hole();
- translate([sqrt(3)/2 * holepitch, -0.5 * holepitch, 0])
- Hole();
- }
- }
- }
- }
+ translate([0, 0, -20])
+ HexGrid(0, coverlonglen, minx, maxx)
+ Hole();
HolesScope();
}
}
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();