for sbc wider then 100mm, added option to center hd positions on x axis using dual spacers

This commit is contained in:
Edward Kisiel
2025-04-17 21:40:52 -04:00
parent 2eea918f4f
commit 5d0242ff1c
3 changed files with 126 additions and 35 deletions

View File

@@ -148,12 +148,25 @@ module case_side(case_design, side) {
cube([sidethick+(2*adj),wallthick,10]);
}
if(rear_fan == 1 || rear_fan == 2) {
translate([-1+(101.6-rear_fan_size)/2,-1,rear_fan_position])
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
if(rear_fan_center == false) {
translate([-1+(101.6-rear_fan_size)/2,-1,rear_fan_position])
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
}
if(rear_fan_center == true) {
translate([-1+(101.6-rear_fan_size)/2+(width-2*(sidethick+gap)-101.6)/2,-1,rear_fan_position])
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
}
}
if(rear_fan == 2) {
translate([-1+(101.6-rear_fan_size)/2,-1,rear_fan_position+3+rear_fan_size])
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
if(rear_fan_center == false) {
translate([-1+(101.6-rear_fan_size)/2,-1,rear_fan_position+rear_dualfan_spacing+rear_fan_size])
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
}
if(rear_fan_center == true) {
translate([-1+(101.6-rear_fan_size)/2+(width-2*(sidethick+gap)-101.6)/2,
-1,rear_fan_position+rear_dualfan_spacing+rear_fan_size])
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
}
}
}
}

View File

@@ -9686,6 +9686,7 @@
"gap": "1",
"gpio_opening": "default",
"hd_bays": "2",
"hd_reverse": "false",
"hd_space": "10",
"hd_y_position": "40",
"hd_z_position": "55",
@@ -9753,7 +9754,9 @@
"pcb_loc_z": "0",
"raise_top": "0",
"rear_cooling": "fan_hex",
"rear_dualfan_spacing": "6",
"rear_fan": "1",
"rear_fan_center": "false",
"rear_fan_position": "42",
"rear_fan_size": "80",
"rear_io_shield": "false",
@@ -9967,7 +9970,9 @@
"pcb_loc_z": "0",
"raise_top": "0",
"rear_cooling": "fan_hex",
"rear_dualfan_spacing": "6",
"rear_fan": "1",
"rear_fan_center": "false",
"rear_fan_position": "4",
"rear_fan_size": "80",
"rear_io_shield": "false",
@@ -10113,6 +10118,7 @@
"gap": "1",
"gpio_opening": "none",
"hd_bays": "4",
"hd_center": "true",
"hd_reverse": "true",
"hd_space": "10",
"hd_y_position": "16",
@@ -10181,7 +10187,9 @@
"pcb_loc_z": "0",
"raise_top": "0",
"rear_cooling": "fan_hex",
"rear_dualfan_spacing": "4",
"rear_fan": "2",
"rear_fan_center": "true",
"rear_fan_position": "4",
"rear_fan_size": "80",
"rear_io_shield": "false",

View File

