add round case for low width/depth ratio sbc, fixed vent location, added rj-45_short mask

This commit is contained in:
Edward Kisiel
2022-08-27 19:45:38 -04:00
parent 6c00bb37b4
commit 0c7e482576
4 changed files with 185 additions and 52 deletions

View File

@@ -15649,7 +15649,57 @@
"view": "model", "view": "model",
"vu_rotation": "[15, 0, 0]", "vu_rotation": "[15, 0, 0]",
"wallthick": "2" "wallthick": "2"
}
}, },
"My_Custom_C4_Case": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "hk_uart",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_standoff": "[6.75, 8, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3",
"case_design": "shell",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "30",
"case_offset_y": "0",
"case_style": "none",
"cooling": "custom",
"exhaust_vents": "vent",
"fillet": "0",
"floorthick": "2",
"gap": "1",
"gpio_opening": "punchout",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"mode": "none",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "30",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "c4",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "2",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_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]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
}
},
"fileFormatVersion": "1" "fileFormatVersion": "1"
} }

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,test] 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]
a = search([accessory_name],accessory_data); a = search([accessory_name],accessory_data);
s = search([sbc_model],sbc_data); s = search([sbc_model],sbc_data);
@@ -527,39 +527,75 @@ module case_bottom(case_design) {
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=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);
translate([-16,(depth/2)-150,-adjust]) if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
cube([width+10,300,case_z-2*floorthick-2]); sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") {
translate([width-9,(depth/2)-62.5,bottom_height]) translate([-16,(depth/2)-150,-adjust])
cube([20,110,top_height-2*floorthick-2]); cube([width+10,300,case_z-2*floorthick-2]);
} translate([width-9,(depth/2)-62.5,bottom_height])
cube([20,110,top_height-2*floorthick-2]);
} }
if(case_design == "hex") { else {
difference() { translate([-width/2,0,-adjust])
translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,30]) cube([300,depth+100,case_z-2*floorthick-2]);
cylinder_fillet_inside(h=bottom_height, r=case_diameter/2, translate([(-width+50)/2,-50,bottom_height])
top=0, bottom=fillet, $fn=6, fillet_fn=case_ffn, center=true); cube([width+50,50+adjust,top_height-2*floorthick-2]);
translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+floorthick]) rotate([0,0,30])
cylinder_fillet_inside(h=bottom_height+adjust,r=(case_diameter/2)-lip/2,top=0,
bottom=fillet-1,$fn=6,fillet_fn=case_ffn, center=true);
difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,30])
cylinder(h=lip+adjust,r=(case_diameter/2)+1, $fn=6);
translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,30])
cylinder(h=lip+2*adjust,r=(case_diameter/2)-lip/4, $fn=6);
} }
} }
difference() { }
translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+2*floorthick]) rotate([0,0,30]) if(case_design == "hex") {
cylinder_fillet_inside(h=bottom_height+adjust+floorthick+lip, if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
r=(case_diameter/2)-lip/2,top=0, bottom=fillet-1, $fn=6, sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") {
fillet_fn=case_ffn, center=true); difference() {
translate([-16,(depth/2)-150,-adjust]) translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,30])
cube([width+10,300,case_z-2*floorthick-2]); cylinder_fillet_inside(h=bottom_height, r=case_diameter/2,
translate([width-9,(depth/2)-62.5,bottom_height]) top=0, bottom=fillet, $fn=6, fillet_fn=case_ffn, center=true);
cube([20,110,top_height-2*floorthick-2]); translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+floorthick]) rotate([0,0,30])
cylinder_fillet_inside(h=bottom_height+adjust,r=(case_diameter/2)-lip/2,top=0,
bottom=fillet-1,$fn=6,fillet_fn=case_ffn, center=true);
difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,30])
cylinder(h=lip+adjust,r=(case_diameter/2)+1, $fn=6);
translate([pcb_width/2,pcb_depth/2,bottom_height-lip]) rotate([0,0,30])
cylinder(h=lip+2*adjust,r=(case_diameter/2)-lip/4, $fn=6);
}
}
difference() {
translate([pcb_width/2,pcb_depth/2,(bottom_height/2)+2*floorthick]) rotate([0,0,30])
cylinder_fillet_inside(h=bottom_height+adjust+floorthick+lip,
r=(case_diameter/2)-lip/2,top=0, bottom=fillet-1, $fn=6,
fillet_fn=case_ffn, center=true);
translate([-16,(depth/2)-150,-adjust])
cube([width+10,300,case_z-2*floorthick-2]);
translate([width-9,(depth/2)-62.5,bottom_height])
cube([20,110,top_height-2*floorthick-2]);
}
}
else {
difference() {
translate([pcb_width/2,pcb_depth/2,bottom_height/2]) rotate([0,0,0])
cylinder_fillet_inside(h=bottom_height, r=case_diameter/2,
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])
cylinder_fillet_inside(h=bottom_height+adjust,r=(case_diameter/2)-lip/2,top=0,
bottom=fillet-1,$fn=6,fillet_fn=case_ffn, center=true);
difference() {
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);
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);
}
}
difference() {
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,
r=(case_diameter/2)-lip/2,top=0, bottom=fillet-1, $fn=6,
fillet_fn=case_ffn, center=true);
translate([-16,(depth/2)-150,-adjust])
cube([width+10,300,case_z-2*floorthick-2]);
translate([width-9,(depth/2)-62.5,bottom_height])
cube([20,110,top_height-2*floorthick-2]);
}
} }
} }
if(case_design == "snap") { if(case_design == "snap") {
difference() { difference() {
@@ -1084,28 +1120,55 @@ module case_top(case_design) {
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=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) { if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") {
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);
} }
else {
translate([(width/2)-wallthick-gap,-20,bottom_height-lip+top_height/2-floorthick])
cube_fillet_inside([width-2*(wallthick+gap)-1,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) { if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") {
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-.5,depth-2*(floorthick+gap),top_height+adjust]); bottom_height]) cube([wallthick-adjust,depth-2*(floorthick+gap),top_height+adjust]);
}
else {
translate([-.95,depth/2-2*wallthick-gap-(depth-2*(floorthick+gap))/2,
bottom_height]) cube([width-2*(floorthick+gap),wallthick-adjust,top_height+adjust]);
} }
} }
if(case_design == "hex") { if(case_design == "hex") {
difference() { if(width/depth >= 1.4 && sbc_model != "vim1" && sbc_model != "vim2" &&
translate([pcb_width/2,pcb_depth/2,bottom_height+(top_height/2)-lip/2]) rotate([0,0,30]) sbc_model != "vim3l" && sbc_model != "vim3" && sbc_model != "vim4") {
cylinder_fillet_inside(h=top_height+lip, r=case_diameter/2, difference() {
top=fillet, bottom=0, $fn=6, fillet_fn=case_ffn, center=true); 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)-floorthick-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)-wallthick, top=fillet, 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+(top_height/2)-floorthick-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=top_height+lip, r=(case_diameter/2)-wallthick,
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); 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,
top=fillet-1, bottom=0, $fn=6, fillet_fn=case_ffn, center=true);
}
}
else {
difference() {
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,
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])
cylinder_fillet_inside(h=top_height+lip, r=(case_diameter/2)-wallthick,
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])
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);
}
} }
} }
if(case_design == "snap") { if(case_design == "snap") {
@@ -1836,7 +1899,7 @@ module open_io() {
fan_mask(90,floorthick+6,2); fan_mask(90,floorthick+6,2);
} }
if(side == "top" && cooling == "vents" && class == "heatsink") { if(side == "top" && cooling == "vents" && class == "heatsink") {
for(r=[loc_x+7:4:48]) { for(r=[loc_x+7:4:48+loc_x]) {
translate([r,loc_y-20,case_z-(floorthick+adjust)-6]) translate([r,loc_y-20,case_z-(floorthick+adjust)-6])
cube([2,25,floorthick+(adjust*2)+8]); cube([2,25,floorthick+(adjust*2)+8]);
} }
@@ -1857,7 +1920,7 @@ module open_io() {
// gpio opening // gpio opening
if(side == "top" && class == "gpio" && type == "header_40" && rotation == 0) { if(side == "top" && class == "gpio" && type == "header_40" && rotation == 0) {
if(gpio_opening == "vent") { if(gpio_opening == "vent") {
for(r=[loc_x-2:4:10+loc_y]) { for(r=[loc_x-2:4:50+loc_x]) {
translate([r,depth-(2*wallthick)-gap-adjust,bottom_height+2]) translate([r,depth-(2*wallthick)-gap-adjust,bottom_height+2])
cube([2,wallthick+(2*adjust),top_height-floorthick-7]); cube([2,wallthick+(2*adjust),top_height-floorthick-7]);
} }

View File

@@ -1365,8 +1365,11 @@ accessory_data = [
["tinkerboard-r2_fitted", ["tinkerboard-r2_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
["test", ["hk_uart",
"sub","vent",60,120,10,"bottom",[0,0,0],2,15,4,1,4,"vertical",1] // sub vent "add2","uart_holder",5,0,1.9,"bottom",[0,0,0],10,10,0,0,0,"",0, // add uart holder
"model","hk_uart",7.5,23,5,"bottom",[0,0,-90],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",5,0,2,"bottom",[0,0,0],0,0,0,0,0,"",0, // hk uart strap
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],0,0,0,0,0,"",0] // hk uart strap
]; ];

View File

@@ -43,7 +43,7 @@
20220515 version 1.2.3 removed spacer(); added screw(); modified hk_vu8m(); added m1_hdmount(); added hdd35_25holder(length) 20220515 version 1.2.3 removed spacer(); added screw(); modified hk_vu8m(); added m1_hdmount(); added hdd35_25holder(length)
printer friendly punchout(),added remaining mask() entries, standardized mask() printer friendly punchout(),added remaining mask() entries, standardized mask()
2022xxxx version 2.x.x increased mask projection for ir_1, added mask for usb2 and usb3 single_horizontal_a, hdmi_micro, 2022xxxx version 2.x.x increased mask projection for ir_1, added mask for usb2 and usb3 single_horizontal_a, hdmi_micro,
video-hdmi_mini,microsdcard,momentary_7x3x3_90 video-hdmi_mini,microsdcard,momentary_7x3x3_90,rj45_single_short
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
@@ -2497,7 +2497,7 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
place(loc_x,loc_y-1,loc_z-pcb_z,15,11.5,rotation,side) hdmi_open("hdmi_a"); place(loc_x,loc_y-1,loc_z-pcb_z,15,11.5,rotation,side) hdmi_open("hdmi_a");
} }
if(type == "hdmi_a" && side == "top" && rotation == 0) { if(type == "hdmi_a" && side == "top" && rotation == 0) {
place(loc_x-.675,loc_y-1,loc_z+.25,15,11.5,rotation,side) hdmi_open("hdmi_a"); place(loc_x-.675,loc_y,loc_z+.25,15,11.5,rotation,side) hdmi_open("hdmi_a");
} }
if(type == "hdmi_a" && side == "top" && rotation == 90) { if(type == "hdmi_a" && side == "top" && rotation == 90) {
place(loc_x-1,loc_y,loc_z,15,11.5,rotation,side) hdmi_open("hdmi_a"); place(loc_x-1,loc_y,loc_z,15,11.5,rotation,side) hdmi_open("hdmi_a");
@@ -2735,6 +2735,23 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
place(loc_x+9,loc_y,loc_z,16,17.5,rotation,side) place(loc_x+9,loc_y,loc_z,16,17.5,rotation,side)
cube([16.5,8,14]); cube([16.5,8,14]);
} }
// rj45 short opening
if(type == "rj45_single_short" && rotation == 0) {
place(loc_x,loc_y-6,loc_z,16,17.5,rotation,side)
cube([15,8,12]);
}
if(type == "rj45_single_short" && rotation == 90) {
place(loc_x-6,loc_y,loc_z,16,17.5,rotation,side)
cube([15,8,12]);
}
if(type == "rj45_single_short" && rotation == 180) {
place(loc_x,loc_y+10,loc_z,16,17.5,rotation,side)
cube([15,8,12]);
}
if(type == "rj45_single_short" && rotation == 270) {
place(loc_x+9,loc_y,loc_z,16,17.5,rotation,side)
cube([15,8,12]);
}
// micro usb opening // micro usb opening
if(class == "usb2" && type == "micro" && rotation == 0 && side == "top") { if(class == "usb2" && type == "micro" && rotation == 0 && side == "top") {
place(loc_x,loc_y-3,loc_z,8,3,rotation,side) microusb_open(); place(loc_x,loc_y-3,loc_z,8,3,rotation,side) microusb_open();