modified hex case for low width/depth ratio sbc, other fixes and updates.

This commit is contained in:
Edward Kisiel
2022-08-28 15:14:50 -04:00
parent 0c7e482576
commit 3226156e13
3 changed files with 1657 additions and 21 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -137,7 +137,7 @@ bottom_ext_standoff = [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1];
/* [Case Accessories] */ /* [Case Accessories] */
// case accessory group to load // case accessory group to load
accessory_name = "none"; // [none,c1+_shell_boombox,c1+_panel_boombox,c1+_panel_lcd3.5,c1+_desktop_lcd3.5,c1+_tray_boombox,c1+_tray_vu5,c1+_tray_vu7,c1+_round,c1+_hex,c2_shell,c2_shell_boombox,c2_panel,c2_panel_boombox,c2_panel_lcd3.5,c2_desktop_lcd3.5,c2_deskboom_lcd3.5,c2_stacked,c2_tray,c2_tray_sides,c2_tray_boombox,c2_tray_vu5,c2_tray_vu7,c2_round,c2_hex,c4_shell,c4_shell_boombox,c4_shell_vu7c,c4_panel,c4_panel_lcd3.5,c4_desktop_lcd3.5,c4_deskboom_lcd3.5,c4_panel_boombox,c4_stacked,c4_tray,c4_tray_sides,c4_tray_boombox,c4_tray_vu5,c4_tray_vu7,c4_round,c4_hex,xu4_tray_vu5,xu4_tray_vu7,xu4q_tray_vu5,xu4q_tray_vu7,n1_tray_vu5,n1_tray_vu7,n2_tray_vu5,n2_tray_vu7,n2+_tray_vu5,n2+_tray_vu7,n2+_tray_vu7_fan,m1_panel,m1_tray,m1_tray_drive,m1_tray_sides,m1_tray_vu5,m1_tray_vu7,h2_shell,h2_panel,h2_stacked,h2_tray,h2_tray_sides,h2_tray_vu5,h2_tray_vu7,h2_tray_router,h2_router_station,h2_lowboy,h2_lowboy_router,h2_shell_router,h2_shell_router-ssd,hc4_shell,hc4_panel,hc4_stacked,hc4_tray,hc4_tray_sides,hc4_tray_vu5,hc4_tray_vu7,hc4_tray_drivebox2.5,hc4_shell_drivebox2.5,hc4_shell_drivebox2.5v,hc4_shell_drivebox3.5,jetsonnano_shell,jetsonnano_panel,jetsonnano_stacked,jetsonnano_tray,jetsonnano_tray_sides,jetsonnano_snap,jetsonnano_fitted,rock64_shell,rock64_panel,rock64_stacked,rock64_tray,rock64_tray_sides,rock64_round,rock64_hex,rock64_snap,rock64_fitted,rockpro64_shell,rockpro64_panel,rockpro64_stacked,rockpro64_tray,rockpro64_tray_sides,rockpro64_round,rockpro64_hex,rockpro64_snap,rockpro64_fitted,show2_shell,rpizero_shell,rpizero_panel,rpizero_stacked,rpizero_tray,rpizero_tray_sides,rpizero_snap,rpizero_fitted,rpizero2w_shell,rpizero2w_panel,rpizero2w_stacked,rpizero2w_tray,rpizero2w_tray_sides,rpizero2w_snap,rpizero2w_fitted,rpi1a+_shell,rpi1a+_panel,rpi1a+_stacked,rpi1a+_tray,rpi1a+_tray_sides,rpi1a+_round,rpi1a+_hex,rpi1a+_snap,rpi1a+_fitted,rpi1b+_shell,rpi1b+_panel,rpi1b+_stacked,rpi1b+_tray,rpi1b+_tray_sides,rpi1b+_round,rpi1b+_hex,rpi1b+_snap,rpi1b+_fitted,rpi3a+_shell,rpi3a+_panel,rpi3a+_stacked,rpi3a+_tray,rpi3a+_tray_sides,rpi3a+_round,rpi3a+_hex,rpi3a+_snap,rpi3a+_fitted,rpi3b_shell,rpi3b_panel,rpi3b_stacked,rpi3b_tray,rpi3b_tray_sides,rpi3b_round,rpi3b_hex,rpi3b_snap,rpi3b_fitted,rpi3b+_shell,rpi3b+_panel,rpi3b+_stacked,rpi3b+_tray,rpi3b+_tray_sides,rpi3b+_round,rpi3b+_hex,rpi3b+_snap,rpi3b+_fitted,rpi4b_shell,rpi4b_panel,rpi4b_stacked,rpi4b_tray,rpi4b_tray_sides,rpi4b_round,rpi4b_hex,rpi4b_snap,rpi4b_fitted,rockpi4b+_shell,rockpi4b+_panel,rockpi4b+_stacked,rockpi4b+_tray,rockpi4b+_tray_sides,rockpi4b+_round,rockpi4b+_hex,rockpi4b+_snap,rockpi4b+_fitted,rockpi4c_shell,rockpi4c_panel,rockpi4c_stackedrockpi4c_tray,rockpi4c_tray_sides,rockpi4c_round,rockpi4c_hex,rockpi4c_snap,rockpi4c_fitted,rockpi4c+_shell,rockpi4c+_panel,rockpi4c+_stacked,rockpi4c+_tray,rockpi4c+_tray_sides,rockpi4c+_round,rockpi4c+_hex,rockpi4c+_snap,rockpi4c+_fitted,vim1_shell,vim1_panel,vim1_stacked,vim1_tray,vim1_tray_sides,vim1_snap,vim1_fitted,vim2_shell,vim2_panel,vim2_stacked,vim2_tray,vim2_tray_sides,vim2_snap,vim2_fitted,vim3l_shell,vim3l_panel,vim3l_stacked,vim3l_tray,vim3l_tray_sides,vim3l_snap,vim3l_fitted,vim3_shell,vim3_panel,vim3_stacked,vim3_tray,vim3_tray_sides,vim3_snap,vim3_fitted,vim1_shell,vim4_panel,vim4_stacked,vim4_tray,vim4_tray_sides,vim4_snap,vim4_fitted,tinkerboard_shell,tinkerboard_panel,tinkerboard_stacked,tinkerboard_tray,tinkerboard_tray_sides,tinkerboard_round,tinkerboard_hex,tinkerboard_snap,tinkerboard_fitted,tinkerboard-s_shell,tinkerboard-s_panel,tinkerboard-s_stacked,tinkerboard-s_tray,tinkerboard-s_tray_sides,tinkerboard-s_round,tinkerboard-s_hex,tinkerboard-s_snap,tinkerboard-s_fitted,tinkerboard-2_shell,tinkerboard-2_panel,tinkerboard-2_stacked,tinkerboard-2_tray,tinkerboard-2_tray_sides,tinkerboard-2_round,tinkerboard-2_hex,tinkerboard-2_snap,tinkerboard-2_fitted,tinkerboard-r2_shell,tinkerboard-r2_panel,tinkerboard-r2_stacked,tinkerboard-r2_tray,tinkerboard-r2_tray_sides,tinkerboard-r2_round,tinkerboard-r2_hex,tinkerboard-r2_snap,tinkerboard-r2_fitted,hk_uart] accessory_name = "none"; // [none,c1+_shell_boombox,c1+_panel_boombox,c1+_panel_lcd3.5,c1+_desktop_lcd3.5,c1+_tray_boombox,c1+_tray_vu5,c1+_tray_vu7,c1+_round,c1+_hex,c2_shell,c2_shell_boombox,c2_panel,c2_panel_boombox,c2_panel_lcd3.5,c2_desktop_lcd3.5,c2_deskboom_lcd3.5,c2_stacked,c2_tray,c2_tray_sides,c2_tray_boombox,c2_tray_vu5,c2_tray_vu7,c2_round,c2_hex,c4_shell,c4_shell_boombox,c4_shell_vu7c,c4_panel,c4_panel_lcd3.5,c4_desktop_lcd3.5,c4_deskboom_lcd3.5,c4_panel_boombox,c4_stacked,c4_tray,c4_tray_sides,c4_tray_boombox,c4_tray_vu5,c4_tray_vu7,c4_round,c4_hex,xu4_tray_vu5,xu4_tray_vu7,xu4q_tray_vu5,xu4q_tray_vu7,n1_tray_vu5,n1_tray_vu7,n1_round,n1_hex,n2_tray_vu5,n2_tray_vu7,n2+_tray_vu5,n2+_tray_vu7,n2+_tray_vu7_fan,m1_panel,m1_tray,m1_tray_drive,m1_tray_sides,m1_tray_vu5,m1_tray_vu7,h2_shell,h2_panel,h2_stacked,h2_tray,h2_tray_sides,h2_tray_vu5,h2_tray_vu7,h2_tray_router,h2_router_station,h2_lowboy,h2_lowboy_router,h2_shell_router,h2_shell_router-ssd,h2_round,h2_hex,hc4_shell,hc4_panel,hc4_stacked,hc4_tray,hc4_tray_sides,hc4_tray_vu5,hc4_tray_vu7,hc4_tray_drivebox2.5,hc4_shell_drivebox2.5,hc4_shell_drivebox2.5v,hc4_shell_drivebox3.5,jetsonnano_shell,jetsonnano_panel,jetsonnano_stacked,jetsonnano_tray,jetsonnano_tray_sides,jetsonnano_round,jetsonnano_hex,jetsonnano_snap,jetsonnano_fitted,rock64_shell,rock64_panel,rock64_stacked,rock64_tray,rock64_tray_sides,rock64_round,rock64_hex,rock64_snap,rock64_fitted,rockpro64_shell,rockpro64_panel,rockpro64_stacked,rockpro64_tray,rockpro64_tray_sides,rockpro64_round,rockpro64_hex,rockpro64_snap,rockpro64_fitted,show2_shell,rpizero_shell,rpizero_panel,rpizero_stacked,rpizero_tray,rpizero_tray_sides,rpizero_snap,rpizero_fitted,rpizero2w_shell,rpizero2w_panel,rpizero2w_stacked,rpizero2w_tray,rpizero2w_tray_sides,rpizero2w_snap,rpizero2w_fitted,rpi1a+_shell,rpi1a+_panel,rpi1a+_stacked,rpi1a+_tray,rpi1a+_tray_sides,rpi1a+_round,rpi1a+_hex,rpi1a+_snap,rpi1a+_fitted,rpi1b+_shell,rpi1b+_panel,rpi1b+_stacked,rpi1b+_tray,rpi1b+_tray_sides,rpi1b+_round,rpi1b+_hex,rpi1b+_snap,rpi1b+_fitted,rpi3a+_shell,rpi3a+_panel,rpi3a+_stacked,rpi3a+_tray,rpi3a+_tray_sides,rpi3a+_round,rpi3a+_hex,rpi3a+_snap,rpi3a+_fitted,rpi3b_shell,rpi3b_panel,rpi3b_stacked,rpi3b_tray,rpi3b_tray_sides,rpi3b_round,rpi3b_hex,rpi3b_snap,rpi3b_fitted,rpi3b+_shell,rpi3b+_panel,rpi3b+_stacked,rpi3b+_tray,rpi3b+_tray_sides,rpi3b+_round,rpi3b+_hex,rpi3b+_snap,rpi3b+_fitted,rpi4b_shell,rpi4b_panel,rpi4b_stacked,rpi4b_tray,rpi4b_tray_sides,rpi4b_round,rpi4b_hex,rpi4b_snap,rpi4b_fitted,rockpi4b+_shell,rockpi4b+_panel,rockpi4b+_stacked,rockpi4b+_tray,rockpi4b+_tray_sides,rockpi4b+_round,rockpi4b+_hex,rockpi4b+_snap,rockpi4b+_fitted,rockpi4c_shell,rockpi4c_panel,rockpi4c_stackedrockpi4c_tray,rockpi4c_tray_sides,rockpi4c_round,rockpi4c_hex,rockpi4c_snap,rockpi4c_fitted,rockpi4c+_shell,rockpi4c+_panel,rockpi4c+_stacked,rockpi4c+_tray,rockpi4c+_tray_sides,rockpi4c+_round,rockpi4c+_hex,rockpi4c+_snap,rockpi4c+_fitted,vim1_shell,vim1_panel,vim1_stacked,vim1_tray,vim1_tray_sides,vim1_snap,vim1_round,vim1_hex,vim1_fitted,vim2_shell,vim2_panel,vim2_stacked,vim2_tray,vim2_tray_sides,vim2_round,vim2_hex,vim2_snap,vim2_fitted,vim3l_shell,vim3l_panel,vim3l_stacked,vim3l_tray,vim3l_tray_sides,vim3l_round,vim3l_hex,vim3l_snap,vim3l_fitted,vim3_shell,vim3_panel,vim3_stacked,vim3_tray,vim3_tray_sides,vim3_round,vim3_hex,vim3_snap,vim3_fitted,vim1_shell,vim4_panel,vim4_stacked,vim4_tray,vim4_tray_sides,vim4_round,vim4_hex,vim4_snap,vim4_fitted,tinkerboard_shell,tinkerboard_panel,tinkerboard_stacked,tinkerboard_tray,tinkerboard_tray_sides,tinkerboard_round,tinkerboard_hex,tinkerboard_snap,tinkerboard_fitted,tinkerboard-s_shell,tinkerboard-s_panel,tinkerboard-s_stacked,tinkerboard-s_tray,tinkerboard-s_tray_sides,tinkerboard-s_round,tinkerboard-s_hex,tinkerboard-s_snap,tinkerboard-s_fitted,tinkerboard-2_shell,tinkerboard-2_panel,tinkerboard-2_stacked,tinkerboard-2_tray,tinkerboard-2_tray_sides,tinkerboard-2_round,tinkerboard-2_hex,tinkerboard-2_snap,tinkerboard-2_fitted,tinkerboard-r2_shell,tinkerboard-r2_panel,tinkerboard-r2_stacked,tinkerboard-r2_tray,tinkerboard-r2_tray_sides,tinkerboard-r2_round,tinkerboard-r2_hex,tinkerboard-r2_snap,tinkerboard-r2_fitted,hk_uart]
a = search([accessory_name],accessory_data); a = search([accessory_name],accessory_data);
s = search([sbc_model],sbc_data); s = search([sbc_model],sbc_data);
@@ -154,6 +154,7 @@ top_height = pcb_tmaxz+floorthick+case_offset_tz;
bottom_height = pcb_bmaxz+floorthick+case_offset_bz; bottom_height = pcb_bmaxz+floorthick+case_offset_bz;
case_z = bottom_height+top_height; case_z = bottom_height+top_height;
case_diameter = sqrt(pow(width-wallthick-gap,2)+pow(depth-wallthick-gap,2)); 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));
/* [Hidden] */ /* [Hidden] */
@@ -202,7 +203,7 @@ if (view == "platter") {
} }
if(case_design == "hex") { if(case_design == "hex") {
case_bottom(case_design); case_bottom(case_design);
translate([width+30,depth,case_z]) rotate([180,0,0]) case_top(case_design); translate([2*width,depth,case_z]) rotate([180,0,0]) case_top(case_design);
} }
if(case_design == "snap") { if(case_design == "snap") {
case_bottom(case_design); case_bottom(case_design);
@@ -528,7 +529,8 @@ module case_bottom(case_design) {
r=(case_diameter/2)-lip/2,top=0,bottom=fillet-1, $fn=case_fn, r=(case_diameter/2)-lip/2,top=0,bottom=fillet-1, $fn=case_fn,
fillet_fn=case_ffn, center=true); fillet_fn=case_ffn, center=true);
if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" && if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") { sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4" &&
sbc_model != "rpizero" && sbc_model != "rpizero2w") {
translate([-16,(depth/2)-150,-adjust]) translate([-16,(depth/2)-150,-adjust])
cube([width+10,300,case_z-2*floorthick-2]); cube([width+10,300,case_z-2*floorthick-2]);
translate([width-9,(depth/2)-62.5,bottom_height]) translate([width-9,(depth/2)-62.5,bottom_height])
@@ -544,7 +546,8 @@ module case_bottom(case_design) {
} }
if(case_design == "hex") { if(case_design == "hex") {
if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" && if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") { sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4" &&
sbc_model != "rpizero" && sbc_model != "rpizero2w") {
difference() { difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,30]) translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,30])
cylinder_fillet_inside(h=bottom_height, r=case_diameter/2, cylinder_fillet_inside(h=bottom_height, r=case_diameter/2,
@@ -573,27 +576,27 @@ module case_bottom(case_design) {
else { else {
difference() { difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,0])
cylinder_fillet_inside(h=bottom_height, r=case_diameter/2, cylinder_fillet_inside(h=bottom_height, r=hex_diameter/2,
top=0, bottom=fillet, $fn=6, fillet_fn=case_ffn, center=true); top=0, bottom=fillet, $fn=6, fillet_fn=case_ffn, center=true);
translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+floorthick]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+floorthick]) rotate([0,0,0])
cylinder_fillet_inside(h=bottom_height+adjust,r=(case_diameter/2)-lip/2,top=0, cylinder_fillet_inside(h=bottom_height+adjust,r=(hex_diameter/2)-lip/2,top=0,
bottom=fillet-1,$fn=6,fillet_fn=case_ffn, center=true); bottom=fillet-1,$fn=6,fillet_fn=case_ffn, center=true);
difference() { difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,0])
cylinder(h=lip+adjust,r=(case_diameter/2)+1, $fn=6); cylinder(h=lip+adjust,r=(hex_diameter/2)+1, $fn=6);
translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,0])
cylinder(h=lip+2*adjust,r=(case_diameter/2)-lip/4, $fn=6); cylinder(h=lip+2*adjust,r=(hex_diameter/2)-lip/4, $fn=6);
} }
} }
difference() { difference() {
translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+2*floorthick]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+2*floorthick]) rotate([0,0,0])
cylinder_fillet_inside(h=bottom_height+adjust+floorthick+lip, cylinder_fillet_inside(h=bottom_height+adjust+floorthick+lip,
r=(case_diameter/2)-lip/2,top=0, bottom=fillet-1, $fn=6, r=(hex_diameter/2)-lip/2,top=0, bottom=fillet-1, $fn=6,
fillet_fn=case_ffn, center=true); fillet_fn=case_ffn, center=true);
translate([-16,(depth/2)-150,-adjust]) translate([-width/2,0,-adjust])
cube([width+10,300,case_z-2*floorthick-2]); cube([300,depth+100,case_z-2*floorthick-2]);
translate([width-9,(depth/2)-62.5,bottom_height]) translate([(-width+50)/2,-50,bottom_height])
cube([20,110,top_height-2*floorthick-2]); cube([width+50,50+adjust,top_height-2*floorthick-2]);
} }
} }
} }
@@ -1121,7 +1124,8 @@ module case_top(case_design) {
top=fillet-1, bottom=0, $fn=case_fn, fillet_fn=case_ffn, center=true); top=fillet-1, bottom=0, $fn=case_fn, fillet_fn=case_ffn, center=true);
// io cutout // io cutout
if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" && if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") { sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4" &&
sbc_model != "rpizero" && sbc_model != "rpizero2w") {
translate([width,(depth/2)-wallthick-gap,bottom_height-lip+top_height/2-floorthick]) translate([width,(depth/2)-wallthick-gap,bottom_height-lip+top_height/2-floorthick])
cube_fillet_inside([18,depth-2*(wallthick+gap)-1,top_height+lip+2], cube_fillet_inside([18,depth-2*(wallthick+gap)-1,top_height+lip+2],
vertical=[0,0,0,0], top=[0,0,0,0], bottom=[0,0,0,0], $fn=90); vertical=[0,0,0,0], top=[0,0,0,0], bottom=[0,0,0,0], $fn=90);
@@ -1133,7 +1137,8 @@ module case_top(case_design) {
} }
} }
if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" && if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") { sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4" &&
sbc_model != "rpizero" && sbc_model != "rpizero2w") {
translate([width-2*wallthick-gap-.95,depth/2-wallthick-gap-(depth-2*(floorthick+gap))/2, translate([width-2*wallthick-gap-.95,depth/2-wallthick-gap-(depth-2*(floorthick+gap))/2,
bottom_height]) cube([wallthick-adjust,depth-2*(floorthick+gap),top_height+adjust]); bottom_height]) cube([wallthick-adjust,depth-2*(floorthick+gap),top_height+adjust]);
} }
@@ -1144,7 +1149,8 @@ module case_top(case_design) {
} }
if(case_design == "hex") { if(case_design == "hex") {
if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" && if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") { sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4" &&
sbc_model != "rpizero" && sbc_model != "rpizero2w") {
difference() { difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-lip/2]) rotate([0,0,30]) translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-lip/2]) rotate([0,0,30])
cylinder_fillet_inside(h=top_height+lip, r=case_diameter/2, cylinder_fillet_inside(h=top_height+lip, r=case_diameter/2,
@@ -1155,21 +1161,39 @@ module case_top(case_design) {
translate([pcb_width/2,pcb_depth/2,bottom_height-adjust-lip/2]) rotate([0,0,30]) translate([pcb_width/2,pcb_depth/2,bottom_height-adjust-lip/2]) rotate([0,0,30])
cylinder_fillet_inside(h=lip+2*adjust, r=(case_diameter/2)-wallthick/2+tol/2, cylinder_fillet_inside(h=lip+2*adjust, r=(case_diameter/2)-wallthick/2+tol/2,
top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true); top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true);
// io cutout
translate([width,(depth/2)-wallthick-gap,bottom_height-lip+top_height/2-floorthick])
cube_fillet_inside([18,depth-2*(wallthick+gap)-1,top_height+lip+2],
vertical=[0,0,0,0], top=[0,0,0,0], bottom=[0,0,0,0], $fn=90);
} }
} }
else { else {
difference() { difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-lip/2]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-lip/2]) rotate([0,0,0])
cylinder_fillet_inside(h=top_height+lip, r=case_diameter/2, cylinder_fillet_inside(h=top_height+lip, r=hex_diameter/2,
top=fillet, bottom=0, $fn=6, fillet_fn=case_ffn, center=true); top=fillet, bottom=0, $fn=6, fillet_fn=case_ffn, center=true);
translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-floorthick-lip/2]) rotate([0,0,30]) translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-floorthick-lip/2])
cylinder_fillet_inside(h=top_height+lip, r=(case_diameter/2)-wallthick, rotate([0,0,0]) cylinder_fillet_inside(h=top_height+lip, r=(hex_diameter/2)-wallthick,
top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true); top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true);
translate([pcb_width/2,pcb_depth/2,bottom_height-adjust-lip/2]) rotate([0,0,0]) translate([pcb_width/2,pcb_depth/2,bottom_height-adjust-lip/2]) rotate([0,0,0])
cylinder_fillet_inside(h=lip+2*adjust, r=(case_diameter/2)-wallthick/2+tol/2, cylinder_fillet_inside(h=lip+2*adjust, r=(hex_diameter/2)-wallthick/2+tol/2,
top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true); top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true);
// io cutout
translate([(width/2)-wallthick-gap,-23,bottom_height-lip+top_height/2-floorthick])
cube_fillet_inside([width-2*(wallthick+gap),40,top_height+lip+2],
vertical=[0,0,0,0], top=[0,0,0,0], bottom=[0,0,0,0], $fn=90);
} }
} }
if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4" &&
sbc_model != "rpizero" && sbc_model != "rpizero2w") {
translate([width-2*wallthick-gap-.95,depth/2-wallthick-gap-(depth-2*(floorthick+gap))/2,
bottom_height]) cube([wallthick-adjust,depth-2*(floorthick+gap),top_height+adjust]);
}
else {
translate([0,depth/2-2.25*(wallthick+gap)-(depth-2*(floorthick+gap))/2,
bottom_height]) cube([width-2*(floorthick+gap),wallthick-adjust,top_height+adjust]);
}
} }
if(case_design == "snap") { if(case_design == "snap") {
translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,floorthick*1.5+case_z]) translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,floorthick*1.5+case_z])

