initial standoff support for multiple secondary pcb assemblies

This commit is contained in:
Edward Kisiel
2024-05-30 20:57:40 -04:00
parent a151de9575
commit 9511f0263b
5 changed files with 532 additions and 94 deletions

View File

@@ -384,25 +384,63 @@ echo(pcb_depth+case_offset_y-10);
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_rear" &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "left_rear" &&
bottom_rear_left_enable == true && bottom_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=bottom_standoff[4]-.2, h=bottom_height);
}
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_front" &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "left_front" &&
bottom_front_left_enable == true && bottom_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=bottom_standoff[4]-.2, h=bottom_height);
}
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_rear" &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "right_rear" &&
bottom_rear_right_enable == true && bottom_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=bottom_standoff[4]-.2, h=bottom_height);
}
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_front" &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "right_front" &&
bottom_front_right_enable == true && bottom_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=bottom_standoff[4]-.2, h=bottom_height);
}
}
}
// multi-pcb standoff holes
if(multipcb_bottom_standoffs == 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]) {
pcbclass = sbc_data[s[0]][i+1];
pcbtype = sbc_data[s[0]][i+2];
id = sbc_data[s[0]][i+3];
pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x+pcbloc_x;
pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y+pcbloc_y;
pcbhole_z = sbc_data[s[0]][i+6];
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_state = sbc_data[s[0]][i+10][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if(id == pcbid && id != 0 && pcbclass == "pcbhole") {
if (pcbclass == "pcbhole" && pcbhole_pos == "left_rear" && multipcb_bottom_rear_left_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=multipcb_bottom_standoff[4]-.2, h=bottom_height);
}
if (pcbclass == "pcbhole" && pcbhole_pos == "left_front" && multipcb_bottom_front_left_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=multipcb_bottom_standoff[4]-.2, h=bottom_height);
}
if (pcbclass == "pcbhole" && pcbhole_pos == "right_rear" && multipcb_bottom_rear_right_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=multipcb_bottom_standoff[4]-.2, h=bottom_height);
}
if (pcbclass == "pcbhole" && pcbhole_pos == "right_front" && multipcb_bottom_front_right_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,-1]) cylinder(d=multipcb_bottom_standoff[4]-.2, h=bottom_height);
}
}
}
}
}
}
// extended standoff holes
if(ext_bottom_standoffs == true) {
// right-rear standoff
@@ -473,7 +511,7 @@ echo(pcb_depth+case_offset_y-10);
}
}
}
// pcb standoffs
// primary pcb standoffs
if(sbc_bottom_standoffs == true) {
for (i=[1:11:len(sbc_data[s[0]])-2]) {
class = sbc_data[s[0]][i+1];
@@ -485,8 +523,7 @@ echo(pcb_depth+case_offset_y-10);
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if(class == "pcbhole" && id == pcb_id &&
(pcbhole_pos == "left_rear" || pcbhole_pos == "left_front" || pcbhole_pos == "right_rear" || pcbhole_pos == "right_front")) {
if(class == "pcbhole" && id == pcb_id) {
if (pcbhole_pos == "left_rear" && bottom_rear_left_enable == true) {
bottom_support = bottom_sidewall_support == true ? bottom_rear_left_support : "none";
pcb_standoff = [bottom_standoff[0],
@@ -558,7 +595,101 @@ echo(pcb_depth+case_offset_y-10);
}
}
}
// multi-pcb standoffs
if(multipcb_bottom_standoffs == 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]) {
pcbclass = sbc_data[s[0]][i+1];
pcbtype = sbc_data[s[0]][i+2];
id = sbc_data[s[0]][i+3];
pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x+pcbloc_x;
pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y+pcbloc_y;
pcbhole_z = sbc_data[s[0]][i+6];
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_state = sbc_data[s[0]][i+10][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if(pcbclass == "pcbhole" && pcbid == id && id != 0) {
if (pcbhole_pos == "left_rear" && multipcb_bottom_rear_left_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
bottom_support = multipcb_bottom_sidewall_support == true ? multipcb_bottom_rear_left_support : "none";
pcb_standoff = [multipcb_bottom_standoff[0],
multipcb_bottom_standoff[1],
bottom_height-pcb_z+pcb_loc_z+multipcb_bottom_rear_left_adjust,
multipcb_bottom_standoff[3],
multipcb_bottom_standoff[4],
multipcb_bottom_standoff[5],
multipcb_bottom_standoff[6],
multipcb_bottom_standoff[7],
bottom_support,
multipcb_bottom_standoff[9],
multipcb_bottom_standoff[10],
multipcb_bottom_standoff[11],
multipcb_bottom_standoff[12]];
translate([pcbhole_x,pcbhole_y,0]) standoff(pcb_standoff,[false,10,2,"default"]);
}
if (pcbhole_pos == "left_front" && multipcb_bottom_front_left_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
bottom_support = multipcb_bottom_sidewall_support == true ? multipcb_bottom_front_left_support : "none";
pcb_standoff = [multipcb_bottom_standoff[0],
multipcb_bottom_standoff[1],
bottom_height-pcb_z+pcb_loc_z+multipcb_bottom_front_left_adjust,
multipcb_bottom_standoff[3],
multipcb_bottom_standoff[4],
multipcb_bottom_standoff[5],
multipcb_bottom_standoff[6],
multipcb_bottom_standoff[7],
bottom_support,
multipcb_bottom_standoff[9],
multipcb_bottom_standoff[10],
multipcb_bottom_standoff[11],
multipcb_bottom_standoff[12]];
translate([pcbhole_x,pcbhole_y,0]) standoff(pcb_standoff,[false,10,2,"default"]);
}
if (pcbhole_pos == "right_rear" && multipcb_bottom_rear_right_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
bottom_support = multipcb_bottom_sidewall_support == true ? multipcb_bottom_rear_right_support : "none";
pcb_standoff = [multipcb_bottom_standoff[0],
multipcb_bottom_standoff[1],
bottom_height-pcb_z+pcb_loc_z+multipcb_bottom_rear_right_adjust,
multipcb_bottom_standoff[3],
multipcb_bottom_standoff[4],
multipcb_bottom_standoff[5],
multipcb_bottom_standoff[6],
multipcb_bottom_standoff[7],
bottom_support,
multipcb_bottom_standoff[9],
multipcb_bottom_standoff[10],
multipcb_bottom_standoff[11],
multipcb_bottom_standoff[12]];
translate([pcbhole_x,pcbhole_y,0]) standoff(pcb_standoff,[false,10,2,"default"]);
}
if (pcbhole_pos == "right_front" && multipcb_bottom_front_right_enable == true && (pcbhole_state == "bottom" || pcbhole_state == "both")) {
bottom_support = multipcb_bottom_sidewall_support == true ? multipcb_bottom_front_right_support : "none";
pcb_standoff = [multipcb_bottom_standoff[0],
multipcb_bottom_standoff[1],
bottom_height-pcb_z+pcb_loc_z+multipcb_bottom_front_right_adjust,
multipcb_bottom_standoff[3],
multipcb_bottom_standoff[4],
multipcb_bottom_standoff[5],
multipcb_bottom_standoff[6],
multipcb_bottom_standoff[7],
bottom_support,
multipcb_bottom_standoff[9],
multipcb_bottom_standoff[10],
multipcb_bottom_standoff[11],
multipcb_bottom_standoff[12]];
translate([pcbhole_x,pcbhole_y,0]) standoff(pcb_standoff,[false,10,2,"default"]);
}
}
}
}
}
}
// extended standoffs
if(ext_bottom_standoffs == true) {
// extended right-rear standoff

View File

@@ -307,24 +307,62 @@ module case_top(case_design) {
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_rear" && top_rear_left_enable == true &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "left_rear" && top_rear_left_enable == true &&
top_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,top_height+5]) cylinder(d=top_standoff[4]-.2, h=top_height);
}
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_front" && top_front_left_enable == true &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "left_front" && top_front_left_enable == true &&
top_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,top_height+5]) cylinder(d=top_standoff[4]-.2, h=top_height);
}
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_rear" && top_rear_right_enable == true &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "right_rear" && top_rear_right_enable == true &&
top_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,top_height+5]) cylinder(d=top_standoff[4]-.2, h=top_height);
}
if (class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_front" && top_front_right_enable == true &&
if (class == "pcbhole" && id == 0 && pcbhole_pos == "right_front" && top_front_right_enable == true &&
top_standoff[6] != "blind") {
translate([pcbhole_x,pcbhole_y,top_height+5]) cylinder(d=top_standoff[4]-.2, h=top_height);
}
}
}
// multi-pcb standoff holes
if(multipcb_top_standoffs == 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]) {
pcbclass = sbc_data[s[0]][i+1];
pcbtype = sbc_data[s[0]][i+2];
id = sbc_data[s[0]][i+3];
pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x+pcbloc_x;
pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y+pcbloc_y;
pcbhole_z = sbc_data[s[0]][i+6];
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_state = sbc_data[s[0]][i+10][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if(id == pcbid && id != 0 && pcbclass == "pcbhole") {
if (pcbclass == "pcbhole" && pcbhole_pos == "left_rear" && multipcb_top_rear_left_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,top_height]) cylinder(d=multipcb_top_standoff[4]-.2, h=top_height);
}
if (pcbclass == "pcbhole" && pcbhole_pos == "left_front" && multipcb_top_front_left_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,top_height]) cylinder(d=multipcb_top_standoff[4]-.2, h=top_height);
}
if (pcbclass == "pcbhole" && pcbhole_pos == "right_rear" && multipcb_top_rear_right_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,top_height]) cylinder(d=multipcb_top_standoff[4]-.2, h=top_height);
}
if (pcbclass == "pcbhole" && pcbhole_pos == "right_front" && multipcb_top_front_right_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
translate([pcbhole_x,pcbhole_y,top_height]) cylinder(d=multipcb_top_standoff[4]-.2, h=top_height);
}
}
}
}
}
}
// extended standoff holes
if(ext_top_standoffs == true) {
// right-rear standoff
@@ -479,6 +517,101 @@ module case_top(case_design) {
}
}
}
// multi-pcb standoffs
if(multipcb_top_standoffs == 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]) {
pcbclass = sbc_data[s[0]][i+1];
pcbtype = sbc_data[s[0]][i+2];
id = sbc_data[s[0]][i+3];
pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x+pcbloc_x;
pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y+pcbloc_y;
pcbhole_z = sbc_data[s[0]][i+6];
pcbhole_size = sbc_data[s[0]][i+9][0];
pcbhole_state = sbc_data[s[0]][i+10][0];
pcbhole_pos = sbc_data[s[0]][i+10][4];
if(pcbclass == "pcbhole" && pcbid == id && id != 0) {
if (pcbhole_pos == "left_rear" && multipcb_top_rear_left_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
top_support = multipcb_top_sidewall_support == true ? multipcb_top_rear_left_support : "none";
pcb_standoff = [multipcb_top_standoff[0],
multipcb_top_standoff[1],
top_height+top_rear_right_adjust-pcb_loc_z,
multipcb_top_standoff[3],
multipcb_top_standoff[4],
multipcb_top_standoff[5],
multipcb_top_standoff[6],
multipcb_top_standoff[7],
top_support,
multipcb_top_standoff[9],
multipcb_top_standoff[10],
multipcb_top_standoff[11],
multipcb_top_standoff[12]];
translate([pcbhole_x,pcbhole_y,case_z]) standoff(pcb_standoff,[false,10,2,"default"]);
}
if (pcbhole_pos == "left_front" && multipcb_top_front_left_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
top_support = multipcb_top_sidewall_support == true ? multipcb_top_front_left_support : "none";
pcb_standoff = [multipcb_top_standoff[0],
multipcb_bottom_standoff[1],
top_height+top_rear_right_adjust-pcb_loc_z,
multipcb_top_standoff[3],
multipcb_top_standoff[4],
multipcb_top_standoff[5],
multipcb_top_standoff[6],
multipcb_top_standoff[7],
top_support,
multipcb_top_standoff[9],
multipcb_top_standoff[10],
multipcb_top_standoff[11],
multipcb_top_standoff[12]];
translate([pcbhole_x,pcbhole_y,case_z]) standoff(pcb_standoff,[false,10,2,"default"]);
}
if (pcbhole_pos == "right_rear" && multipcb_top_rear_right_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
top_support = multipcb_top_sidewall_support == true ? multipcb_top_rear_right_support : "none";
pcb_standoff = [multipcb_top_standoff[0],
multipcb_top_standoff[1],
top_height+top_rear_right_adjust-pcb_loc_z,
multipcb_top_standoff[3],
multipcb_top_standoff[4],
multipcb_top_standoff[5],
multipcb_top_standoff[6],
multipcb_top_standoff[7],
top_support,
multipcb_top_standoff[9],
multipcb_top_standoff[10],
multipcb_top_standoff[11],
multipcb_top_standoff[12]];
translate([pcbhole_x,pcbhole_y,case_z]) standoff(pcb_standoff,[false,10,2,"default"]);
}
if (pcbhole_pos == "right_front" && multipcb_top_front_right_enable == true && (pcbhole_state == "top" || pcbhole_state == "both")) {
top_support = multipcb_top_sidewall_support == true ? multipcb_top_front_right_support : "none";
pcb_standoff = [multipcb_top_standoff[0],
multipcb_top_standoff[1],
top_height+top_rear_right_adjust-pcb_loc_z,
multipcb_top_standoff[3],
multipcb_top_standoff[4],
multipcb_top_standoff[5],
multipcb_top_standoff[6],
multipcb_top_standoff[7],
top_support,
multipcb_top_standoff[9],
multipcb_top_standoff[10],
multipcb_top_standoff[11],
multipcb_top_standoff[12]];
translate([pcbhole_x,pcbhole_y,case_z]) standoff(pcb_standoff,[false,10,2,"default"]);
}
}
}
}
}
}
// extended standoffs
if(ext_top_standoffs == true) {
// extended right-rear standoff

View File

@@ -6845,7 +6845,7 @@
"bottom_standoff_reverse": "false",
"bottom_standoff_size": "m3",
"bottom_standoff_support_height": "4",
"bottom_standoff_support_size": "10",
"bottom_standoff_support_size": "7",
"bottom_standoff_type": "countersunk",
"case_design": "shell",
"case_offset_bz": "0",
@@ -6907,7 +6907,7 @@
"ext_top_standoffs": "false",
"fan_size": "0",
"flat_blank_section": "false",
"floorthick": "2",
"floorthick": "1.5",
"gap": "1",
"gpio_opening": "default",
"indents": "true",
@@ -6918,6 +6918,56 @@
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"multipcb_bottom_front_left_adjust": "0",
"multipcb_bottom_front_left_enable": "true",
"multipcb_bottom_front_left_support": "front",
"multipcb_bottom_front_right_adjust": "0",
"multipcb_bottom_front_right_enable": "true",
"multipcb_bottom_front_right_support": "front",
"multipcb_bottom_rear_left_adjust": "0",
"multipcb_bottom_rear_left_enable": "true",
"multipcb_bottom_rear_left_support": "rear",
"multipcb_bottom_rear_right_adjust": "0",
"multipcb_bottom_rear_right_enable": "true",
"multipcb_bottom_rear_right_support": "rear",
"multipcb_bottom_sidewall_support": "false",
"multipcb_bottom_standoff_diameter": "5.75",
"multipcb_bottom_standoff_hole_size": "3.4",
"multipcb_bottom_standoff_insert": "false",
"multipcb_bottom_standoff_insert_dia": "4.2",
"multipcb_bottom_standoff_insert_height": "5.1",
"multipcb_bottom_standoff_pillar": "hex",
"multipcb_bottom_standoff_reverse": "false",
"multipcb_bottom_standoff_size": "m2+",
"multipcb_bottom_standoff_support_height": "4",
"multipcb_bottom_standoff_support_size": "5.5",
"multipcb_bottom_standoff_type": "countersunk",
"multipcb_bottom_standoffs": "true",
"multipcb_top_front_left_adjust": "0",
"multipcb_top_front_left_enable": "true",
"multipcb_top_front_left_support": "front",
"multipcb_top_front_right_adjust": "0",
"multipcb_top_front_right_enable": "true",
"multipcb_top_front_right_support": "front",
"multipcb_top_rear_left_adjust": "0",
"multipcb_top_rear_left_enable": "true",
"multipcb_top_rear_left_support": "rear",
"multipcb_top_rear_right_adjust": "0",
"multipcb_top_rear_right_enable": "true",
"multipcb_top_rear_right_support": "rear",
"multipcb_top_sidewall_support": "false",
"multipcb_top_standoff_diameter": "5.75",
"multipcb_top_standoff_hole_size": "2.75",
"multipcb_top_standoff_insert": "false",
"multipcb_top_standoff_insert_dia": "4.2",
"multipcb_top_standoff_insert_height": "5.1",
"multipcb_top_standoff_pillar": "hex",
"multipcb_top_standoff_reverse": "true",
"multipcb_top_standoff_size": "m2.5",
"multipcb_top_standoff_support_height": "4",
"multipcb_top_standoff_support_size": "7",
"multipcb_top_standoff_type": "blind",
"multipcb_top_standoffs": "true",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
@@ -6934,12 +6984,12 @@
"text_color": "Green",
"text_font": "Nimbus Mono PS",
"tol": "0.25",
"top_cover_pattern": "solid",
"top_cover_pattern": "hex_8mm",
"top_front_left_adjust": "0",
"top_front_left_enable": "true",
"top_front_left_enable": "false",
"top_front_left_support": "front",
"top_front_right_adjust": "0",
"top_front_right_enable": "true",
"top_front_right_enable": "false",
"top_front_right_support": "front",
"top_rear_left_adjust": "0",
"top_rear_left_enable": "true",
@@ -6961,7 +7011,7 @@
"top_standoff_type": "blind",
"uart_opening": "default",
"view": "model",
"wallthick": "2"
"wallthick": "1.5"
}
},
"fileFormatVersion": "1"

