rewrote tray side attachment routine based on SBC standoff location

This commit is contained in:
Edward Kisiel
2024-04-07 15:20:37 -04:00
parent 40e8e6bfff
commit 8e89257759
3 changed files with 167 additions and 105 deletions

View File

@@ -79,33 +79,56 @@ module case_bottom(case_design) {
vertical=[corner_fillet-1,corner_fillet-1,corner_fillet-1,corner_fillet-1], vertical=[corner_fillet-1,corner_fillet-1,corner_fillet-1,corner_fillet-1],
top=[0,0,0,0],bottom=[2,2,2,2], $fn=90); top=[0,0,0,0],bottom=[2,2,2,2], $fn=90);
} }
// right side nut // case nut placement
translate([width-wallthick-gap-wallthick-4+adj,wallthick+gap+10, for (i=[1:11:len(sbc_data[s[0]])-2]) {
floorthick+3.4]) rotate([90,0,90]) class = sbc_data[s[0]][i+1];
cylinder(d=10, h=4, $fn=6); type = sbc_data[s[0]][i+2];
// left side nut id = sbc_data[s[0]][i+3];
translate([-adj-gap,wallthick+gap+10,floorthick+3.4]) pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x;
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y;
if(depth >= 75 && sbc_model != "visionfive2" && sbc_model != "visionfive2q" && pcbhole_z = sbc_data[s[0]][i+6];
sbc_model != "rock5b" && sbc_model != "rock5bq" && sbc_model != "rock5b-v1.3") { pcbhole_size = sbc_data[s[0]][i+9][0];
translate([width-wallthick-gap-wallthick-4+adj,depth-wallthick-gap-10, pcbhole_pos = sbc_data[s[0]][i+10][4];
floorthick+3.4]) rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
translate([-adj-gap,depth-wallthick-gap-10,floorthick+3.4]) if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_rear") {
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); if(pcbhole_y <= 10) {
} translate([-adj-gap,wallthick+gap+10,floorthick+3.4]) rotate([90,0,90])
else { cylinder(d=10, h=4, $fn=6);
if(sbc_model == "visionfive2" || sbc_model == "visionfive2q" || sbc_model == "rock5b" || }
sbc_model == "rock5bq" || sbc_model == "rock5b-v1.3") { else {
translate([width-wallthick-gap-wallthick-4+adj,wallthick+gap+58, translate([-adj-gap,wallthick+gap+2,floorthick+3.4]) rotate([90,0,90])
floorthick+3.4]) rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); cylinder(d=10, h=4, $fn=6);
translate([-adj-gap,wallthick+gap+58,floorthick+3.4]) }
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
} }
else { if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_front") {
translate([width-wallthick-gap-wallthick-4+adj,wallthick+gap+40, if(pcbhole_y >= pcb_depth-10) {
floorthick+3.4]) rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); translate([-adj-gap,wallthick-gap+pcb_depth-14,floorthick+3.4])
translate([-adj-gap,wallthick+gap+40,floorthick+3.4]) rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); }
else {
translate([-adj-gap,wallthick+gap+pcb_depth-8,floorthick+3.4])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
}
}
if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_rear") {
if(pcbhole_y <= 10) {
translate([width-wallthick-gap-wallthick-4+adj,wallthick+gap+10,floorthick+3.4])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
}
else {
translate([width-wallthick-gap-wallthick-4+adj,wallthick+gap+2,floorthick+3.4])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
}
}
if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_front") {
if(pcbhole_y >= pcb_depth-10) {
translate([width-wallthick-gap-wallthick-4+adj,wallthick-gap+pcb_depth-14,floorthick+3.4])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
}
else {
translate([width-wallthick-gap-wallthick-4+adj,wallthick+gap+pcb_depth-8,floorthick+3.4])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
}
} }
} }
@@ -278,56 +301,73 @@ module case_bottom(case_design) {
} }
} }
} }
// side attachment holes // tray side attachment holes
if(case_design == "tray" || case_design == "tray_vu5" || case_design == "tray_vu7" || case_design == "tray_sides") { if(case_design == "tray" || case_design == "tray_vu5" || case_design == "tray_vu7" || case_design == "tray_sides") {
// right side bottom attachment holes for (i=[1:11:len(sbc_data[s[0]])-2]) {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+10, class = sbc_data[s[0]][i+1];
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); type = sbc_data[s[0]][i+2];
// right side bottom nut inset id = sbc_data[s[0]][i+3];
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+10, pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x;
floorthick+3.4]) rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y;
// left side bottom attachment holes pcbhole_z = sbc_data[s[0]][i+6];
translate([-wallthick-gap-adj,wallthick+gap+10,floorthick+3.4]) rotate([0,90,0]) pcbhole_size = sbc_data[s[0]][i+9][0];
cylinder(d=3, h=10+sidethick+(2*adj)); pcbhole_pos = sbc_data[s[0]][i+10][4];
// left side bottom nut inset
translate([-gap+.6,wallthick+gap+10,floorthick+3.4]) if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_rear") {
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); if(pcbhole_y <= 10) {
if(depth >= 75 && sbc_model != "visionfive2" && sbc_model != "visionfive2q" && translate([-wallthick-gap-adj-6,wallthick+gap+10,floorthick+3.4]) rotate([0,90,0])
sbc_model != "rock5b" && sbc_model != "rock5bq" && sbc_model != "rock5b-v1.3") {
translate([width-2*(wallthick+gap)-sidethick-adj,depth-wallthick-gap-10,
floorthick+3.4]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adj));
translate([-wallthick-gap-adj-6,depth-wallthick-gap-10,
floorthick+3.4]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adj));
translate([width-3.5-(2*wallthick)-gap-.6,depth-wallthick-gap-10,
floorthick+3.4])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
translate([-gap+.6,depth-wallthick-gap-10,floorthick+3.4])
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
else {
if(sbc_model == "visionfive2" || sbc_model == "visionfive2q" || sbc_model == "rock5b" ||
sbc_model == "rock5bq" || sbc_model == "rock5b-v1.3") {
translate([width-3*(wallthick+gap)-adj,wallthick+gap+58,
floorthick+3.4]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adj)); cylinder(d=3, h=10+sidethick+(2*adj));
translate([-wallthick-gap-adj-6,wallthick+gap+58, translate([-gap+.6,wallthick+gap+10,floorthick+3.4]) rotate([90,0,90])
floorthick+3.4]) rotate([0,90,0]) cylinder(d=6.6, h=3.5, $fn=6);
}
else {
translate([-wallthick-gap-adj-6,wallthick+gap+2,floorthick+3.4]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adj)); cylinder(d=3, h=10+sidethick+(2*adj));
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+58, translate([-gap+.6,wallthick+gap+2,floorthick+3.4]) rotate([90,0,90])
floorthick+3.4])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); cylinder(d=6.6, h=3.5, $fn=6);
translate([-gap+.6,wallthick+gap+58,floorthick+3.4]) }
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
} }
else { if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_front") {
translate([width-3*(wallthick+gap)-adj,wallthick+gap+40, if(pcbhole_y >= pcb_depth-10) {
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); translate([-wallthick-gap-adj-6,wallthick-gap+pcb_depth-14,
translate([-wallthick-gap-adj-6,wallthick+gap+40, floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); translate([-gap+.6,wallthick-gap+pcb_depth-14,floorthick+3.4])
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+40, rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
floorthick+3.4])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); }
translate([-gap+.6,wallthick+gap+40,floorthick+3.4]) else {
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); translate([-wallthick-gap-adj-6,wallthick+gap+pcb_depth-8,
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
translate([-gap+.6,wallthick+gap+pcb_depth-8,floorthick+3.4])
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
}
if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_rear") {
if(pcbhole_y <= 10) {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+10,floorthick+3.4])
rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+10,floorthick+3.4])
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
else {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+2,floorthick+3.4])
rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+2,floorthick+3.4])
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
}
if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_front") {
if(pcbhole_y >= pcb_depth-10) {
translate([width-3*(wallthick+gap)-adj,wallthick-gap+pcb_depth-14,
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
translate([width-3.5-(2*wallthick)-gap-.6,wallthick-gap+pcb_depth-14,
floorthick+3.4])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
else {
translate([width-3*(wallthick+gap)-adj,wallthick-gap+pcb_depth-8,
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
translate([width-3.5-(2*wallthick)-gap-.6,wallthick-gap+pcb_depth-8,
floorthick+3.4])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
} }
} }
} }