View File

@@ -463,6 +463,14 @@ accessory_data = [
"model","fan_cover",125,-4,7,"top",[90,0,0],40,0,3,2,0,"",0, // model fan "model","fan_cover",125,-4,7,"top",[90,0,0],40,0,3,2,0,"",0, // model fan
"platter","fan_cover",-50,50,0,"bottom",[0,0,0],40,0,3,2,0,"",0], // model fan "platter","fan_cover",-50,50,0,"bottom",[0,0,0],40,0,3,2,0,"",0], // model fan
// Odroid-N1
// internal fan
["n1_round",
"sub","fan",50,25,24.5,"top",[0,0,45],40,0,6,2,0,"",0], // sub fan opening
["n1_hex",
"sub","fan",50,25,24.5,"top",[0,0,45],40,0,6,2,0,"",0], // sub fan opening
// Odroid-N2+ // Odroid-N2+
// internal fan // internal fan
["n2+_tray_vu7_fan", ["n2+_tray_vu7_fan",
@@ -671,7 +679,48 @@ accessory_data = [
"model","h2_netcard",0,0,19,"bottom",[0,0,0],0,0,0,0,0,"portrait",0, // h2 network card "model","h2_netcard",0,0,19,"bottom",[0,0,0],0,0,0,0,0,"portrait",0, // h2 network card
"platter","access_cover",-110,30,0,"bottom",[0,0,0],100,80,2,0,0,"landscape",0], // access port cover "platter","access_cover",-110,30,0,"bottom",[0,0,0],100,80,2,0,0,"landscape",0], // access port cover
["h2_round",
"sub","rectangle",94.5,-4,13,"top",[0,0,0],14,24.5,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",68,-4,13,"top",[0,0,0],19.5,21.5,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",44.5,-4,13,"top",[0,0,0],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",19.5,-4,13,"top",[0,0,0],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",10.5,28.5,28,"top",[0,0,0],75,71,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","vent",-3.5,30,18,"top",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,18,"top",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",-3.5,30,4,"bottom",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],100,79.5,2,0,0,"landscape",0, // access port
"add2","button",12.34,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button
"add2","button",23.77,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button
"model","button_top",12.34,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"model","button_top",23.77,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],100,80,2,0,0,"landscape",0, // access port cover
"platter","button_top",-20,0,0,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"platter","button_top",-30,0,0,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"platter","access_cover",-110,30,0,"bottom",[0,0,0],100,80,2,0,0,"landscape",0], // access port cover
["h2_hex",
"sub","rectangle",94.5,-4,13,"top",[0,0,0],14,24.5,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",68,-4,13,"top",[0,0,0],19.5,21.5,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",44.5,-4,13,"top",[0,0,0],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",19.5,-4,13,"top",[0,0,0],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","rectangle",10.5,28.5,28,"top",[0,0,0],75,71,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","vent",-3.5,30,18,"top",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,18,"top",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",-3.5,30,4,"bottom",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],2,6,4,1,17,"vertical",1, // vent opening
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],100,79.5,2,0,0,"landscape",0, // access port
"add2","button",12.34,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button
"add2","button",23.77,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button
"model","button_top",12.34,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"model","button_top",23.77,106.43,53,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],100,80,2,0,0,"landscape",0, // access port cover
"platter","button_top",-20,0,0,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"platter","button_top",-30,0,0,"top",[0,0,0],10,0,32,0,0,"recess",0, // button top
"platter","access_cover",-110,30,0,"bottom",[0,0,0],100,80,2,0,0,"landscape",0], // access port cover
// Nvidia
["jetsonnano_shell", ["jetsonnano_shell",
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening "sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening
@@ -687,12 +736,19 @@ accessory_data = [
["jetsonnano_tray_sides", ["jetsonnano_tray_sides",
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,8,0,0,"",[1,1,1,1]], // sub heatsink opening "sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,8,0,0,"",[1,1,1,1]], // sub heatsink opening
["jetsonnano_round",
"sub","vent",17.5,36.375,35.5,"top",[0,0,0],2,43,4,1,16,"horizontal",1], // sub vent opening
["jetsonnano_hex",
"sub","vent",17.5,36.375,35.5,"top",[0,0,0],2,43,4,1,16,"horizontal",1], // sub vent opening
["jetsonnano_snap", ["jetsonnano_snap",
"sub","vent",17.5,36.375,35.5,"top",[0,0,0],2,43,4,1,16,"horizontal",1], // sub vent opening "sub","vent",17.5,36.375,35.5,"top",[0,0,0],2,43,4,1,16,"horizontal",1], // sub vent opening
["jetsonnano_fitted", ["jetsonnano_fitted",
"sub","vent",17.5,36.375,33.5,"top",[0,0,0],2,43,4,1,16,"horizontal",1], // sub vent opening "sub","vent",17.5,36.375,33.5,"top",[0,0,0],2,43,4,1,16,"horizontal",1], // sub vent opening
// Pine64
["rock64_shell", ["rock64_shell",
"sub","fan",10,10,23.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,23.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -769,6 +825,7 @@ accessory_data = [
"add1","rectangle",22.5,9,8.85,"top",[0,0,0],47,36,3.25,0,0,"",[.5,.5,.5,.5], // add screen trim "add1","rectangle",22.5,9,8.85,"top",[0,0,0],47,36,3.25,0,0,"",[.5,.5,.5,.5], // add screen trim
"sub","rectangle",23.5,10,8.5,"top",[0,0,0],45,34,8,0,0,"",[.5,.5,.5,.5]], // sub screen opening "sub","rectangle",23.5,10,8.5,"top",[0,0,0],45,34,8,0,0,"",[.5,.5,.5,.5]], // sub screen opening
// Raspberry Pi
["rpi1a+_shell", ["rpi1a+_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -784,6 +841,12 @@ accessory_data = [
["rpi1a+_tray_sides", ["rpi1a+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,25.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_round",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_hex",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_snap", ["rpi1a+_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -836,6 +899,12 @@ accessory_data = [
["rpi3a+_tray_sides", ["rpi3a+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,25.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_round",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_hex",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_snap", ["rpi3a+_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -935,6 +1004,7 @@ accessory_data = [
["rpi4b_fitted", ["rpi4b_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,25.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
// Radxa
["rockpi4b+_shell", ["rockpi4b+_shell",
"sub","fan",10,10,0,"bottom",[0,0,0],40,0,6,2,0,"",0, // sub fan opening "sub","fan",10,10,0,"bottom",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"add2","standoff",3.5,3.5,0,"bottom",[0,0,0],40,0,6,2,0,"",[6.75,4,3.2,10,4,1,0,0,0,4.5,5.1], "add2","standoff",3.5,3.5,0,"bottom",[0,0,0],40,0,6,2,0,"",[6.75,4,3.2,10,4,1,0,0,0,4.5,5.1],
@@ -1136,6 +1206,7 @@ accessory_data = [
"add2","standoff",61.5,3.5,0,"bottom",[0,0,0],40,0,6,2,0,"",[6.75,4,3.2,10,4,1,0,0,0,4.5,5.1], "add2","standoff",61.5,3.5,0,"bottom",[0,0,0],40,0,6,2,0,"",[6.75,4,3.2,10,4,1,0,0,0,4.5,5.1],
"add2","standoff",61.5,52.5,0,"bottom",[0,0,0],40,0,6,2,0,"",[6.75,4,3.2,10,4,1,0,0,0,4.5,5.1]], "add2","standoff",61.5,52.5,0,"bottom",[0,0,0],40,0,6,2,0,"",[6.75,4,3.2,10,4,1,0,0,0,4.5,5.1]],
// Khadas
["vim1_shell", ["vim1_shell",
"sub","fan",10,10,19.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,19.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -1151,6 +1222,14 @@ accessory_data = [
["vim1_tray_sides", ["vim1_tray_sides",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["vim1_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_snap", ["vim1_snap",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -1172,6 +1251,14 @@ accessory_data = [
["vim2_tray_sides", ["vim2_tray_sides",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["vim2_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_snap", ["vim2_snap",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -1193,6 +1280,14 @@ accessory_data = [
["vim3l_tray_sides", ["vim3l_tray_sides",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["vim3l_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_snap", ["vim3l_snap",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -1214,6 +1309,14 @@ accessory_data = [
["vim3_tray_sides", ["vim3_tray_sides",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["vim3_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_snap", ["vim3_snap",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
@@ -1235,12 +1338,21 @@ accessory_data = [
["vim4_tray_sides", ["vim4_tray_sides",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["vim4_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_snap", ["vim4_snap",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
["vim4_fitted", ["vim4_fitted",
"sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,20.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening
// Asus
["tinkerboard_shell", ["tinkerboard_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],40,0,6,2,0,"",0], // sub fan opening