+ ystride = front_hex_stride;
+ xstride = front_hex_stride * cos(30) * 2;
+
+ difference(){
+ square([front_width, totalh]);
+ translate([ front_surround_lr,
+ eclip_recept_height ])
+ square([ front_width - front_surround_lr*2,
+ totalh - eclip_recept_height*2
+ ]);
+ }
+
+ difference(){
+ square([front_width, totalh]);
+ for (xi=[ -5 : 5 ]) {
+ translate([front_width/2 +
+ xi * xstride,
+ 0]) {
+ for (yi=[ 0 : 10 ]) {
+ //echo(yi);
+ translate([0, yi * ystride +
+ front_hex_dia*front_hex_y_fudge]) {
+ for (dv=[ [0,0],
+ [-xstride/2, -ystride/2]
+ ])
+ translate(dv)
+ circle(r= front_hex_dia/2, $fn=6);
+ }
+ }
+ }
+ }
+ }
+}
+
+module Front(){
+ ObjectJoins(1);
+ rotate([0, 90-beta, 0])
+ translate([0, 0, ppxl])
+ rotate([0,0,90]) {
+ linear_extrude(height=thicks[1])
+ FrontPattern();
+ }
+}
+
+module Back(){
+ ObjectJoins(2);
+
+ zmin = pr[1];
+ zmax = pq[1] + eclip_prong_th;
+ height = zmax - zmin;
+
+ translate([pr[0] + eclip_wall_offset - thicks[2],
+ 0, 0])
+ rotate([0,90,0])
+ rotate([0,0,90]) {
+ difference(){
+ cube([front_width,
+ height,
+ thicks[2]]);
+ translate([back_pillarw,
+ eclip_recept_height,
+ -10])
+ cube([front_width - back_pillarw*2,
+ height - eclip_recept_height*2 - eclip_prong_th,
+ 20]);
+ }
+ }
+}
+
+module BackPrint(){ ////toplevel
+ rotate([0,-90,0]) Back();
+}
+
+module FrontPrint(){ ////toplevel
+ rotate([0, 90+beta, 0]) Front();
+}
+
+module BasePrint(){ ////toplevel