}
}
+module HexGrid(imin,imax,jmin,jmax) {
+ for (i=[imin:imax]) {
+ for (j=[jmin:jmax]) {
+ translate([j * sqrt(3) * holepitch,
+ (i+0.5)*holepitch,
+ 0]) {
+ child();
+ translate([sqrt(3)/2 * holepitch, -0.5 * holepitch, 0])
+ child();
+ }
+ }
+ }
+}
+
module Hole(){
cylinder(r=holesize/2, h=40, $fn=40);
}
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([holeoffx * holepitch, holeoffy * holepitch, -20])
+ HexGrid(0,imax,-jmin,2)
+ Hole();
HolesScope();
}
}