@@ -113,10 +113,13 @@ cooling = "default"; // [default,none,open,fan_open,fan_1,fan_2,fan_hex,vent,ven
fan_size = 0; // [0,25,30,40,50,60,70,80,92]
// rear fan number for nas cases
rear_fan = 1; // [1:2]
// rear fan x-axis center
rear_fan_center = false; // [true,false]
// rear fan opening
rear_cooling = "fan_hex"; // [fan_open,fan_1,fan_2,fan_hex,custom]
rear_fan_size = 80; // [0,25,30,40,50,60,70,80,92]
rear_fan_position = 0; // [0:1:300]
rear_dualfan_spacing = 6; // [0:1:50]
/* [Bottom Access Panel] */
bottom_access_panel_enable = false;
@@ -136,6 +139,8 @@ indents = true;
nas_sbc_location = "top"; // ["top","bottom"]
// rotate hd 180 degrees in the z-axis
hd_reverse = false; // [true, false]
// center hd in the x-axis
hd_center = false; // [true, false]
// number of nas drive bays
hd_bays = 2; // [1:6]
hd_y_position = 25; // [0:300]
@@ -379,6 +384,7 @@ bottom_height = (case_design == "tray" || case_design == "tray_vu5" || case_desi
case_z = case_design == "panel_nas" ? bottom_height+top_height+hd_z_position+(hd_bays * (hd_space + 26.1)) : bottom_height+top_height;
case_diameter = sqrt(pow(width-wallthick-gap,2)+pow(depth-wallthick-gap,2));
hex_diameter = sqrt(pow(width+2*(wallthick+gap),2)+pow(depth+2*(wallthick+gap),2));
hd_spacer = case_design == "panel_nas" ? (width-2*(sidethick+gap)-101.6) : 0;
/* [Hidden] */
top_standoff = [top_standoff_size,
@@ -675,44 +681,107 @@ if (view == "model") {
}
for( i=[0:1:hd_bays-1]) {
if(hd_reverse == false) {
translate([-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i])
hd35("portrait", [false,0,0,"default"]);
if(pcb_width > 100) {
translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,
28.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4);
if(hd_center == false) {
translate([-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i])
hd35("portrait", [false,0,0,"default"]);
if(pcb_width > 100) {
translate([101.6-gap+wallthick+hd_spacer-11.4,
28.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,
-31-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-31-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,
-73-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-73-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
}
}
if(hd_center == true) {
translate([-gap+hd_spacer/2,
-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i])
hd35("portrait", [false,0,0,"default"]);
if(pcb_width > 100) {
translate([101.6-gap+wallthick+hd_spacer-11.4,
28.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-31-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-73-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
}
}
}
else {
translate([-gap+101.6,-(3*wallthick)-gap+hd_y_position+147,
hd_z_position+(hd_space+27.1)*i])
rotate([0,0,180]) hd35("portrait", [false,0,0,"default"]);
if(pcb_width > 100) {
translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,
17-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4);
if(hd_center == false) {
translate([-gap+101.6,-(3*wallthick)-gap+hd_y_position+147,
hd_z_position+(hd_space+27.1)*i])
rotate([0,0,180]) hd35("portrait", [false,0,0,"default"]);
if(pcb_width > 100) {
translate([101.6-gap+wallthick+hd_spacer-11.4,
17-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,
-25-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-25-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,
-84.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-84.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer-9.4);
}
}
if(hd_center == true) {
translate([-gap+101.6+hd_spacer/2,
-(3*wallthick)-gap+hd_y_position+147,
hd_z_position+(hd_space+27.1)*i])
rotate([0,0,180]) hd35("portrait", [false,0,0,"default"]);
if(pcb_width > 100) {
// right side spacers
translate([101.6-gap+wallthick+hd_spacer-11.4,
17-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer/2-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-25-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer/2-9.4);
translate([101.6-gap+wallthick+hd_spacer-11.4,
-84.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i])
cableholder_spacer(hd_spacer/2-9.4);
// left side spacers
translate([-(hd_spacer/2-9.4)-gap+hd_spacer/2,
17-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i]) rotate([0,0,180])
cableholder_spacer(hd_spacer/2-9.4);
translate([-(hd_spacer/2-9.4)-gap+hd_spacer/2,
-25-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i]) rotate([0,0,180])
cableholder_spacer(hd_spacer/2-9.4);
translate([-(hd_spacer/2-9.4)-gap+hd_spacer/2,
-84.5-(3*wallthick)-gap+hd_y_position+101.6,
hd_z_position+6.5+(hd_space+27.1)*i]) rotate([0,0,180])
cableholder_spacer(hd_spacer/2-9.4);
}
}
}
}
@@ -1086,6 +1155,7 @@ if(case_design == "tray" || case_design == "tray_vu5" || case_design == "tray_vu
else {
if(case_design == "panel_nas") {
echo(width=width+(101.6-width+(2*sidethick)),depth=depth,top=top_height,bottom=bottom_height, height=case_z+(3*wallthick));
echo(drive_spacer=hd_spacer);
}
else {
echo(width=width,depth=depth,top=top_height,bottom=bottom_height);