View File

@@ -65,7 +65,7 @@ bottom_clearence = 3.5; //[-10:.01:10]
// enable flat blank section for export
flat_blank_section = false;
/* [Standard Motherboard Case Settings] */
/* [Standard Motherboard Case Adjustments] */
// adjustment for ssi-eeb, ssi-ceb, atx, micro-atx, dtx, flex-atx, mini-dtx, mini-itx, mini-stx, nano-itx,nuc, pico-itx PCB thickness from 2mm default//
standard_motherboard_thickness = 0; //[-3:.01:3]
// rear io plate opening for standard form motherboards
@@ -101,78 +101,6 @@ edge_fillet = 0; //[0:.5:6]
// tolerance for fitted surfaces
tol = .25; //[-.5:.0625:.5]
/* [Top Standoff Global Settings] */
// enable case top standoffs
sbc_top_standoffs = true;
// reverse standoff vertical orientation
top_standoff_reverse = true;
// enable wall support for standoffs
top_sidewall_support = false;
top_standoff_size = "m3"; //[m2_tap, m2, m2+, m2.5_tap, m2.5, m2.5+, m3_tap, m3, m3+, m4_tap, m4, m4+, custom]
top_standoff_type = "blind"; //[none, countersunk, recessed, nut holder, blind]
top_standoff_pillar = "hex"; //[hex, round]
top_standoff_diameter = 5.75; //[0:.01:10]
top_standoff_hole_size = 2.75; //[0:.01:5]
top_standoff_support_size = 10; //[0:.01:15]
top_standoff_support_height = 4; //[0:.01:50]
top_standoff_insert = false;
top_standoff_insert_dia = 4.2; //.01
top_standoff_insert_height = 5.1; //.01
/* [Top Standoff Individual Settings] */
// case top - lower left standoff settings
top_rear_left_enable = true;
top_rear_left_adjust = 0; //[-20:.01:20]
top_rear_left_support = "rear"; //[none,left,rear,front,right]
// case top - upper left standoff settings
top_front_left_enable = true;
top_front_left_adjust = 0; //[-20:.01:20]
top_front_left_support = "front"; //[none,left,rear,front,right]
// case top - lower right standoff settings
top_rear_right_enable = true;
top_rear_right_adjust = 0; //[-20:.01:20]
top_rear_right_support = "rear"; //[none,left,rear,front,right]
// case top - upper right standoff settings
top_front_right_enable = true;
top_front_right_adjust = 0; //[-20:.01:20]
top_front_right_support = "front"; //[none,left,rear,front,right]
/* [Bottom Standoff Global Settings] */
// enable case bottom standoffs
sbc_bottom_standoffs = true;
// reverse standoff vertical orientation
bottom_standoff_reverse = false;
// enable wall support for standoffs
bottom_sidewall_support = false;
bottom_standoff_size = "m3"; //[m2_tap, m2, m2+, m2.5_tap, m2.5, m2.5+, m3_tap, m3, m3+, m4_tap, m4, m4+, custom]
bottom_standoff_type = "countersunk"; //[none, countersunk, recessed, nut holder, blind]
bottom_standoff_pillar = "hex"; //[hex, round]
bottom_standoff_diameter = 5.75; //[2:.01:10]
bottom_standoff_hole_size = 3.4; //[0:.01:5]
bottom_standoff_support_size = 10; //[1:.01:15]
bottom_standoff_support_height = 4; //[0:.01:50]
bottom_standoff_insert = false;
bottom_standoff_insert_dia = 4.2; //.01
bottom_standoff_insert_height = 5.1; //.01
/* [Bottom Standoff Individual Settings] */
// case bottom - rear left standoff settings
bottom_rear_left_enable = true;
bottom_rear_left_adjust = 0; //[-20:.01:20]
bottom_rear_left_support = "rear"; //[none,left,rear,front,right]
// case bottom - upper left standoff settings
bottom_front_left_enable = true;
bottom_front_left_adjust = 0; //[-20:.01:20]
bottom_front_left_support = "front"; //[none,left,rear,front,right]
// case bottom - lower right standoff settings
bottom_rear_right_enable = true;
bottom_rear_right_adjust = 0; //[-20:.01:20]
bottom_rear_right_support = "rear"; //[none,left,rear,front,right]
// case bottom - upper right standoff settings
bottom_front_right_enable = true;
bottom_front_right_adjust = 0; //[-20:.01:20]
bottom_front_right_support = "front"; //[none,left,rear,front,right]
/* [Fan and Vent Openings] */
// top cover pattern
top_cover_pattern = "solid"; //[solid,hex_5mm,hex_8mm,linear_vertical,linear_horizontal,astroid]
@@ -203,7 +131,79 @@ text_color = "Green"; // [Green, Black, Dimgrey, White, Yellow, Orange, Red, Dar
// sbc information text font
text_font = "Nimbus Mono PS"; // [Nimbus Mono PS, Liberation Mono, Noto Sans Mono]
/* [Extended Top Standoffs] */
/* [SBC Top Standoff Global Settings] */
// enable case top standoffs
sbc_top_standoffs = true;
// reverse standoff vertical orientation
top_standoff_reverse = true;
// enable wall support for standoffs
top_sidewall_support = false;
top_standoff_size = "m3"; //[m2_tap, m2, m2+, m2.5_tap, m2.5, m2.5+, m3_tap, m3, m3+, m4_tap, m4, m4+, custom]
top_standoff_type = "blind"; //[none, countersunk, recessed, nut holder, blind]
top_standoff_pillar = "hex"; //[hex, round]
top_standoff_diameter = 5.75; //[0:.01:10]
top_standoff_hole_size = 2.75; //[0:.01:5]
top_standoff_support_size = 10; //[0:.01:15]
top_standoff_support_height = 4; //[0:.01:50]
top_standoff_insert = false;
top_standoff_insert_dia = 4.2; //.01
top_standoff_insert_height = 5.1; //.01
/* [SBC Top Standoff Individual Settings] */
// case top - lower left standoff settings
top_rear_left_enable = true;
top_rear_left_adjust = 0; //[-20:.01:20]
top_rear_left_support = "rear"; //[none,left,rear,front,right]
// case top - upper left standoff settings
top_front_left_enable = true;
top_front_left_adjust = 0; //[-20:.01:20]
top_front_left_support = "front"; //[none,left,rear,front,right]
// case top - lower right standoff settings
top_rear_right_enable = true;
top_rear_right_adjust = 0; //[-20:.01:20]
top_rear_right_support = "rear"; //[none,left,rear,front,right]
// case top - upper right standoff settings
top_front_right_enable = true;
top_front_right_adjust = 0; //[-20:.01:20]
top_front_right_support = "front"; //[none,left,rear,front,right]
/* [SBC Bottom Standoff Global Settings] */
// enable case bottom standoffs
sbc_bottom_standoffs = true;
// reverse standoff vertical orientation
bottom_standoff_reverse = false;
// enable wall support for standoffs
bottom_sidewall_support = false;
bottom_standoff_size = "m3"; //[m2_tap, m2, m2+, m2.5_tap, m2.5, m2.5+, m3_tap, m3, m3+, m4_tap, m4, m4+, custom]
bottom_standoff_type = "countersunk"; //[none, countersunk, recessed, nut holder, blind]
bottom_standoff_pillar = "hex"; //[hex, round]
bottom_standoff_diameter = 5.75; //[2:.01:10]
bottom_standoff_hole_size = 3.4; //[0:.01:5]
bottom_standoff_support_size = 10; //[1:.01:15]
bottom_standoff_support_height = 4; //[0:.01:50]
bottom_standoff_insert = false;
bottom_standoff_insert_dia = 4.2; //.01
bottom_standoff_insert_height = 5.1; //.01
/* [SBC Bottom Standoff Individual Settings] */
// case bottom - rear left standoff settings
bottom_rear_left_enable = true;
bottom_rear_left_adjust = 0; //[-20:.01:20]
bottom_rear_left_support = "rear"; //[none,left,rear,front,right]
// case bottom - upper left standoff settings
bottom_front_left_enable = true;
bottom_front_left_adjust = 0; //[-20:.01:20]
bottom_front_left_support = "front"; //[none,left,rear,front,right]
// case bottom - lower right standoff settings
bottom_rear_right_enable = true;
bottom_rear_right_adjust = 0; //[-20:.01:20]
bottom_rear_right_support = "rear"; //[none,left,rear,front,right]
// case bottom - upper right standoff settings
bottom_front_right_enable = true;
bottom_front_right_adjust = 0; //[-20:.01:20]
bottom_front_right_support = "front"; //[none,left,rear,front,right]
/* [Extended Case Top Standoffs] */
// enable case extended standoffs
ext_top_standoffs = false;
ext_top_standoff_reverse = true;
@@ -219,7 +219,7 @@ ext_top_standoff_support_height = 4; //[0:.01:50]
ext_top_standoff_insert = false;
ext_top_standoff_insert_dia = 4.2; //.01
ext_top_standoff_insert_height = 5.1; //.01
/* [Extended Top Standoff Individual Settings] */
/* [Extended Case Top Standoff Individual Settings] */
// extended case top - lower left standoff settings
ext_top_rear_left_enable = true;
ext_top_rear_left_adjust = 0; //[-20:.01:20]
@@ -237,7 +237,7 @@ ext_top_front_right_enable = true;
ext_top_front_right_adjust = 0; //[-20:.01:20]
ext_top_front_right_support = "front"; //[none,left,rear,front,right]
/* [Extended Bottom Standoffs] */
/* [Extended Case Bottom Standoffs] */
// enable case bottom extended standoffs
ext_bottom_standoffs = false;
ext_bottom_standoff_reverse = false;
@@ -254,7 +254,7 @@ ext_bottom_standoff_insert = false;
ext_bottom_standoff_insert_dia = 4.2; //.01
ext_bottom_standoff_insert_height = 5.1; //.01
/* [Extended Bottom Standoff Individual Settings] */
/* [Extended Case Bottom Standoff Individual Settings] */
// extended case bottom - rear left standoff settings
ext_bottom_rear_left_enable = true;
ext_bottom_rear_left_adjust = 0; //[-20:.01:20]
@@ -272,6 +272,75 @@ ext_bottom_front_right_enable = true;
ext_bottom_front_right_adjust = 0; //[-20:.01:20]
ext_bottom_front_right_support = "front"; //[none,left,rear,front,right]
/* [Multiple PCB Top Standoffs] */
// enable multiple pcb standoffs
multipcb_top_standoffs = false;
multipcb_top_standoff_reverse = true;
// enable wall support for multiple pcb
multipcb_top_sidewall_support = false;
multipcb_top_standoff_size = "m2.5"; //[m2_tap, m2, m2+, m2.5_tap, m2.5, m2.5+, m3_tap, m3, m3+, m4_tap, m4, m4+, custom]
multipcb_top_standoff_type = "blind"; //[none, countersunk, recessed, nut holder, blind]
multipcb_top_standoff_pillar = "hex"; //[hex, round]
multipcb_top_standoff_diameter = 5.75; //[0:.01:10]
multipcb_top_standoff_hole_size = 2.75; //[0:.01:5]
multipcb_top_standoff_support_size = 7; //[0:.01:15]
multipcb_top_standoff_support_height = 4; //[0:.01:50]
multipcb_top_standoff_insert = false;
multipcb_top_standoff_insert_dia = 4.2; //.01
multipcb_top_standoff_insert_height = 5.1; //.01
/* [Multiple PCB Top Standoff Individual Settings] */
// multiple pcb top - lower left standoff settings
multipcb_top_rear_left_enable = true;
multipcb_top_rear_left_adjust = 0; //[-20:.01:20]
multipcb_top_rear_left_support = "rear"; //[none,left,rear,front,right]
// multiple pcb - upper left standoff settings
multipcb_top_front_left_enable = true;
multipcb_top_front_left_adjust = 0; //[-20:.01:20]
multipcb_top_front_left_support = "front"; //[none,left,rear,front,right]
// multiple pcb top - lower right standoff settings
multipcb_top_rear_right_enable = true;
multipcb_top_rear_right_adjust = 0; //[-20:.01:20]
multipcb_top_rear_right_support = "rear"; //[none,left,rear,front,right]
// multiple pcb top - upper right standoff settings
multipcb_top_front_right_enable = true;
multipcb_top_front_right_adjust = 0; //[-20:.01:20]
multipcb_top_front_right_support = "front"; //[none,left,rear,front,right]
/* [Multiple PCB Bottom Standoffs] */
// enable multiple pcb extended standoffs
multipcb_bottom_standoffs = false;
multipcb_bottom_standoff_reverse = false;
// enable wall support for multiple pcb standoffs
multipcb_bottom_sidewall_support = false;
multipcb_bottom_standoff_size = "m2.5"; //[m2_tap, m2, m2+, m2.5_tap, m2.5, m2.5+, m3_tap, m3, m3+, m4_tap, m4, m4+, custom]
multipcb_bottom_standoff_type = "countersunk"; //[none, countersunk, recessed, nut holder, blind]
multipcb_bottom_standoff_pillar = "hex"; //[hex, round]
multipcb_bottom_standoff_diameter = 5.75; //[2:.01:10]
multipcb_bottom_standoff_hole_size = 3.4; //[0:.01:5]
multipcb_bottom_standoff_support_size = 7; //[1:.01:15]
multipcb_bottom_standoff_support_height = 4; //[0:.01:50]
multipcb_bottom_standoff_insert = false;
multipcb_bottom_standoff_insert_dia = 4.2; //.01
multipcb_bottom_standoff_insert_height = 5.1; //.01
/* [Multiple PCB Bottom Standoff Individual Settings] */
// multiple pcb bottom - rear left standoff settings
multipcb_bottom_rear_left_enable = true;
multipcb_bottom_rear_left_adjust = 0; //[-20:.01:20]
multipcb_bottom_rear_left_support = "rear"; //[none,left,rear,front,right]
// multiple pcb bottom - upper left standoff settings
multipcb_bottom_front_left_enable = true;
multipcb_bottom_front_left_adjust = 0; //[-20:.01:20]
multipcb_bottom_front_left_support = "front"; //[none,left,rear,front,right]
// multiple pcb bottom - lower right standoff settings
multipcb_bottom_rear_right_enable = true;
multipcb_bottom_rear_right_adjust = 0; //[-20:.01:20]
multipcb_bottom_rear_right_support = "rear"; //[none,left,rear,front,right]
// multiple pcb bottom - upper right standoff settings
multipcb_bottom_front_right_enable = true;
multipcb_bottom_front_right_adjust = 0; //[-20:.01:20]
multipcb_bottom_front_right_support = "front"; //[none,left,rear,front,right]
a = search([accessory_name],accessory_data);
s = search([sbc_model],sbc_data);
@@ -321,6 +390,7 @@ bottom_standoff = [bottom_standoff_size,
bottom_standoff_insert,
bottom_standoff_insert_dia,
bottom_standoff_insert_height];
ext_top_standoff = [ext_top_standoff_size,
ext_top_standoff_diameter,
18,
@@ -334,6 +404,7 @@ ext_top_standoff = [ext_top_standoff_size,
ext_top_standoff_insert,
ext_top_standoff_insert_dia,
ext_top_standoff_insert_height];
ext_bottom_standoff = [ext_bottom_standoff_size,
ext_bottom_standoff_diameter,
6,
@@ -347,6 +418,34 @@ ext_bottom_standoff = [ext_bottom_standoff_size,
ext_bottom_standoff_insert,
ext_bottom_standoff_insert_dia,
ext_bottom_standoff_insert_height];
multipcb_top_standoff = [multipcb_top_standoff_size,
multipcb_top_standoff_diameter,
18,
multipcb_top_standoff_hole_size,
multipcb_top_standoff_support_size,
multipcb_top_standoff_support_height,
multipcb_top_standoff_type,
multipcb_top_standoff_pillar,
multipcb_top_rear_left_support,
multipcb_top_standoff_reverse,
multipcb_top_standoff_insert,
multipcb_top_standoff_insert_dia,
multipcb_top_standoff_insert_height];
multipcb_bottom_standoff = [multipcb_bottom_standoff_size,
multipcb_bottom_standoff_diameter,
6,
multipcb_bottom_standoff_hole_size,
multipcb_bottom_standoff_support_size,
multipcb_bottom_standoff_support_height,
multipcb_bottom_standoff_type,
multipcb_bottom_standoff_pillar,
multipcb_bottom_rear_left_support,
multipcb_bottom_standoff_reverse,
multipcb_bottom_standoff_insert,
multipcb_bottom_standoff_insert_dia,
multipcb_bottom_standoff_insert_height];
adj = .01;
$fn=90;

View File

@@ -446,5 +446,30 @@ accessory_data = [
"add2","standoff",113,100,0,"bottom",[0,0,0],["sbc",false,false,false],[0,0,0],[["custom",5.75,5,3.6,10,4,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"],
"add2","standoff",113,125,0,"bottom",[0,0,0],["sbc",false,false,false],[0,0,0],[["custom",5.75,5,3.6,10,4,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"],
"model","hk_m1s_ups",2,97,5,"bottom",[0,0,0],["sbc",false,false,false],[0,0,0],[0],[true,110,2,"default"]],
// environmental sensors
["env_sensors",
// i2c radial hub holder
"model","stl_model",31,60.75,4,"bottom",[90,0,180],["sbc",false,false,false],[0,0,0],[1,"./adafruit/5625 Stemma 5 Port Hub.stl"],[false,10,2,"default"],
"add2","pcb_holder",5,60.75,1,"bottom",[0,0,0],["case",false,false,false],[26.5,35,1.65],[2],[false,10,2,"default"],
// BMP388 and holder
"model","stl_model",38,121,22,"bottom",[90,180,90],["sbc",false,false,false],[0,0,0],[1,"./adafruit/3966 BMP388 QT.stl",0,0],[false,10,2,"default"],
"add2","pcb_holder",39.5,95,1,"bottom",[0,0,90],["case",false,false,false],[26.5,35,1.65],[2],[false,10,2,"default"],
// SCD30 and holder
"model","stl_model",55,69,27,"bottom",[270,0,90],["sbc",false,false,false],[0,0,0],[1,"./adafruit/4867 Adafruit SCD30.stl"],[false,10,2,"default"],
"add2","pcb_holder",55,68,1,"bottom",[0,0,90],["case",false,false,false],[53,35,1.65],[2],[false,10,2,"default"],
// ST7789 IPS TFT Display and holder
"model","stl_model",67,61,4,"bottom",[90,270,270],["sbc",false,false,false],[0,0,0],[1,"./adafruit/4311 2in TFT IPS Display.stl"],[false,10,2,"default"],
"add2","pcb_holder",65.4,121,1,"bottom",[0,0,270],["case",false,false,false],[61,35,1.65],[2],[false,10,2,"default"],
// PMSA003I Partical Air Quality
"model","stl_model",0,70,4,"bottom",[0,0,0],["sbc",false,false,false],[0,0,0],[1,"./adafruit/4632 PMSA003I.stl"],[false,10,2,"default"],
"add2","standoff",2.75,72.5,0,"bottom",[0,0,0],["case",false,false,false],[0,0,0],[["m2",5.75,4,3.6,7,3,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"],
"add2","standoff",2.75,117.5,0,"bottom",[0,0,0],["case",false,false,false],[0,0,0],[["m2",5.75,4,3.6,7,3,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"],
"add2","standoff",32.75,72.5,0,"bottom",[0,0,0],["case",false,false,false],[0,0,0],[["m2",5.75,4,3.6,7,3,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"],
"add2","standoff",32.75,117.5,0,"bottom",[0,0,0],["case",false,false,false],[0,0,0],[["m2",5.75,4,3.6,8,3,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"],
"sub","vent",-3,100,11,"top",[0,0,90],["case",false,false,false],[2,7,4],[1,5,"vertical",1],[false,10,2,"default"],
// SGP30 VOC and eCO2 holder
"add2","pcb_holder",39.5,61,1,"bottom",[0,0,90],["case",false,false,false],[26.5,35,1.65],[2],[false,10,2,"default"]]
];