add round case for low width/depth ratio sbc, fixed vent location, added rj-45_short mask
This commit is contained in:
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user