+
+ // lid top
+ translate([-lid_top_wall, -lid_side_wall, -lid_front_wall])
+ cube([lid_top_wall, lid_inner_w/2 + 10, lid_front_wall + lid_inner_max_h]);
+}
+
+module PegProfile(){
+ polygon([[-peg_engage_depth, (peg_engage_dia - peg_outer_slop)/2],
+ [0, (peg_engage_dia - peg_outer_slop)/2],
+ [0, (peg_main_dia - peg_outer_slop)/2],
+ [peg_straight_len, (peg_main_dia - peg_outer_slop)/2],
+ [peg_main_height, (peg_max_dia - peg_outer_slop)/2],
+ [peg_main_height+peg_top_thick, (peg_max_dia - peg_outer_slop)/2],
+ [peg_main_height+peg_top_thick, (peg_inner_dia + peg_inner_slop)/2],
+ [-peg_engage_depth, (peg_inner_dia + peg_inner_slop)/2]]);
+}
+
+module Peg(){
+ rotate_extrude($fn=50)
+ rotate([0,0,-90])
+ PegProfile();
+}
+
+module AtFixingCentres(){
+ for (fc=[-1,+1]) {
+ translate([patbox_side/2 + fc*patbox_centres/2,
+ patbox_side/2,
+ 0])
+ children();
+ }
+}
+
+module TopPattressBox(){
+ difference(){
+ translate([0,0, -lid_thinbox_h])
+ cube([patbox_side, patbox_side, lid_thinbox_h]);
+ AtFixingCentres(){
+ translate([0,0,-10]) cylinder(r=peg_engage_dia/2, h=20);
+ }
+ }
+}
+
+module Demo(){
+ translate([0, -lid_inner_w/2, 0]) LidSide();
+ translate([0,0, lid_fatbox_h])
+ rotate([0,180,0]) translate([0, -patbox_side/2, 0])
+ rotate([0,0,90]) union(){
+ %TopPattressBox();
+ color("blue") AtFixingCentres(){
+ rotate([180,0,0]) Peg();
+ }
+ }