expanded rear conduit-grommet selection and tweaked removal bay trays
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of SBC Case Builder https://github.com/hominoids/SBC_Case_Builder
|
This file is part of SBC Case Builder https://github.com/hominoids/SBC_Case_Builder
|
||||||
Copyright 2022,2023,2024 Edward A. Kisiel hominoid@cablemi.com
|
Copyright 2025 Edward A. Kisiel hominoid@cablemi.com
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
NAME: case_rack
|
NAME: case_rack
|
||||||
DESCRIPTION: creates a 1u-2u rack case
|
DESCRIPTION: creates 1u-2u rack cases
|
||||||
TODO: none
|
TODO: none
|
||||||
|
|
||||||
USAGE: case_rack(case_design,side)
|
USAGE: case_rack(case_design,side)
|
||||||
@@ -99,39 +99,6 @@ if(case_design == "rack" && side == "bottom") {
|
|||||||
panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]);
|
panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// case lower assembly blocks
|
|
||||||
// rear left - left side
|
|
||||||
translate([150-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj])
|
|
||||||
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
// rear left - right side
|
|
||||||
translate([150-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj])
|
|
||||||
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
if(rack_width == 19) {
|
|
||||||
// rear right - right
|
|
||||||
translate([300-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj])
|
|
||||||
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
// rear right - left side
|
|
||||||
translate([300-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj])
|
|
||||||
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// front left - left
|
|
||||||
translate([150-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj,
|
|
||||||
floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
// front left - right
|
|
||||||
translate([150-gap-wallthick+rack_asm_gap,
|
|
||||||
depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj])
|
|
||||||
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
if(rack_width == 19) {
|
|
||||||
// front right - right
|
|
||||||
translate([300-gap-wallthick+rack_asm_gap,
|
|
||||||
depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj])
|
|
||||||
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
// front right - left
|
|
||||||
translate([300-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj,
|
|
||||||
floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// additive accessories
|
// additive accessories
|
||||||
if(accessory_name != "none") {
|
if(accessory_name != "none") {
|
||||||
for (i=[1:11:len(accessory_data[a[0]])-1]) {
|
for (i=[1:11:len(accessory_data[a[0]])-1]) {
|
||||||
@@ -154,56 +121,6 @@ if(case_design == "rack" && side == "bottom") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// case lower block assembly holes
|
|
||||||
// rear left
|
|
||||||
translate([150-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
|
||||||
// rear left nut
|
|
||||||
translate([150-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
|
||||||
// rear left recess
|
|
||||||
translate([150-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,-gap-adj+(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2);
|
|
||||||
// rear right
|
|
||||||
translate([300-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
|
||||||
// rear right nut
|
|
||||||
translate([300-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
|
||||||
// rear right recess
|
|
||||||
translate([300-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,-gap-adj+(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2);
|
|
||||||
// front left
|
|
||||||
translate([150-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
|
||||||
// front left nut
|
|
||||||
translate([150-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
|
||||||
// front left recess
|
|
||||||
translate([150-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2);
|
|
||||||
// front right
|
|
||||||
translate([300-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)+adj-(rack_asm_size/2),
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
|
||||||
// front right nut
|
|
||||||
translate([300-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
|
||||||
// front right recess
|
|
||||||
translate([300-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
|
||||||
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
|
||||||
cylinder(d=4*2/sqrt(3), h=2);
|
|
||||||
|
|
||||||
// pcb and multi-pcb standoff holes
|
// pcb and multi-pcb standoff holes
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
for(r = [0:len(rack_bay_sbc)-1]) {
|
||||||
if(rack_bay_sbc[r] != "empty" && rack_bay_face[r] != "removable") {
|
if(rack_bay_sbc[r] != "empty" && rack_bay_face[r] != "removable") {
|
||||||
@@ -725,10 +642,20 @@ if(case_design == "rack" && side == "bottom") {
|
|||||||
}
|
}
|
||||||
// rear grommet openings
|
// rear grommet openings
|
||||||
grommet_offset = -75+11;
|
grommet_offset = -75+11;
|
||||||
if(rack_bay_rear_conduit[r] == true) {
|
if(rack_bay_rear_conduit[r] == "grommet" || rack_bay_rear_conduit[r] == "grommets-vertical") {
|
||||||
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)+grommet_offset+4,depth-wallthick-gap,13])
|
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)+grommet_offset+4,depth-wallthick-gap,13])
|
||||||
grommet("front", "sleeve", 10, 4, wallthick, true, [true,10,0,"default"]);
|
grommet("front", "sleeve", 10, 4, wallthick, true, [true,10,0,"default"]);
|
||||||
}
|
}
|
||||||
|
if(rack_bay_rear_conduit[r] == "grommets-vertical") {
|
||||||
|
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)+grommet_offset+4,depth-wallthick-gap,30])
|
||||||
|
grommet("front", "sleeve", 10, 4, wallthick, true, [true,10,0,"default"]);
|
||||||
|
}
|
||||||
|
if(rack_bay_rear_conduit[r] == "conduit") {
|
||||||
|
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)+grommet_offset+1.5,depth-gap-wallthick+adj,5])
|
||||||
|
rotate([90,0,0]) slab([5,30,wallthick+2*adj],2.5);
|
||||||
|
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)+grommet_offset+4,depth-gap-wallthick+adj,30])
|
||||||
|
rotate([90,0,0]) cylinder(d=15, h=2*(wallthick+adj));
|
||||||
|
}
|
||||||
// front vent
|
// front vent
|
||||||
if(rack_bay_face[r] == "vent") {
|
if(rack_bay_face[r] == "vent") {
|
||||||
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)-75+14,-gap-adj,case_z-16])
|
translate([-gap-wallthick-1+rack_asm_gap/2+75*(r+1)-75+14,-gap-adj,case_z-16])
|
||||||
@@ -801,7 +728,6 @@ if(case_design == "rack" && side == "bottom") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// ui access panel
|
// ui access panel
|
||||||
if(bottom_access_panel_enable == true) {
|
if(bottom_access_panel_enable == true) {
|
||||||
@@ -854,34 +780,6 @@ if(case_design == "rack" && side == "bottom") {
|
|||||||
translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) rotate([0,0,rack_bay_rotation[r]])
|
translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) rotate([0,0,rack_bay_rotation[r]])
|
||||||
sbc(rack_bay_sbc[r], cooling, fan_size, gpio_opening, uart_opening, true);
|
sbc(rack_bay_sbc[r], cooling, fan_size, gpio_opening, uart_opening, true);
|
||||||
}
|
}
|
||||||
// indents
|
|
||||||
if(indents == true) {
|
|
||||||
for (i=[1:11:len(sbc_data[s[0]])-2]) {
|
|
||||||
class = sbc_data[s[0]][i+1];
|
|
||||||
type = sbc_data[s[0]][i+2];
|
|
||||||
pcbid = sbc_data[s[0]][i+3];
|
|
||||||
pcbloc_x = sbc_data[s[0]][i+4];
|
|
||||||
pcbloc_y = sbc_data[s[0]][i+5];
|
|
||||||
pcbloc_z = sbc_data[s[0]][i+6];
|
|
||||||
if(class == "pcb") {
|
|
||||||
for (i=[1:11:len(sbc_data[s[0]])-2]) {
|
|
||||||
class = sbc_data[s[0]][i+1];
|
|
||||||
type = sbc_data[s[0]][i+2];
|
|
||||||
id = sbc_data[s[0]][i+3];
|
|
||||||
loc_x = sbc_data[s[0]][i+4]+pcb_loc_x+pcbloc_x;
|
|
||||||
loc_y = sbc_data[s[0]][i+5]+pcb_loc_y+pcbloc_y;
|
|
||||||
loc_z = sbc_data[s[0]][i+6]+pcb_loc_z+pcbloc_z;
|
|
||||||
side = sbc_data[s[0]][i+7];
|
|
||||||
rotation = sbc_data[s[0]][i+8];
|
|
||||||
if(id == pcbid) {
|
|
||||||
indent(loc_x, loc_y, bottom_height+loc_z-adj, rotation[2], side, class,
|
|
||||||
type, wallthick, gap, floorthick, pcb_z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// case divide
|
// case divide
|
||||||
translate([150-gap-wallthick,-gap-wallthick-1,-adj]) cube([rack_asm_gap,depth+2,case_z+2*adj]);
|
translate([150-gap-wallthick,-gap-wallthick-1,-adj]) cube([rack_asm_gap,depth+2,case_z+2*adj]);
|
||||||
translate([300-gap-wallthick,-gap-wallthick-1,-adj]) cube([rack_asm_gap,depth+2,case_z+2*adj]);
|
translate([300-gap-wallthick,-gap-wallthick-1,-adj]) cube([rack_asm_gap,depth+2,case_z+2*adj]);
|
||||||
@@ -939,6 +837,90 @@ if(case_design == "rack" && side == "bottom") {
|
|||||||
floorthick], access_panel_orientation, [false,10,2,"default"]);
|
floorthick], access_panel_orientation, [false,10,2,"default"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// case lower assembly blocks
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
// rear left - left side
|
||||||
|
translate([150-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj])
|
||||||
|
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
// rear left - right side
|
||||||
|
translate([150-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj])
|
||||||
|
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
if(rack_width == 19) {
|
||||||
|
// rear right - right
|
||||||
|
translate([300-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj])
|
||||||
|
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
// rear right - left side
|
||||||
|
translate([300-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj])
|
||||||
|
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
}
|
||||||
|
// front left - left
|
||||||
|
translate([150-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj,
|
||||||
|
floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
// front left - right
|
||||||
|
translate([150-gap-wallthick+rack_asm_gap,
|
||||||
|
depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj])
|
||||||
|
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
if(rack_width == 19) {
|
||||||
|
// front right - right
|
||||||
|
translate([300-gap-wallthick+rack_asm_gap,
|
||||||
|
depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj])
|
||||||
|
cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
// front right - left
|
||||||
|
translate([300-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj,
|
||||||
|
floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// case lower block assembly holes
|
||||||
|
// rear left
|
||||||
|
translate([150-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
||||||
|
// rear left nut
|
||||||
|
translate([150-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
||||||
|
// rear left recess
|
||||||
|
translate([150-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,-gap-adj+(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2);
|
||||||
|
// rear right
|
||||||
|
translate([300-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
||||||
|
// rear right nut
|
||||||
|
translate([300-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
||||||
|
// rear right recess
|
||||||
|
translate([300-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,-gap-adj+(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2);
|
||||||
|
// front left
|
||||||
|
translate([150-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
||||||
|
// front left nut
|
||||||
|
translate([150-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
||||||
|
// front left recess
|
||||||
|
translate([150-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2);
|
||||||
|
// front right
|
||||||
|
translate([300-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)+adj-(rack_asm_size/2),
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
|
||||||
|
// front right nut
|
||||||
|
translate([300-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
|
||||||
|
// front right recess
|
||||||
|
translate([300-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
|
||||||
|
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
|
||||||
|
cylinder(d=4*2/sqrt(3), h=2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -968,12 +950,27 @@ module bay_tray(depth, bay) {
|
|||||||
translate([reminsert-4,(depth/2)-gap-wallthick+3.75,-adj])
|
translate([reminsert-4,(depth/2)-gap-wallthick+3.75,-adj])
|
||||||
cylinder(d=20, h=7);
|
cylinder(d=20, h=7);
|
||||||
}
|
}
|
||||||
// left assembly block opening
|
// rear assembly block opening
|
||||||
|
// rear left
|
||||||
translate([2-2*rack_asm_size,depth-wallthick-1.25,-adj])
|
translate([2-2*rack_asm_size,depth-wallthick-1.25,-adj])
|
||||||
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
||||||
// right assembly block opening
|
// rear middle
|
||||||
translate([2+baysize-2*rack_asm_size,depth-wallthick-1.25,-adj])
|
translate([2+baysize-2*rack_asm_size,depth-wallthick-1.25,-adj])
|
||||||
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
||||||
|
// rear right
|
||||||
|
translate([2+2*baysize-2*rack_asm_size+1.25-.25,depth-wallthick-1.25,-adj])
|
||||||
|
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
||||||
|
// front assembly block opening
|
||||||
|
// front left
|
||||||
|
translate([2-2*rack_asm_size,-gap,-adj])
|
||||||
|
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
||||||
|
// front middle
|
||||||
|
if((bay == 1 || bay) == 3 && reminsert/9 > 10)
|
||||||
|
translate([2+baysize-2*rack_asm_size,-gap,-adj])
|
||||||
|
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
||||||
|
// front right
|
||||||
|
translate([2+2*baysize-2*rack_asm_size+1.25-.25,-gap,-adj])
|
||||||
|
cube([.125+(2*rack_asm_size),rack_asm_size,rack_asm_size]);
|
||||||
|
|
||||||
// front vent
|
// front vent
|
||||||
if(rack_bay_face[bay] == "removable") {
|
if(rack_bay_face[bay] == "removable") {
|
||||||
|
|||||||
@@ -11048,19 +11048,19 @@
|
|||||||
"pcb_loc_y": "0",
|
"pcb_loc_y": "0",
|
||||||
"pcb_loc_z": "0",
|
"pcb_loc_z": "0",
|
||||||
"rack_bay1_face": "vent",
|
"rack_bay1_face": "vent",
|
||||||
"rack_bay1_rear_conduit": "true",
|
"rack_bay1_rear_conduit": "grommet",
|
||||||
"rack_bay1_rear_fan": "true",
|
"rack_bay1_rear_fan": "true",
|
||||||
"rack_bay1_rotation": "270",
|
"rack_bay1_rotation": "270",
|
||||||
"rack_bay1_wall": "false",
|
"rack_bay1_wall": "false",
|
||||||
"rack_bay1_xyz_loc": "[11, 0, 0]",
|
"rack_bay1_xyz_loc": "[11, 0, 0]",
|
||||||
"rack_bay2_face": "vent",
|
"rack_bay2_face": "vent",
|
||||||
"rack_bay2_rear_conduit": "true",
|
"rack_bay2_rear_conduit": "grommet",
|
||||||
"rack_bay2_rear_fan": "true",
|
"rack_bay2_rear_fan": "true",
|
||||||
"rack_bay2_rotation": "270",
|
"rack_bay2_rotation": "270",
|
||||||
"rack_bay2_wall": "false",
|
"rack_bay2_wall": "false",
|
||||||
"rack_bay2_xyz_loc": "[84, 0, 0]",
|
"rack_bay2_xyz_loc": "[84, 0, 0]",
|
||||||
"rack_bay3_face": "vent",
|
"rack_bay3_face": "vent",
|
||||||
"rack_bay3_rear_conduit": "true",
|
"rack_bay3_rear_conduit": "grommet",
|
||||||
"rack_bay3_rear_fan": "true",
|
"rack_bay3_rear_fan": "true",
|
||||||
"rack_bay3_rotation": "270",
|
"rack_bay3_rotation": "270",
|
||||||
"rack_bay3_wall": "false",
|
"rack_bay3_wall": "false",
|
||||||
@@ -11138,7 +11138,7 @@
|
|||||||
"Rack_Bay1": "c4",
|
"Rack_Bay1": "c4",
|
||||||
"Rack_Bay2": "c4",
|
"Rack_Bay2": "c4",
|
||||||
"Rack_Bay3": "c4",
|
"Rack_Bay3": "c4",
|
||||||
"Rack_Bay4": "empty",
|
"Rack_Bay4": "c4",
|
||||||
"Rack_Bay5": "c4",
|
"Rack_Bay5": "c4",
|
||||||
"Rack_Bay6": "c4",
|
"Rack_Bay6": "c4",
|
||||||
"access_panel_location": "[10, 15]",
|
"access_panel_location": "[10, 15]",
|
||||||
@@ -11308,41 +11308,41 @@
|
|||||||
"pcb_loc_x": "0",
|
"pcb_loc_x": "0",
|
||||||
"pcb_loc_y": "0",
|
"pcb_loc_y": "0",
|
||||||
"pcb_loc_z": "0",
|
"pcb_loc_z": "0",
|
||||||
"rack_bay1_face": "removable",
|
"rack_bay1_face": "vent",
|
||||||
"rack_bay1_rear_conduit": "true",
|
"rack_bay1_rear_conduit": "grommet",
|
||||||
"rack_bay1_rear_fan": "true",
|
"rack_bay1_rear_fan": "true",
|
||||||
"rack_bay1_rotation": "270",
|
"rack_bay1_rotation": "270",
|
||||||
"rack_bay1_wall": "true",
|
"rack_bay1_wall": "true",
|
||||||
"rack_bay1_xyz_loc": "[10, 0, 0]",
|
"rack_bay1_xyz_loc": "[13.5, 0, 0]",
|
||||||
"rack_bay2_face": "vent",
|
"rack_bay2_face": "vent",
|
||||||
"rack_bay2_rear_conduit": "true",
|
"rack_bay2_rear_conduit": "grommet",
|
||||||
"rack_bay2_rear_fan": "true",
|
"rack_bay2_rear_fan": "true",
|
||||||
"rack_bay2_rotation": "270",
|
"rack_bay2_rotation": "270",
|
||||||
"rack_bay2_wall": "true",
|
"rack_bay2_wall": "true",
|
||||||
"rack_bay2_xyz_loc": "[87, 0, 0]",
|
"rack_bay2_xyz_loc": "[88, 0, 0]",
|
||||||
"rack_bay3_face": "removable",
|
"rack_bay3_face": "vent",
|
||||||
"rack_bay3_rear_conduit": "true",
|
"rack_bay3_rear_conduit": "grommet",
|
||||||
"rack_bay3_rear_fan": "true",
|
"rack_bay3_rear_fan": "true",
|
||||||
"rack_bay3_rotation": "270",
|
"rack_bay3_rotation": "270",
|
||||||
"rack_bay3_wall": "false",
|
"rack_bay3_wall": "true",
|
||||||
"rack_bay3_xyz_loc": "[10, 0, 0]",
|
"rack_bay3_xyz_loc": "[163.5, 0, 0]",
|
||||||
"rack_bay4_face": "removable",
|
"rack_bay4_face": "vent",
|
||||||
"rack_bay4_rear_conduit": "true",
|
"rack_bay4_rear_conduit": "grommet",
|
||||||
"rack_bay4_rear_fan": "true",
|
"rack_bay4_rear_fan": "true",
|
||||||
"rack_bay4_rotation": "270",
|
"rack_bay4_rotation": "270",
|
||||||
"rack_bay4_wall": "true",
|
"rack_bay4_wall": "true",
|
||||||
"rack_bay4_xyz_loc": "[10, 0, 0]",
|
"rack_bay4_xyz_loc": "[238, 0, 0]",
|
||||||
"rack_bay5_face": "open",
|
"rack_bay5_face": "vent",
|
||||||
"rack_bay5_rear_conduit": "true",
|
"rack_bay5_rear_conduit": "grommet",
|
||||||
"rack_bay5_rear_fan": "true",
|
"rack_bay5_rear_fan": "true",
|
||||||
"rack_bay5_rotation": "270",
|
"rack_bay5_rotation": "270",
|
||||||
"rack_bay5_wall": "true",
|
"rack_bay5_wall": "true",
|
||||||
"rack_bay5_xyz_loc": "[313, 0, 0]",
|
"rack_bay5_xyz_loc": "[313.5, 0, 0]",
|
||||||
"rack_bay6_face": "fixed",
|
"rack_bay6_face": "vent",
|
||||||
"rack_bay6_rear_conduit": "true",
|
"rack_bay6_rear_conduit": "grommet",
|
||||||
"rack_bay6_rear_fan": "true",
|
"rack_bay6_rear_fan": "true",
|
||||||
"rack_bay6_rotation": "270",
|
"rack_bay6_rotation": "270",
|
||||||
"rack_bay6_xyz_loc": "[386, 0, 0]",
|
"rack_bay6_xyz_loc": "[386.5, 0, 0]",
|
||||||
"rack_size": "1u",
|
"rack_size": "1u",
|
||||||
"rack_width": "19",
|
"rack_width": "19",
|
||||||
"raise_top": "0",
|
"raise_top": "0",
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ rack_bay1_rotation = 0; // [0:90:270]
|
|||||||
rack_bay1_face = "vent"; //["open","fixed","removable","vent"]
|
rack_bay1_face = "vent"; //["open","fixed","removable","vent"]
|
||||||
rack_bay1_wall = false; // [true,false]
|
rack_bay1_wall = false; // [true,false]
|
||||||
rack_bay1_rear_fan = false; //[true,false]
|
rack_bay1_rear_fan = false; //[true,false]
|
||||||
rack_bay1_rear_conduit = false; //[true,false]
|
rack_bay1_rear_conduit = "grommet"; //["none","conduit","grommet","grommets-vertical"]
|
||||||
|
|
||||||
Rack_Bay2 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
Rack_Bay2 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
||||||
rack_bay2_xyz_loc = [0,0,0]; // [0:.5:450]
|
rack_bay2_xyz_loc = [0,0,0]; // [0:.5:450]
|
||||||
@@ -93,7 +93,7 @@ rack_bay2_rotation = 0; // [0:90:270]
|
|||||||
rack_bay2_face = "vent"; //["open","fixed","removable","vent"]
|
rack_bay2_face = "vent"; //["open","fixed","removable","vent"]
|
||||||
rack_bay2_wall = false; // [true,false]
|
rack_bay2_wall = false; // [true,false]
|
||||||
rack_bay2_rear_fan = false; //[true,false]
|
rack_bay2_rear_fan = false; //[true,false]
|
||||||
rack_bay2_rear_conduit = false; //[true,false]
|
rack_bay2_rear_conduit = "grommet"; //["none","conduit","grommet","grommets-vertical"]
|
||||||
|
|
||||||
Rack_Bay3 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
Rack_Bay3 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
||||||
rack_bay3_xyz_loc = [0,0,0]; // [0:.5:450]
|
rack_bay3_xyz_loc = [0,0,0]; // [0:.5:450]
|
||||||
@@ -101,7 +101,7 @@ rack_bay3_rotation = 0; // [0:90:270]
|
|||||||
rack_bay3_face = "vent"; //["open","fixed","removable","vent"]
|
rack_bay3_face = "vent"; //["open","fixed","removable","vent"]
|
||||||
rack_bay3_wall = false; // [true,false]
|
rack_bay3_wall = false; // [true,false]
|
||||||
rack_bay3_rear_fan = false; //[true,false]
|
rack_bay3_rear_fan = false; //[true,false]
|
||||||
rack_bay3_rear_conduit = false; //[true,false]
|
rack_bay3_rear_conduit = "grommet"; //["none","conduit","grommet","grommets-vertical"]
|
||||||
|
|
||||||
Rack_Bay4 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
Rack_Bay4 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
||||||
rack_bay4_xyz_loc = [0,0,0]; // [0:.5:450]
|
rack_bay4_xyz_loc = [0,0,0]; // [0:.5:450]
|
||||||
@@ -109,7 +109,7 @@ rack_bay4_rotation = 0; // [0:90:270]
|
|||||||
rack_bay4_face = "vent"; //["open","fixed","removable","vent"]
|
rack_bay4_face = "vent"; //["open","fixed","removable","vent"]
|
||||||
rack_bay4_wall = false; // [true,false]
|
rack_bay4_wall = false; // [true,false]
|
||||||
rack_bay4_rear_fan = false; //[true,false]
|
rack_bay4_rear_fan = false; //[true,false]
|
||||||
rack_bay4_rear_conduit = false; //[true,false]
|
rack_bay4_rear_conduit = "grommet"; //["none","conduit","grommet","grommets-vertical"]
|
||||||
|
|
||||||
Rack_Bay5 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
Rack_Bay5 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
||||||
rack_bay5_xyz_loc = [0,0,0]; // [0:.5:450]
|
rack_bay5_xyz_loc = [0,0,0]; // [0:.5:450]
|
||||||
@@ -117,14 +117,14 @@ rack_bay5_rotation = 0; // [0:90:270]
|
|||||||
rack_bay5_face = "vent"; //["open","fixed","removable","vent"]
|
rack_bay5_face = "vent"; //["open","fixed","removable","vent"]
|
||||||
rack_bay5_wall = false; // [true,false]
|
rack_bay5_wall = false; // [true,false]
|
||||||
rack_bay5_rear_fan = false; //[true,false]
|
rack_bay5_rear_fan = false; //[true,false]
|
||||||
rack_bay5_rear_conduit = false; //[true,false]
|
rack_bay5_rear_conduit = "grommet"; //["none","conduit","grommet","grommets-vertical"]
|
||||||
|
|
||||||
Rack_Bay6 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
Rack_Bay6 = "empty"; // ["empty", "c1+", "c2", "c4", "hc4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2l", "n2lq", "m1", "m1s", "m2", "h2", "h2+", "h3", "h3+", "h4", "h4+", "h4_ultra", "show2", "rpipico", "rpipicow", "rpicm4+ioboard", "rpicm1", "rpicm3", "rpicm3l", "rpicm3+", "rpicm4s", "rpicm4", "rpicm4l", "rpizero", "rpizerow", "rpizero2w", "rpi1a+", "rpi1b+", "rpi2b", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "a64", "a64lts", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "soedge_a-baseboard", "soedge_rk1808", "rock4a", "rock4b", "rock4a+", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b", "rock5bq", "rock5b+", "nio12l", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-2s", "tinkerboard-r2", "tinkerboard-r2s", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "opi5max", "jetsonnano", "lepotato", "sweetpotato", "tritium-h2+", "tritium-h3", "tritium-h5", "solitude", "alta", "atomicpi", "visionfive2", "visionfive2q", "bpif3", "milk-v_duos", "licheerv+dock", "rak19007", "cnano-avr128da48", "nodemcu-32s", "cs-solarmeter", "feather-m0_express", "feather-m0_wifi", "feather-m4_express"]
|
||||||
rack_bay6_xyz_loc = [0,0,0]; // [0:.5:450]
|
rack_bay6_xyz_loc = [0,0,0]; // [0:.5:450]
|
||||||
rack_bay6_rotation = 0; // [0:90:270]
|
rack_bay6_rotation = 0; // [0:90:270]
|
||||||
rack_bay6_face = "vent"; //["open","fixed","removable","vent"]
|
rack_bay6_face = "vent"; //["open","fixed","removable","vent"]
|
||||||
rack_bay6_rear_fan = false; //[true,false]
|
rack_bay6_rear_fan = false; //[true,false]
|
||||||
rack_bay6_rear_conduit = false; //[true,false]
|
rack_bay6_rear_conduit = "grommet"; //["none","conduit","grommet","grommets-vertical"]
|
||||||
|
|
||||||
/* [3D Case Adjustments] */
|
/* [3D Case Adjustments] */
|
||||||
// sbc location x axis
|
// sbc location x axis
|
||||||
@@ -611,22 +611,33 @@ if (view == "platter") {
|
|||||||
if(case_design == "rack") {
|
if(case_design == "rack") {
|
||||||
case_rack(case_design,"bottom");
|
case_rack(case_design,"bottom");
|
||||||
// rear fan covers
|
// rear fan covers
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
ucount = rack_width == 10 ? 3 : len(rack_bay_sbc)-1;
|
||||||
|
for(r = [0:ucount-1]) {
|
||||||
fan_offset = -75+(75-rear_fan_size)/2;
|
fan_offset = -75+(75-rear_fan_size)/2;
|
||||||
if(rack_bay_rear_fan[r] == true) {
|
if(rack_bay_rear_fan[r] == true) {
|
||||||
translate([-gap-wallthick-1+.125+75*(r+1)+fan_offset+8,
|
translate([-gap-wallthick-1+.125+75*(r+1)+fan_offset+8,
|
||||||
depth+10,(case_z-rear_fan_size)/2])
|
-80,(case_z-rear_fan_size)/2])
|
||||||
fan_cover(rear_fan_size, wallthick, rear_cooling);
|
fan_cover(rear_fan_size, wallthick, rear_cooling);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// rear grommets
|
// rear grommets
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
for(r = [0:len(rack_bay_sbc)-1]) {
|
||||||
grommet_offset = -75+11;
|
grommet_offset = -75+11;
|
||||||
if(rack_bay_rear_conduit[r] == true) {
|
if(rack_bay_rear_conduit[r] == "grommet") {
|
||||||
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,depth+30,0])
|
translate([0,-50,0]) rotate([270,0,0]) difference() {
|
||||||
color("lightgrey") grommet("bottom", "sleeve", 10, r+2, wallthick, true, [false,10,0,"default"]);
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,0,0])
|
||||||
|
grommet("bottom", "sleeve", 10, r+2, wallthick, false, [false,10,0,"default"]);
|
||||||
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset-10,-.125,-3]) cube([20,10,20]);
|
||||||
|
}
|
||||||
|
translate([0,-30,0]) rotate([270,0,0]) difference() {
|
||||||
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,0,0])
|
||||||
|
grommet("bottom", "sleeve", 10, r+2, wallthick, false, [false,10,0,"default"]);
|
||||||
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset-10,-.125,-3]) cube([20,10,20]);
|
||||||
|
}
|
||||||
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,-70,0])
|
||||||
|
grommet_clip("sleeve", 10, r+2, wallthick);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(case_design == "adapter_mini-stx_thin" || case_design == "adapter_mini-stx" || case_design == "adapter_mini-itx_thin" || case_design == "adapter_mini-itx" || case_design == "adapter_flex-atx" || case_design == "adapter_mini-dtx" || case_design == "adapter_dtx" || case_design == "adapter_micro-atx" || case_design == "adapter_atx" || case_design == "adapter_ssi-ceb" || case_design == "adapter_ssi-eeb") {
|
if(case_design == "adapter_mini-stx_thin" || case_design == "adapter_mini-stx" || case_design == "adapter_mini-itx_thin" || case_design == "adapter_mini-itx" || case_design == "adapter_flex-atx" || case_design == "adapter_mini-dtx" || case_design == "adapter_dtx" || case_design == "adapter_micro-atx" || case_design == "adapter_atx" || case_design == "adapter_ssi-ceb" || case_design == "adapter_ssi-eeb") {
|
||||||
color("dimgrey",1) case_adapter(case_design);
|
color("dimgrey",1) case_adapter(case_design);
|
||||||
@@ -1141,82 +1152,79 @@ if (view == "model") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ucount = rack_width == 10 ? 3 : len(rack_bay_sbc)-1;
|
||||||
// rear fan covers
|
// rear fan covers
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
for(r = [0:ucount-1]) {
|
||||||
fan_offset = -75+(75-rear_fan_size)/2;
|
fan_offset = -75+(75-rear_fan_size)/2;
|
||||||
if(rack_bay_rear_fan[r] == true) {
|
if(rack_bay_rear_fan[r] == true) {
|
||||||
translate([-gap-wallthick-1+.125+75*(r+1)+fan_offset+8,
|
translate([-gap-wallthick-1+.125+75*(r+1)+fan_offset+8,
|
||||||
depth-gap,(case_z-rear_fan_size)/2])
|
depth-gap,(case_z-rear_fan_size)/2])
|
||||||
rotate([90,0,0]) fan_cover(rear_fan_size, wallthick, rear_cooling);
|
rotate([90,0,0]) fan_cover(rear_fan_size, wallthick, rear_cooling);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// rear grommets
|
// rear grommets
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
grommet_offset = -75+11;
|
||||||
grommet_offset = -75+11;
|
if(rack_bay_rear_conduit[r] == "grommet" || rack_bay_rear_conduit[r] == "grommets-vertical") {
|
||||||
if(rack_bay_rear_conduit[r] == true) {
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset+4,depth-wallthick-gap,13])
|
||||||
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset+4,depth-wallthick-gap,13])
|
color("lightgrey") grommet("front", "sleeve", 10, 4, wallthick, true, [false,10,0,"default"]);
|
||||||
color("lightgrey") grommet("front", "sleeve", 10, 4, wallthick, true, [false,10,0,"default"]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// bay inserts
|
if(rack_bay_rear_conduit[r] == "grommets-vertical") {
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset+4,depth-wallthick-gap,30])
|
||||||
bayadj = r == 0 ? -74 : -75.5;
|
color("lightgrey") grommet("front", "sleeve", 10, 4, wallthick, true, [false,10,0,"default"]);
|
||||||
if(rack_bay_face[r] == "removable" && r ==0 && rack_bay_sbc[r] != "empty") {
|
|
||||||
color("gray") translate([bayadj+75*(r+1),0,floorthick])
|
|
||||||
bay_tray(depth-2*wallthick-gap-.5-tol,r);
|
|
||||||
}
|
|
||||||
// if(rack_bay_face[r] == "removable" && r !=0 && rack_bay_face[r-1] == "removable") {
|
|
||||||
// color("gray") translate([bayadj+75*(r+1),0,floorthick])
|
|
||||||
// bay_tray(depth-2*wallthick-gap-.5-tol,r);
|
|
||||||
// }
|
|
||||||
if(rack_bay_face[r] == "removable" && r !=0 && rack_bay_sbc[r] != "empty") {
|
|
||||||
color("gray") translate([bayadj+75*(r+1),0,floorthick])
|
|
||||||
bay_tray(depth-2*wallthick-gap-.5-tol,r);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(sbc_off == false) {
|
// bay inserts
|
||||||
for(i = [0:len(rack_bay_sbc)-1]) {
|
bayadj = r == 0 ? -74 : -75.5;
|
||||||
if(rack_bay_sbc[i] != "empty" && rack_bay_face[i] != "removable") {
|
if(rack_bay_face[r] == "removable" && r ==0 && rack_bay_sbc[r] != "empty") {
|
||||||
s = search([rack_bay_sbc[i]],sbc_data);
|
color("gray") translate([bayadj+75*(r+1),0,floorthick])
|
||||||
pcb_loc_z = rack_bay_xyz_loc[i][2];
|
bay_tray(depth-2*wallthick-gap-.5-tol,r);
|
||||||
pcb_id = sbc_data[s[0]][4];
|
}
|
||||||
pcb_width = sbc_data[s[0]][10][0];
|
if(rack_bay_face[r] == "removable" && r !=0 && rack_bay_sbc[r] != "empty") {
|
||||||
pcb_depth = sbc_data[s[0]][10][1];
|
color("gray") translate([bayadj+75*(r+1),0,floorthick])
|
||||||
pcb_z_orig = sbc_data[s[0]][10][2];
|
bay_tray(depth-2*wallthick-gap-.5-tol,r);
|
||||||
pcb_tmaxz = sbc_data[s[0]][11][5];
|
}
|
||||||
pcb_bmaxz = sbc_data[s[0]][11][6];
|
}
|
||||||
pcb_color = sbc_data[s[0]][11][1];
|
if(sbc_off == false) {
|
||||||
pcb_radius = sbc_data[s[0]][11][0];
|
for(i = [0:len(rack_bay_sbc)-1]) {
|
||||||
|
if(rack_bay_sbc[i] != "empty" && rack_bay_face[i] != "removable") {
|
||||||
|
s = search([rack_bay_sbc[i]],sbc_data);
|
||||||
|
pcb_loc_z = rack_bay_xyz_loc[i][2];
|
||||||
|
pcb_id = sbc_data[s[0]][4];
|
||||||
|
pcb_width = sbc_data[s[0]][10][0];
|
||||||
|
pcb_depth = sbc_data[s[0]][10][1];
|
||||||
|
pcb_z_orig = sbc_data[s[0]][10][2];
|
||||||
|
pcb_tmaxz = sbc_data[s[0]][11][5];
|
||||||
|
pcb_bmaxz = sbc_data[s[0]][11][6];
|
||||||
|
pcb_color = sbc_data[s[0]][11][1];
|
||||||
|
pcb_radius = sbc_data[s[0]][11][0];
|
||||||
|
|
||||||
pcb_loc_x = rack_bay_rotation[i] == 90 ? rack_bay_xyz_loc[i][0] + pcb_width : rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][0] + pcb_width : rack_bay_xyz_loc[i][0];
|
pcb_loc_x = rack_bay_rotation[i] == 90 ? rack_bay_xyz_loc[i][0] + pcb_width : rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][0] + pcb_width : rack_bay_xyz_loc[i][0];
|
||||||
pcb_loc_y = rack_bay_rotation[i] == 270 ? rack_bay_xyz_loc[i][1]+pcb_width : rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][1]+pcb_depth : rack_bay_xyz_loc[i][1];
|
pcb_loc_y = rack_bay_rotation[i] == 270 ? rack_bay_xyz_loc[i][1]+pcb_width : rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][1]+pcb_depth : rack_bay_xyz_loc[i][1];
|
||||||
translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj])
|
translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj])
|
||||||
rotate([0,0,rack_bay_rotation[i]])
|
rotate([0,0,rack_bay_rotation[i]])
|
||||||
sbc(rack_bay_sbc[i], cooling, fan_size, gpio_opening, uart_opening, false);
|
sbc(rack_bay_sbc[i], cooling, fan_size, gpio_opening, uart_opening, false);
|
||||||
}
|
}
|
||||||
if(rack_bay_sbc[i] != "empty" && rack_bay_face[i] == "removable") {
|
if(rack_bay_sbc[i] != "empty" && rack_bay_face[i] == "removable") {
|
||||||
bayadj = i == 0 ? -74 : -75.5;
|
bayadj = i == 0 ? -74 : -75.5;
|
||||||
s = search([rack_bay_sbc[i]],sbc_data);
|
s = search([rack_bay_sbc[i]],sbc_data);
|
||||||
pcb_loc_z = rack_bay_xyz_loc[i][2];
|
pcb_loc_z = rack_bay_xyz_loc[i][2];
|
||||||
pcb_id = sbc_data[s[0]][4];
|
pcb_id = sbc_data[s[0]][4];
|
||||||
pcb_width = sbc_data[s[0]][10][0];
|
pcb_width = sbc_data[s[0]][10][0];
|
||||||
pcb_depth = sbc_data[s[0]][10][1];
|
pcb_depth = sbc_data[s[0]][10][1];
|
||||||
pcb_z_orig = sbc_data[s[0]][10][2];
|
pcb_z_orig = sbc_data[s[0]][10][2];
|
||||||
pcb_tmaxz = sbc_data[s[0]][11][5];
|
pcb_tmaxz = sbc_data[s[0]][11][5];
|
||||||
pcb_bmaxz = sbc_data[s[0]][11][6];
|
pcb_bmaxz = sbc_data[s[0]][11][6];
|
||||||
pcb_color = sbc_data[s[0]][11][1];
|
pcb_color = sbc_data[s[0]][11][1];
|
||||||
pcb_radius = sbc_data[s[0]][11][0];
|
pcb_radius = sbc_data[s[0]][11][0];
|
||||||
|
|
||||||
pcb_loc_x = rack_bay_rotation[i] == 90 ? rack_bay_xyz_loc[i][0] + pcb_width :
|
pcb_loc_x = rack_bay_rotation[i] == 90 ? rack_bay_xyz_loc[i][0] + pcb_width :
|
||||||
rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][0] + pcb_width :
|
rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][0] + pcb_width :
|
||||||
rack_bay_xyz_loc[i][0];
|
rack_bay_xyz_loc[i][0];
|
||||||
pcb_loc_y = rack_bay_rotation[i] == 270 ? rack_bay_xyz_loc[i][1]+pcb_width :
|
pcb_loc_y = rack_bay_rotation[i] == 270 ? rack_bay_xyz_loc[i][1]+pcb_width :
|
||||||
rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][1]+pcb_depth :
|
rack_bay_rotation[i] == 180 ? rack_bay_xyz_loc[i][1]+pcb_depth :
|
||||||
rack_bay_xyz_loc[i][1];
|
rack_bay_xyz_loc[i][1];
|
||||||
|
|
||||||
translate([pcb_loc_x+bayadj+75*(i+1) ,pcb_loc_y+wallthick+gap,
|
translate([pcb_loc_x+bayadj+75*(i+1) ,pcb_loc_y+wallthick+gap,
|
||||||
bottom_height-pcb_z+pcb_loc_z-adj+floorthick]) rotate([0,0,rack_bay_rotation[i]])
|
bottom_height-pcb_z+pcb_loc_z-adj+floorthick]) rotate([0,0,rack_bay_rotation[i]])
|
||||||
sbc(rack_bay_sbc[i], cooling, fan_size, gpio_opening, uart_opening, false);
|
sbc(rack_bay_sbc[i], cooling, fan_size, gpio_opening, uart_opening, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1435,7 +1443,8 @@ if (view == "part") {
|
|||||||
}
|
}
|
||||||
if(case_design == "rack") {
|
if(case_design == "rack") {
|
||||||
// rear fan covers
|
// rear fan covers
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
ucount = rack_width == 10 ? 3 : len(rack_bay_sbc)-1;
|
||||||
|
for(r = [0:ucount-1]) {
|
||||||
fan_offset = -75+(75-rear_fan_size)/2;
|
fan_offset = -75+(75-rear_fan_size)/2;
|
||||||
if(rack_bay_rear_fan[r] == true) {
|
if(rack_bay_rear_fan[r] == true) {
|
||||||
translate([-gap-wallthick-1+.125+75*(r+1)+fan_offset+8,0,0])
|
translate([-gap-wallthick-1+.125+75*(r+1)+fan_offset+8,0,0])
|
||||||
@@ -1445,7 +1454,7 @@ if (view == "part") {
|
|||||||
// rear grommets
|
// rear grommets
|
||||||
for(r = [0:len(rack_bay_sbc)-1]) {
|
for(r = [0:len(rack_bay_sbc)-1]) {
|
||||||
grommet_offset = -75+11;
|
grommet_offset = -75+11;
|
||||||
if(rack_bay_rear_conduit[r] == true) {
|
if(rack_bay_rear_conduit[r] == "grommet") {
|
||||||
translate([0,0,0]) rotate([270,0,0]) difference() {
|
translate([0,0,0]) rotate([270,0,0]) difference() {
|
||||||
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,0,0])
|
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,0,0])
|
||||||
grommet("bottom", "sleeve", 10, r+2, wallthick, false, [false,10,0,"default"]);
|
grommet("bottom", "sleeve", 10, r+2, wallthick, false, [false,10,0,"default"]);
|
||||||
|
|||||||
Reference in New Issue
Block a user