reformatted c1+,c2,c4,xu4,xu4q,hc4 cases, adjusted multiple accessories and other changes.

This commit is contained in:
Edward Kisiel
2022-07-31 22:52:29 -04:00
parent 3eb91c0b39
commit 44bf215ff6
3 changed files with 2552 additions and 1309 deletions

View File

@@ -29,7 +29,7 @@
20220515 Version 1.2.3 added m1_panel,m1_tray,m1_tray_drive,m1_tray_sides,m1_tray_vu5,m1_tray_vu7,show2_shell 20220515 Version 1.2.3 added m1_panel,m1_tray,m1_tray_drive,m1_tray_sides,m1_tray_vu5,m1_tray_vu7,show2_shell
jetsonnano_shell,jetsonnano_panel,jetsonnano_stacked,jetsonnano_tray jetsonnano_shell,jetsonnano_panel,jetsonnano_stacked,jetsonnano_tray
rockpro64_shell,rockpro64_panel,rockpro64_stacked,rockpro64_tray rockpro64_shell,rockpro64_panel,rockpro64_stacked,rockpro64_tray
2022xxxx Version 2.x.x seperated case data from accessory data. moved case data to customizer and json format 2022xxxx Version 2.x.x seperated case data from accessory data. moved case data to customizer json format
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
*/ */
@@ -567,7 +567,6 @@ accessory_data = [
"suball","vent",72,142,27,"bottom",[0,0,0],2,13,4,1,4,"vertical",1, // sub vent "suball","vent",72,142,27,"bottom",[0,0,0],2,13,4,1,4,"vertical",1, // sub vent
"model","hc4_oled",20,137,2,"bottom",[0,0,0],0,0,0,0,0,"",0, // model hc4 oled "model","hc4_oled",20,137,2,"bottom",[0,0,0],0,0,0,0,0,"",0, // model hc4 oled
"model","fan_cover",125,-4,7,"bottom",[90,0,0],40,0,3,2,0,"",0, // model fan "model","fan_cover",125,-4,7,"bottom",[90,0,0],40,0,3,2,0,"",0, // model fan
"model","uart_strap",118,0,42,"top",[0,180,0],0,0,0,0,0,"",0, // model uart strap
"model","hd25",98,131,2,"bottom",[0,0,-90],0,0,0,15,0,"",0, // model 2.5 hd "model","hd25",98,131,2,"bottom",[0,0,-90],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",98,131,20,"bottom",[0,0,-90],0,0,0,15,0,"",0, // model 2.5 hd "model","hd25",98,131,20,"bottom",[0,0,-90],0,0,0,15,0,"",0, // model 2.5 hd
"model","fan_cover",125,-4,7,"bottom",[90,0,0],40,0,3,2,0,"",0, // model fan "model","fan_cover",125,-4,7,"bottom",[90,0,0],40,0,3,2,0,"",0, // model fan
@@ -616,8 +615,8 @@ accessory_data = [
"sub","round",211,56.5,9.35,"bottom",[0,90,0],3,0,4,0,0,"",0, // sub hd side screw access hole "sub","round",211,56.5,9.35,"bottom",[0,90,0],3,0,4,0,0,"",0, // sub hd side screw access hole
"sub","round",211,98.4,9.35,"bottom",[0,90,0],3,0,4,0,0,"",0, // sub hd side screw access hole "sub","round",211,98.4,9.35,"bottom",[0,90,0],3,0,4,0,0,"",0, // sub hd side screw access hole
"sub","round",211,158.1,9.35,"bottom",[0,90,0],3,0,4,0,0,"",0, // sub hd side screw access hole "sub","round",211,158.1,9.35,"bottom",[0,90,0],3,0,4,0,0,"",0, // sub hd side screw access hole
"suball","vent",72,142,27,"bottom",[0,0,0],2,13,4,1,4,"vertical",1, // sub vent "suball","vent",72,183,29,"bottom",[0,0,0],2,13,4,1,4,"vertical",1, // sub vent
"suball","fan",125,-.1,7,"bottom",[90,0,0],40,0,3,1,0,"",0, // sub fan "suball","fan",125,-1.5,7,"bottom",[90,0,0],40,0,3,1,0,"",0, // sub fan
"model","hc4_oled",20,177,1.99,"bottom",[0,0,0],0,0,0,0,0,"",0, // model hc4 oled "model","hc4_oled",20,177,1.99,"bottom",[0,0,0],0,0,0,0,0,"",0, // model hc4 oled
"model","hd35",100,175,3,"bottom",[0,0,-90],0,0,0,0,0,"",0, // model 3.5 hd "model","hd35",100,175,3,"bottom",[0,0,-90],0,0,0,0,0,"",0, // model 3.5 hd
"model","hd35",100,175,35,"bottom",[0,0,-90],0,0,0,0,0,"",0, // model 3.5 hd "model","hd35",100,175,35,"bottom",[0,0,-90],0,0,0,0,0,"",0, // model 3.5 hd

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,8 @@
20220312 Version 1.2.0 added fillet array, button cutout style, hk_lcd35, other fixes and maintenance 20220312 Version 1.2.0 added fillet array, button cutout style, hk_lcd35, other fixes and maintenance
20220320 Version 1.2.1 added hk_boom bonnet model and accessories, hk_uart model, fixed uart opening, 20220320 Version 1.2.1 added hk_boom bonnet model and accessories, hk_uart model, fixed uart opening,
enabled pcb_z, added tabs and fixed tray case top, other fixes and maintenance enabled pcb_z, added tabs and fixed tray case top, other fixes and maintenance
20220406 Version 1.2.2 added vu7c, vu8m and weatherboard2 models, other additions, fixes and maintenance 20220406 Version 1.2.2 added vu7c, vu8m and weatherboard2 models, other additions,
fixes and maintenance
20220515 Version 1.2.3 added odroid-m1, jetson nano, rockpro64, completed mask(), improved docs 20220515 Version 1.2.3 added odroid-m1, jetson nano, rockpro64, completed mask(), improved docs
changed tray top design changed tray top design
2022xxxx Version 2.0.x added round, hexagon, snap and fitted cases, full customizer user interface, 2022xxxx Version 2.0.x added round, hexagon, snap and fitted cases, full customizer user interface,
@@ -67,12 +68,11 @@ move_rear = 0; // [-1:100]
/* [Case Adjustments] */ /* [Case Adjustments] */
// base case design // base case design
case_design = "shell"; // ["shell","panel","stacked","tray","round","hex","snap","fitted"] case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted]
// base case style // base case style
case_style = "none"; // ["none","vu5","vu7","sides"] case_style = "none"; // ["none","vu5","vu7","sides"]
// single board computer model // single board computer model
sbc_model = "c4"; // ["c1+","c2","c4","xu4","xu4q","mc1","hc1","hc4","n1","n2","n2+","h2","rpi3b+","a64","rock64","rockpro64","atomicpi","jetsonnano","show2"] sbc_model = "c4"; // [c1+,c2,c4,xu4,xu4q,mc1,hc1,hc4,m1,n1,n2,n2+,h2,rpi3b+,a64,rock64,rockpro64,atomicpi,jetsonnano,show2]
// sbc location x axis // sbc location x axis
pcb_loc_x = 0; //[0:.5:200] pcb_loc_x = 0; //[0:.5:200]
// sbc location y axis // sbc location y axis
@@ -112,13 +112,13 @@ case_ext_standoffs = false;
// enable sata punchout // enable sata punchout
sata_punchout = false; sata_punchout = false;
// gpio openings // gpio openings
gpio_opening = "none"; // ["none","vent","open","punchout"] gpio_opening = "none"; // [none,vent,open,punchout]
// cooling openings // cooling openings
cooling = "fan"; // ["none","vents","fan","custom"] cooling = "fan"; // [none,vents,fan,custom]
// exhaust vents // exhaust vents
exhaust_vents = "vent"; // ["none","vent"] exhaust_vents = "vent"; // [none,vent]
// special mode // special mode
mode = "none"; // ["none","net_card"] mode = "none"; // [none,net_card]
// top case standoff - [diameter,height(top_height-pcb_loc_z),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed hole, 3=nut holder, 4=blind hole),standoff style(0=hex, 1=cylinder),enable reverse standoff,enable insert at top of standoff,insert hole dia.,insert depth] // top case standoff - [diameter,height(top_height-pcb_loc_z),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed hole, 3=nut holder, 4=blind hole),standoff style(0=hex, 1=cylinder),enable reverse standoff,enable insert at top of standoff,insert hole dia.,insert depth]
top_standoff = [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1]; top_standoff = [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1];
@@ -452,9 +452,9 @@ module case_bottom(case_design) {
vertical=[0,0,0,0], top=[0,0,0,0], vertical=[0,0,0,0], top=[0,0,0,0],
bottom=[fillet,fillet,fillet,fillet,fillet], $fn=90); bottom=[fillet,fillet,fillet,fillet,fillet], $fn=90);
translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,(bottom_height/2)+floorthick]) translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,(bottom_height/2)+floorthick])
cube_fillet_inside([width-(wallthick*2),depth-(wallthick*2),bottom_height+adjust], cube_fillet_inside([width-(wallthick*2),depth-(wallthick*2),bottom_height+adjust],
vertical=[c_fillet-1,c_fillet-1,c_fillet-1,c_fillet-1], vertical=[c_fillet-1,c_fillet-1,c_fillet-1,c_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 nuts // right side nuts
translate([width-wallthick-gap-wallthick-4+adjust,wallthick+gap+10, translate([width-wallthick-gap-wallthick-4+adjust,wallthick+gap+10,
@@ -491,7 +491,7 @@ module case_bottom(case_design) {
} }
else { else {
translate([-wallthick-gap,depth-(2*wallthick)-gap,bottom_height-adjust]) translate([-wallthick-gap,depth-(2*wallthick)-gap,bottom_height-adjust])
rotate([0,0,0]) cube([width,wallthick,top_height-floorthick]); rotate([0,0,0]) cube([width,wallthick,top_height-floorthick]);
} }
// rear panel // rear panel
translate([-wallthick-gap,-wallthick-gap,bottom_height-adjust]) translate([-wallthick-gap,-wallthick-gap,bottom_height-adjust])
@@ -579,7 +579,8 @@ module case_bottom(case_design) {
top=[0,0,0,0], bottom=[fillet,fillet,fillet,fillet,fillet], $fn=90); top=[0,0,0,0], bottom=[fillet,fillet,fillet,fillet,fillet], $fn=90);
translate([(width/2)-wallthick-gap, translate([(width/2)-wallthick-gap,
(depth/2)-wallthick-gap,(case_z/2)+floorthick]) (depth/2)-wallthick-gap,(case_z/2)+floorthick])
cube_fillet_inside([width-(wallthick*2),depth-(wallthick*2),case_z+floorthick], cube_fillet_inside([width-(wallthick*2),depth-(wallthick*2),
case_z+floorthick],
vertical=[c_fillet-1,c_fillet-1,c_fillet-1,c_fillet-1], vertical=[c_fillet-1,c_fillet-1,c_fillet-1,c_fillet-1],
top=[0,0,0,0], bottom=[fillet,fillet,fillet,fillet,fillet], $fn=90); top=[0,0,0,0], bottom=[fillet,fillet,fillet,fillet,fillet], $fn=90);
difference() { difference() {
@@ -623,26 +624,32 @@ module case_bottom(case_design) {
if(case_design == "tray") { if(case_design == "tray") {
// right side bottom attachment holes // right side bottom attachment holes
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10, translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) { if(depth >= 75) {
translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10, translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
} }
else { else {
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+40, translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
} }
// left side bottom attachment holes // left side bottom attachment holes
translate([-wallthick-gap-adjust,wallthick+gap+10, translate([-wallthick-gap-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) { if(depth >= 75) {
translate([-wallthick-gap-adjust-6,depth-wallthick-gap-10, translate([-wallthick-gap-adjust-6,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
} }
else { else {
translate([-wallthick-gap-adjust-6,wallthick+gap+40, translate([-wallthick-gap-adjust-6,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
} }
// right side bottom nut inset // right side bottom nut inset
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+10, translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+10,
@@ -785,44 +792,44 @@ module case_bottom(case_design) {
pcb_hole_size = sbc_data[s[0]][i+2]; pcb_hole_size = sbc_data[s[0]][i+2];
if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 7 || i == 10) { if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 7 || i == 10) {
if(sbc_model == "h2" && mode == "net_card" && i == 7) { if(sbc_model == "h2" && mode == "net_card" && i == 7) {
netcard_standoff = [bottom_standoff[0], // diameter netcard_standoff = [bottom_standoff[0],
bottom_height-pcb_z-4, // height bottom_height-pcb_z bottom_height-pcb_z-4,
bottom_standoff[2], // holesize bottom_standoff[2],
bottom_standoff[3], // supportsize bottom_standoff[3],
bottom_standoff[4], // supportheight bottom_standoff[4],
bottom_standoff[5], // 1=countersink, 2=recessed hole, 3=nut holder, 4=blind bottom_standoff[5],
bottom_standoff[6], // standoff style 0=hex, 1=cylinder bottom_standoff[6],
bottom_standoff[7], // enable reverse standoff bottom_standoff[7],
bottom_standoff[8], // enable insert at top of standoff bottom_standoff[8],
bottom_standoff[9], // insert hole dia. mm bottom_standoff[9],
bottom_standoff[10]]; // insert depth mm bottom_standoff[10]];
translate([pcb_hole_x-(netcard_standoff[0]/2)-2.6+adjust, pcb_hole_y-gap,0]) translate([pcb_hole_x-(netcard_standoff[0]/2)-2.6+adjust, pcb_hole_y-gap,0])
cube([gap+1.6,2,netcard_standoff[1]]); cube([gap+1.6,2,netcard_standoff[1]]);
} }
else { else {
translate([pcb_hole_x-(bottom_standoff[0]/2)-2.6+adjust, pcb_hole_y-gap,0]) translate([pcb_hole_x-(bottom_standoff[0]/2)-2.6+adjust, pcb_hole_y-gap,0])
cube([gap+1.6,2,bottom_standoff[1]]); cube([gap+1.6,2,bottom_height-pcb_z+pcb_loc_z]);
} }
} }
if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 13 || i == 16) { if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 13 || i == 16) {
if(sbc_model == "h2" && mode == "net_card" && i == 13) { if(sbc_model == "h2" && mode == "net_card" && i == 13) {
netcard_standoff = [bottom_standoff[0], // diameter netcard_standoff = [bottom_standoff[0],
bottom_height-pcb_z-4, // height bottom_height-pcb_z bottom_height-pcb_z-4,
bottom_standoff[2], // holesize bottom_standoff[2],
bottom_standoff[3], // supportsize bottom_standoff[3],
bottom_standoff[4], // supportheight bottom_standoff[4],
bottom_standoff[5], // 1=countersink, 2=recessed hole, 3=nut holder, 4=blind bottom_standoff[5],
bottom_standoff[6], // standoff style 0=hex, 1=cylinder bottom_standoff[6],
bottom_standoff[7], // enable reverse standoff bottom_standoff[7],
bottom_standoff[8], // enable insert at top of standoff bottom_standoff[8],
bottom_standoff[9], // insert hole dia. mm bottom_standoff[9],
bottom_standoff[10]]; // insert depth mm bottom_standoff[10]];
translate([pcb_hole_x+(netcard_standoff[0]/2)-.5+adjust, pcb_hole_y-gap,0]) translate([pcb_hole_x+(netcard_standoff[0]/2)-.5+adjust, pcb_hole_y-gap,0])
cube([gap+1.5,2,netcard_standoff[1]]); cube([gap+1.5,2,netcard_standoff[1]]);
} }
else { else {
translate([pcb_hole_x+(bottom_standoff[0]/2)-.5+adjust, pcb_hole_y-gap,0]) translate([pcb_hole_x+(bottom_standoff[0]/2)-.5+adjust, pcb_hole_y-gap,0])
cube([gap+1.5,2,bottom_standoff[1]]); cube([gap+1.5,2,bottom_height-pcb_z+pcb_loc_z]);
} }
} }
} }
@@ -832,14 +839,15 @@ module case_bottom(case_design) {
if(case_ext_standoffs == true && sidewall_support == true) { if(case_ext_standoffs == true && sidewall_support == true) {
// right-rear standoff // right-rear standoff
if(width-pcb_loc_x-pcb_width >= 10 || pcb_loc_y >= 10) { if(width-pcb_loc_x-pcb_width >= 10 || pcb_loc_y >= 10) {
translate([width-(2*(wallthick+gap))-(c_fillet/2)+(bottom_ext_standoff[0]/2)-.5,(c_fillet/2)-1,0]) translate([width-(2*(wallthick+gap))-(c_fillet/2)+(bottom_ext_standoff[0]/2)-.5,
cube([gap+adjust+2,2,bottom_ext_standoff[1]]); (c_fillet/2)-1,0]) cube([gap+adjust+2,2,bottom_ext_standoff[1]]);
} }
// right-front standoff // right-front standoff
if((width-pcb_loc_x-pcb_width >= 10 && depth-pcb_loc_y-pcb_depth >= 10) || width-pcb_loc_x-pcb_width >= 10) { if((width-pcb_loc_x-pcb_width >= 10 && depth-pcb_loc_y-pcb_depth >= 10)
translate([width-(2*(wallthick+gap))-(c_fillet/2)+(bottom_ext_standoff[0]/2)-.5, || width-pcb_loc_x-pcb_width >= 10) {
depth-(c_fillet/2)-(2*(wallthick+gap))-1,0]) translate([width-(2*(wallthick+gap))-(c_fillet/2)+(bottom_ext_standoff[0]/2)-.5,
cube([gap+adjust+2,2,bottom_ext_standoff[1]]); depth-(c_fillet/2)-(2*(wallthick+gap))-1,0])
cube([gap+adjust+2,2,bottom_ext_standoff[1]]);
} }
// left-rear standoff // left-rear standoff
if(pcb_loc_x >= 10 || pcb_loc_y >= 10) { if(pcb_loc_x >= 10 || pcb_loc_y >= 10) {
@@ -849,7 +857,8 @@ module case_bottom(case_design) {
// left-front standoff // left-front standoff
if(pcb_loc_x >= 10 || depth-pcb_loc_y-pcb_depth >= 10) { if(pcb_loc_x >= 10 || depth-pcb_loc_y-pcb_depth >= 10) {
translate([(c_fillet/2)-(wallthick+gap)-(bottom_ext_standoff[0]/2)+.6, translate([(c_fillet/2)-(wallthick+gap)-(bottom_ext_standoff[0]/2)+.6,
depth-(c_fillet/2)-(2*(wallthick+gap))-1,0]) cube([gap+adjust+2,2,bottom_ext_standoff[1]]); depth-(c_fillet/2)-(2*(wallthick+gap))-1,0])
cube([gap+adjust+2,2,bottom_ext_standoff[1]]);
} }
} }
@@ -1194,17 +1203,17 @@ module case_top(case_design) {
pcb_hole_y = sbc_data[s[0]][i+1]+pcb_loc_y; pcb_hole_y = sbc_data[s[0]][i+1]+pcb_loc_y;
pcb_hole_size = sbc_data[s[0]][i+2]; pcb_hole_size = sbc_data[s[0]][i+2];
if (pcb_hole_x!=0 && pcb_hole_y!=0) { if (pcb_hole_x!=0 && pcb_hole_y!=0) {
normal_standoff = [top_standoff[0], // diameter normal_standoff = [top_standoff[0],
top_height+pcb_loc_z, // height bottom_height-pcb_z top_height+pcb_loc_z,
top_standoff[2], // holesize top_standoff[2],
top_standoff[3], // supportsize top_standoff[3],
top_standoff[4], // supportheight top_standoff[4],
top_standoff[5], // 1=countersink, 2=recessed hole, 3=nut holder, 4=blind top_standoff[5],
top_standoff[6], // standoff style 0=hex, 1=cylinder top_standoff[6],
top_standoff[7], // enable reverse standoff top_standoff[7],
top_standoff[8], // enable insert at top of standoff top_standoff[8],
top_standoff[9], // insert hole dia. mm top_standoff[9],
top_standoff[10]]; // insert depth mm top_standoff[10]];
translate([pcb_hole_x,pcb_hole_y,case_z]) standoff(normal_standoff); translate([pcb_hole_x,pcb_hole_y,case_z]) standoff(normal_standoff);
} }
} }
@@ -1217,10 +1226,10 @@ module case_top(case_design) {
standoff(top_ext_standoff); standoff(top_ext_standoff);
} }
// right-front standoff // right-front standoff
if((width-pcb_loc_x-pcb_width >= 10 && depth-pcb_loc_y-pcb_depth >= 10) || width-pcb_loc_x-pcb_width >= 10) { if((width-pcb_loc_x-pcb_width >= 10 && depth-pcb_loc_y-pcb_depth >= 10)
translate([width-(c_fillet/2)-(2*(wallthick+gap)), || width-pcb_loc_x-pcb_width >= 10) {
depth-(c_fillet/2)-(2*(wallthick+gap)),case_z]) translate([width-(c_fillet/2)-(2*(wallthick+gap)),
standoff(top_ext_standoff); depth-(c_fillet/2)-(2*(wallthick+gap)),case_z]) standoff(top_ext_standoff);
} }
// left-rear standoff // left-rear standoff
if(pcb_loc_x >= 10 || pcb_loc_y >= 10) { if(pcb_loc_x >= 10 || pcb_loc_y >= 10) {
@@ -1241,12 +1250,12 @@ module case_top(case_design) {
pcb_hole_y = sbc_data[s[0]][i+1]+pcb_loc_y; pcb_hole_y = sbc_data[s[0]][i+1]+pcb_loc_y;
pcb_hole_size = sbc_data[s[0]][i+2]; pcb_hole_size = sbc_data[s[0]][i+2];
if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 7 || i == 13) { if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 7 || i == 13) {
translate([pcb_hole_x-1, pcb_hole_y-(top_standoff[0]/2)-(gap-adjust)-1.4,-case_z]) translate([pcb_hole_x-1, pcb_hole_y-(top_standoff[0]/2)-(gap-adjust)-1.4,
cube([2,gap+1.6,top_standoff[1]]); -case_z]) cube([2,gap+1.6,top_height]);
} }
if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 10 || i == 16) { if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 10 || i == 16) {
translate([pcb_hole_x-1, pcb_hole_y+(top_standoff[0]/2)-.6+adjust,-case_z]) translate([pcb_hole_x-1, pcb_hole_y+(top_standoff[0]/2)-.6+adjust,-case_z])
cube([2,gap+1.6,top_standoff[1]]); cube([2,gap+1.6,top_height]);
} }
} }
} }
@@ -1257,12 +1266,12 @@ module case_top(case_design) {
pcb_hole_y = sbc_data[s[0]][i+1]+pcb_loc_y; pcb_hole_y = sbc_data[s[0]][i+1]+pcb_loc_y;
pcb_hole_size = sbc_data[s[0]][i+2]; pcb_hole_size = sbc_data[s[0]][i+2];
if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 7 || i == 10) { if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 7 || i == 10) {
translate([pcb_hole_x+pcb_loc_x-(top_standoff[0]/2)-gap-adjust-.45,pcb_hole_y-1,bottom_height+adjust]) translate([pcb_hole_x+pcb_loc_x-(top_standoff[0]/2)-gap-adjust-.45,pcb_hole_y-1,
cube([gap+adjust+1,2,top_standoff[1]]); bottom_height+adjust]) cube([gap+adjust+1,2,top_height]);
} }
if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 13 || i == 16) { if (pcb_hole_x!=0 && pcb_hole_y!=0 && i == 13 || i == 16) {
translate([pcb_hole_x+pcb_loc_x+(top_standoff[0]/2)-adjust-.45,pcb_hole_y-1,bottom_height+adjust]) translate([pcb_hole_x+pcb_loc_x+(top_standoff[0]/2)-adjust-.45,pcb_hole_y-1,
cube([gap+adjust+1,2,top_standoff[1]]); bottom_height+adjust]) cube([gap+adjust+1,2,top_height]);
} }
} }
} }
@@ -1271,24 +1280,26 @@ module case_top(case_design) {
if(case_ext_standoffs == true && sidewall_support == true) { if(case_ext_standoffs == true && sidewall_support == true) {
// right-rear standoff // right-rear standoff
if(width-pcb_loc_x-pcb_width >= 10 || pcb_loc_y >= 10) { if(width-pcb_loc_x-pcb_width >= 10 || pcb_loc_y >= 10) {
translate([width-(2*(wallthick+gap))-(c_fillet/2)+(top_ext_standoff[0]/2)-.6,(c_fillet/2)-1,bottom_height]) translate([width-(2*(wallthick+gap))-(c_fillet/2)+(top_ext_standoff[0]/2)-.6,
cube([gap+adjust+2,2,top_standoff[1]]); (c_fillet/2)-1,bottom_height]) cube([gap+adjust+2,2,top_height]);
} }
// right-front standoff // right-front standoff
if((width-pcb_loc_x-pcb_width >= 10 && depth-pcb_loc_y-pcb_depth >= 10) || width-pcb_loc_x-pcb_width >= 10) { if((width-pcb_loc_x-pcb_width >= 10 && depth-pcb_loc_y-pcb_depth >= 10)
translate([width-(2*(wallthick+gap))-(c_fillet/2)+(top_ext_standoff[0]/2)-.6, || width-pcb_loc_x-pcb_width >= 10) {
depth-(c_fillet/2)-(2*(wallthick+gap))-1,bottom_height]) translate([width-(2*(wallthick+gap))-(c_fillet/2)+(top_ext_standoff[0]/2)-.6,
cube([gap+adjust+2,2,top_ext_standoff[1]]); depth-(c_fillet/2)-(2*(wallthick+gap))-1,bottom_height])
cube([gap+adjust+2,2,top_height]);
} }
// left-rear standoff // left-rear standoff
if(pcb_loc_x >= 10 || pcb_loc_y >= 10) { if(pcb_loc_x >= 10 || pcb_loc_y >= 10) {
translate([(c_fillet/2)-(wallthick+gap)-(top_ext_standoff[0]/2)+.6,(c_fillet/2)-1, translate([(c_fillet/2)-(wallthick+gap)-(top_ext_standoff[0]/2)+.6,(c_fillet/2)-1,
bottom_height]) cube([gap+adjust+2,2,top_ext_standoff[1]]); bottom_height]) cube([gap+adjust+2,2,top_height]);
} }
// left-front standoff // left-front standoff
if(pcb_loc_x >= 10 || depth-pcb_loc_y-pcb_depth >= 10) { if(pcb_loc_x >= 10 || depth-pcb_loc_y-pcb_depth >= 10) {
translate([(c_fillet/2)-(wallthick+gap)-(top_ext_standoff[0]/2)+.6,depth-(c_fillet/2)-(2*(wallthick+gap))-1, translate([(c_fillet/2)-(wallthick+gap)-(top_ext_standoff[0]/2)+.6,
bottom_height]) cube([gap+adjust+2,2,top_ext_standoff[1]]); depth-(c_fillet/2)-(2*(wallthick+gap))-1, bottom_height])
cube([gap+adjust+2,2,top_height]);
} }
} }
} }
@@ -1626,7 +1637,8 @@ module case_side(case_design,case_style,side) {
} }
} }
if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") { if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") {
sub("rectangle",loc_x+1,loc_y+1.75,loc_z+25.5,face,rotation,26.5,wallthick+gap+4,15,data_1,data_2,data_3,[.1,.1,.1,.1]); sub("rectangle",loc_x+1,loc_y+1.75,loc_z+25.5,face,rotation,26.5,
wallthick+gap+4,15,data_1,data_2,data_3,[.1,.1,.1,.1]);
} }
if ((class == "add1" || class == "add2") && face == "bottom" && type == "access_port") { if ((class == "add1" || class == "add2") && face == "bottom" && type == "access_port") {
if(data_3 == "landscape") { if(data_3 == "landscape") {
@@ -1728,9 +1740,15 @@ module open_io() {
if(side == "bottom" && cooling == "custom" && class == "heatsink") { if(side == "bottom" && cooling == "custom" && class == "heatsink") {
translate([loc_x+12,loc_y-14,-(floorthick-adjust)]) translate([loc_x+12,loc_y-14,-(floorthick-adjust)])
linear_extrude(height = wallthick+(2*adjust)) import(file = "./dxf/customfan.dxf"); linear_extrude(height = wallthick+(2*adjust)) import(file = "./dxf/customfan.dxf");
} }
if(side == "bottom" && exhaust_vents == "vent" && (cooling == "fan" || cooling == "vents"
|| cooling == "custom") && class == "heatsink" && gpio_opening != "vent" && gpio_opening != "open"
&& gpio_opening != "punchout") {
for(r=[loc_x+7:4:46+loc_x]) {
translate([r,depth-(2*wallthick)-adjust-2,floorthick+2])
cube([2,wallthick+(2*adjust)+1,top_height-floorthick-6]);
}
}
// top cooling openings // top cooling openings
if(side == "top" && cooling == "fan" && class == "heatsink" if(side == "top" && cooling == "fan" && class == "heatsink"
&& type != "h2_oem" && type != "n2_oem" && type != "n2+_oem") { && type != "h2_oem" && type != "n2_oem" && type != "n2+_oem") {