+ translate([0, psu_y, psu_z])
+ PsuMountWindowsNegative();
+ }
+}
+
+psu_multicolour_gap = 0.075;
+psu_initial_layer_thick = 0.400;
+psu_initial_layer_width = 0.750;
+psu_window_ledge = 0.50; // each side
+
+psu_frame_gap = 1.0;
+
+module PsuMountLayerFrame(bl, tr, ix) {
+ gap0 = [1,1] * (psu_frame_gap + psu_initial_layer_width*(ix+0));
+ gap1 = [1,1] * (psu_frame_gap + psu_initial_layer_width*(ix+1));
+ difference(){
+ rectfromto(bl-gap1, tr+gap1);
+ rectfromto(bl-gap0, tr+gap0);
+ }
+}
+
+module PsuMountTestFullLayerFrame(ix) {
+ PsuMountLayerFrame([-0.5 * psu_mount_outer_sz_x, 0],
+ [+0.5 * psu_mount_outer_sz_x,
+ psu_mount_outer_sz_y],
+ ix);
+}
+
+module PsuMountTestFullMain() { ////toplevel
+ ceil = psu_test_ceil;
+
+ linextr(0, psu_initial_layer_thick)
+ PsuMountTestFullLayerFrame(2);
+
+ difference(){
+ translate([0,0, ceil])
+ PsuMountTest();
+
+ translate([0, psu_y, 0]) {
+ linextr(-1, psu_initial_layer_thick) {
+ offset(delta=psu_window_ledge + psu_multicolour_gap)
+ PsuLedWindowsPlan();
+ offset(delta=psu_multicolour_gap)
+ PsuLedLegendsPlan();
+ }