added individual standoff control for rack case, fixed, open and removable bays

This commit is contained in:
Edward Kisiel
2025-05-16 11:56:58 -04:00
parent 1c64305276
commit 728b8398f9
2 changed files with 14 additions and 13 deletions

View File

@@ -150,7 +150,7 @@ if(case_design == "rack" && side == "bottom") {
rack_bay_rotation[r] == 180 ? rack_bay_xyz_loc[r][1]+pcb_depth : rack_bay_xyz_loc[r][1]; rack_bay_rotation[r] == 180 ? rack_bay_xyz_loc[r][1]+pcb_depth : rack_bay_xyz_loc[r][1];
pcb_loc_z = rack_bay_xyz_loc[r][2]; pcb_loc_z = rack_bay_xyz_loc[r][2];
translate([pcb_loc_x,pcb_loc_y,pcb_loc_z]) rotate([0,0,rack_bay_rotation[r]]) union() { translate([pcb_loc_x,pcb_loc_y,0]) rotate([0,0,rack_bay_rotation[r]]) union() {
// pcb standoff holes // pcb standoff holes
if(sbc_bottom_standoffs == true) { if(sbc_bottom_standoffs == true) {
for (i=[1:11:len(sbc_data[s[0]])-2]) { for (i=[1:11:len(sbc_data[s[0]])-2]) {
@@ -307,7 +307,7 @@ if(case_design == "rack" && side == "bottom") {
rack_bay_rotation[r] == 180 ? rack_bay_xyz_loc[r][1]+pcb_depth : rack_bay_xyz_loc[r][1]; rack_bay_rotation[r] == 180 ? rack_bay_xyz_loc[r][1]+pcb_depth : rack_bay_xyz_loc[r][1];
pcb_loc_z = rack_bay_xyz_loc[r][2]; pcb_loc_z = rack_bay_xyz_loc[r][2];
translate([pcb_loc_x,pcb_loc_y,pcb_loc_z]) rotate([0,0,rack_bay_rotation[r]]) union() { translate([pcb_loc_x,pcb_loc_y,0]) rotate([0,0,rack_bay_rotation[r]]) union() {
// primary pcb standoffs // primary pcb standoffs
if(sbc_bottom_standoffs == true) { if(sbc_bottom_standoffs == true) {
for (i=[1:11:len(sbc_data[s[0]])-2]) { for (i=[1:11:len(sbc_data[s[0]])-2]) {
@@ -988,7 +988,7 @@ module bay_tray(depth, bay) {
rack_bay_rotation[bay] == 180 ? rack_bay_xyz_loc[bay][1]+pcb_depth : rack_bay_xyz_loc[bay][1]; rack_bay_rotation[bay] == 180 ? rack_bay_xyz_loc[bay][1]+pcb_depth : rack_bay_xyz_loc[bay][1];
pcb_loc_z = rack_bay_xyz_loc[bay][2]; pcb_loc_z = rack_bay_xyz_loc[bay][2];
translate([pcb_loc_x,pcb_loc_y+floorthick+gap,pcb_loc_z]) rotate([0,0,rack_bay_rotation[bay]]) union() { translate([pcb_loc_x,pcb_loc_y+wallthick+gap,0]) rotate([0,0,rack_bay_rotation[bay]]) union() {
// pcb standoff holes // pcb standoff holes
if(sbc_bottom_standoffs == true) { if(sbc_bottom_standoffs == true) {
for (i=[1:11:len(sbc_data[s[0]])-2]) { for (i=[1:11:len(sbc_data[s[0]])-2]) {
@@ -1107,7 +1107,7 @@ module bay_tray(depth, bay) {
rack_bay_rotation[bay] == 180 ? rack_bay_xyz_loc[bay][1]+pcb_depth : rack_bay_xyz_loc[bay][1]; rack_bay_rotation[bay] == 180 ? rack_bay_xyz_loc[bay][1]+pcb_depth : rack_bay_xyz_loc[bay][1];
pcb_loc_z = rack_bay_xyz_loc[bay][2]; pcb_loc_z = rack_bay_xyz_loc[bay][2];
translate([pcb_loc_x,pcb_loc_y+floorthick+gap,pcb_loc_z]) rotate([0,0,rack_bay_rotation[bay]]) union() { translate([pcb_loc_x,pcb_loc_y+wallthick+gap,0]) rotate([0,0,rack_bay_rotation[bay]]) union() {
// primary pcb standoffs // primary pcb standoffs
if(sbc_bottom_standoffs == true) { if(sbc_bottom_standoffs == true) {
for (i=[1:11:len(sbc_data[s[0]])-2]) { for (i=[1:11:len(sbc_data[s[0]])-2]) {

View File

@@ -534,12 +534,12 @@ multipcb_bottom_standoff = [multipcb_bottom_standoff_size,
multipcb_bottom_standoff_insert_height]; multipcb_bottom_standoff_insert_height];
rack_bay_sbc = [Rack_Bay1,Rack_Bay2,Rack_Bay3,Rack_Bay4,Rack_Bay5,Rack_Bay6]; rack_bay_sbc = [Rack_Bay1,Rack_Bay2,Rack_Bay3,Rack_Bay4,Rack_Bay5,Rack_Bay6];
rack_bay_xyz_loc = [[rack_bay1_xyz_loc[0],rack_bay1_xyz_loc[1],0], rack_bay_xyz_loc = [[rack_bay1_xyz_loc[0],rack_bay1_xyz_loc[1],rack_bay1_xyz_loc[2]],
[rack_bay2_xyz_loc[0],rack_bay2_xyz_loc[1],0], [rack_bay2_xyz_loc[0],rack_bay2_xyz_loc[1],rack_bay2_xyz_loc[2]],
[rack_bay3_xyz_loc[0],rack_bay3_xyz_loc[1],0], [rack_bay3_xyz_loc[0],rack_bay3_xyz_loc[1],rack_bay3_xyz_loc[2]],
[rack_bay4_xyz_loc[0],rack_bay4_xyz_loc[1],0], [rack_bay4_xyz_loc[0],rack_bay4_xyz_loc[1],rack_bay4_xyz_loc[2]],
[rack_bay5_xyz_loc[0],rack_bay5_xyz_loc[1],0], [rack_bay5_xyz_loc[0],rack_bay5_xyz_loc[1],rack_bay5_xyz_loc[2]],
[rack_bay6_xyz_loc[0],rack_bay6_xyz_loc[1],0]]; [rack_bay6_xyz_loc[0],rack_bay6_xyz_loc[1],rack_bay6_xyz_loc[2]]];
rack_bay_rotation = [rack_bay1_rotation, rack_bay2_rotation, rack_bay3_rotation, rack_bay4_rotation, rack_bay5_rotation, rack_bay6_rotation]; rack_bay_rotation = [rack_bay1_rotation, rack_bay2_rotation, rack_bay3_rotation, rack_bay4_rotation, rack_bay5_rotation, rack_bay6_rotation];
rack_bay_face = [rack_bay1_face, rack_bay2_face, rack_bay3_face, rack_bay4_face, rack_bay5_face, rack_bay6_face]; rack_bay_face = [rack_bay1_face, rack_bay2_face, rack_bay3_face, rack_bay4_face, rack_bay5_face, rack_bay6_face];
@@ -1172,7 +1172,7 @@ if (view == "model") {
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 // bay inserts
bayadj = r == 0 ? -74 : -75.5; bayadj = r == 0 ? -74 : -75.5;
if(rack_bay_face[r] == "removable" && r ==0 && rack_bay_sbc[r] != "empty") { if(rack_bay_face[r] == "removable" && r ==0 && rack_bay_sbc[r] != "empty") {
color("gray") translate([bayadj+75*(r+1),0,floorthick]) color("gray") translate([bayadj+75*(r+1),0,floorthick])
@@ -1187,7 +1187,6 @@ if (view == "model") {
for(i = [0:len(rack_bay_sbc)-1]) { for(i = [0:len(rack_bay_sbc)-1]) {
if(rack_bay_sbc[i] != "empty" && rack_bay_face[i] != "removable") { if(rack_bay_sbc[i] != "empty" && rack_bay_face[i] != "removable") {
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_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];
@@ -1199,6 +1198,8 @@ if (view == "model") {
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];
pcb_loc_z = rack_bay_xyz_loc[i][2];
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);
@@ -1206,7 +1207,6 @@ if (view == "model") {
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_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];
@@ -1222,6 +1222,7 @@ if (view == "model") {
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];
pcb_loc_z = rack_bay_xyz_loc[i][2];
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]])