View File

@@ -92,32 +92,55 @@ module case_top(case_design) {
cube_fillet_inside([width+1,depth+(wallthick*2),case_z], cube_fillet_inside([width+1,depth+(wallthick*2),case_z],
vertical=[corner_fillet-1,corner_fillet-1,corner_fillet-1,corner_fillet-1], vertical=[corner_fillet-1,corner_fillet-1,corner_fillet-1,corner_fillet-1],
top=[0,0,0,0],bottom=[0,0,0,0], $fn=90); top=[0,0,0,0],bottom=[0,0,0,0], $fn=90);
// right side bottom attachment hole for (i=[1:11:len(sbc_data[s[0]])-2]) {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+10, class = sbc_data[s[0]][i+1];
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); type = sbc_data[s[0]][i+2];
// left side bottom attachment hole id = sbc_data[s[0]][i+3];
translate([-2*(wallthick+gap)-sidethick-adj,wallthick+gap+10, pcbhole_x = sbc_data[s[0]][i+4]+pcb_loc_x;
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); pcbhole_y = sbc_data[s[0]][i+5]+pcb_loc_y;
if(depth >= 75 && sbc_model != "visionfive2" && sbc_model != "visionfive2q" && pcbhole_z = sbc_data[s[0]][i+6];
sbc_model != "rock5b" && sbc_model != "rock5bq" && sbc_model != "rock5b-v1.3") { pcbhole_size = sbc_data[s[0]][i+9][0];
translate([width-2*(wallthick+gap)-sidethick-adj,depth-wallthick-gap-10, pcbhole_pos = sbc_data[s[0]][i+10][4];
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
translate([-wallthick-gap-adj-6,depth-wallthick-gap-10, if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_rear") {
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); if(pcbhole_y <= 10) {
} translate([-wallthick-gap-adj-6,wallthick+gap+10,floorthick+3.4]) rotate([0,90,0])
else { cylinder(d=3, h=10+sidethick+(2*adj));
if(sbc_model == "visionfive2" || sbc_model == "visionfive2q" || sbc_model == "rock5b" || }
sbc_model == "rock5bq" || sbc_model == "rock5b-v1.3") { else {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+58, translate([-wallthick-gap-adj-6,wallthick+gap+2,floorthick+3.4]) rotate([0,90,0])
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); cylinder(d=3, h=10+sidethick+(2*adj));
translate([-wallthick-gap-adj-6,wallthick+gap+58, }
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
} }
else { if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "left_front") {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+40, if(pcbhole_y >= pcb_depth-10) {
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); translate([-wallthick-gap-adj-6,wallthick-gap+pcb_depth-14,
translate([-wallthick-gap-adj-6,wallthick+gap+40, floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj)); }
else {
translate([-wallthick-gap-adj-6,wallthick+gap+pcb_depth-8,
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
}
}
if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_rear") {
if(pcbhole_y <= 10) {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+10,floorthick+3.4])
rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
}
else {
translate([width-2*(wallthick+gap)-sidethick-adj,wallthick+gap+2,floorthick+3.4])
rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
}
}
if(class == "pcbhole" && id == pcb_id && pcbhole_pos == "right_front") {
if(pcbhole_y >= pcb_depth-10) {
translate([width-3*(wallthick+gap)-adj,wallthick-gap+pcb_depth-14,
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
}
else {
translate([width-3*(wallthick+gap)-adj,wallthick-gap+pcb_depth-8,
floorthick+3.4]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adj));
}
} }
} }
} }
@@ -351,7 +374,6 @@ module case_top(case_design) {
} }
} }
// pcb standoffs // pcb standoffs
if(sbc_top_standoffs == true) { if(sbc_top_standoffs == true) {
for (i=[1:11:len(sbc_data[s[0]])-2]) { for (i=[1:11:len(sbc_data[s[0]])-2]) {
class = sbc_data[s[0]][i+1]; class = sbc_data[s[0]][i+1];

View File

@@ -426,9 +426,9 @@ if (view == "platter") {
add(type, loc_x, loc_y, loc_z, face, rotation, [size_x, size_y, size_z], [data_1, data_2, data_3, data_4], mask); add(type, loc_x, loc_y, loc_z, face, rotation, [size_x, size_y, size_z], [data_1, data_2, data_3, data_4], mask);
} }
if (class == "platter" && type == "button_top") { if (class == "platter" && type == "button_top") {
translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_3, size_x, size_z); translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_1, size_x, size_z);
translate([loc_x-20,loc_y-10,loc_z+3]) rotate([0,0,0]) button_top(data_3, size_x, size_z); translate([loc_x-20,loc_y-10,loc_z+3]) rotate([0,0,0]) button_top(data_1, size_x, size_z);
translate([loc_x-20,loc_y-20,loc_z]) rotate([0,0,0]) button_clip(data_3); translate([loc_x-20,loc_y-20,loc_z]) rotate([0,0,0]) button_clip(data_1);
} }
if (class == "platter" && type == "h3_port_extender_holder") { if (class == "platter" && type == "h3_port_extender_holder") {
translate([loc_x,loc_y,loc_z]) rotate([0,0,0]) h3_port_extender_holder("bottom"); translate([loc_x,loc_y,loc_z]) rotate([0,0,0]) h3_port_extender_holder("bottom");
@@ -862,9 +862,9 @@ if (view == "part") {
add(type, loc_x, loc_y, loc_z, face, rotation, [size_x, size_y, size_z], [data_1, data_2, data_3, data_4], mask); add(type, loc_x, loc_y, loc_z, face, rotation, [size_x, size_y, size_z], [data_1, data_2, data_3, data_4], mask);
} }
if (class == "platter" && type == "button_top") { if (class == "platter" && type == "button_top") {
translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_3, size_x, size_z); translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_1, size_x, size_z);
translate([loc_x-20,loc_y-10,loc_z+3]) rotate([0,0,0]) button_top(data_3, size_x, size_z); translate([loc_x-20,loc_y-10,loc_z+3]) rotate([0,0,0]) button_top(data_1, size_x, size_z);
translate([loc_x-20,loc_y-20,loc_z]) rotate([0,0,0]) button_clip(data_3); translate([loc_x-20,loc_y-20,loc_z]) rotate([0,0,0]) button_clip(data_1);
} }
if (class == "platter" && type == "h3_port_extender_holder") { if (class == "platter" && type == "h3_port_extender_holder") {
translate([loc_x,loc_y,loc_z]) rotate([0,0,0]) h3_port_extender_holder("bottom"); translate([loc_x,loc_y,loc_z]) rotate([0,0,0]) h3_port_extender_holder("bottom");