+
+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));
+ linextr(0, psu_initial_layer_thick) {
+ 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;
+
+ PsuMountTestFullLayerFrame(2);
+
+ difference(){
+ translate([0,0, ceil])
+ PsuMountTest();
+ }
+}
+
+module PsuMountTestFullOneLayer(ix) {
+ PsuMountTestFullLayerFrame(ix);
+ linextr(0, psu_initial_layer_thick) {
+ translate([0, psu_y]) children();
+ }
+}
+
+module PsuMountTestFullText() { ////toplevel
+ PsuMountTestFullOneLayer(0)
+ PsuLedLegendsPlan();
+}
+module PsuMountTestFullWindows() { ////toplevel
+ PsuMountTestFullLayerFrame(1);
+ translate([0, psu_y, psu_z + psu_test_ceil])
+ PsuLedWindowsWindows(psu_test_ceil);
+}
+
+module PsuMountTestFullDemo() { ////toplevel
+ color("blue") PsuMountTestFullMain();
+ color("yellow") PsuMountTestFullText();
+ %PsuMountTestFullWindows();
+}