added hk_pwr_button model, keyhole accessory and h3_port_extender models for header and remote mount, updated h3_ultimate case.

This commit is contained in:
Edward Kisiel
2023-01-01 23:23:26 -05:00
parent e9b5d5508e
commit d070e829f0
3 changed files with 184 additions and 52 deletions

View File

@@ -165,7 +165,7 @@ cooling = "fan"; // [none,vents,fan,custom]
exhaust_vents = "vent"; // [none,vent]
// case accessory group to load
accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2l_tray", "n2l_gpio", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_ssd", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "m1_fitted_drivebox2.5", "m1_fitted_drivebox3.5", "m1_fitted_pizzabox", "m1_fitted_drivebox3.5v", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "h3_shell", "h3_lowboy", "h3_lowboy_router", "h3_tallboy", "h3_tallboy-ssd", "h3_ultimate", "h3_shell_drivebox2.5v", "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", "quartz64b_stacked_poe_hat", "show2_shell", "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_shell_geeekpi_poe_hat", "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_stacked", "rockpi4c_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", "rockpi5b", "vim1_shell", "vim1_panel", "vim1_stacked", "vim1_tray", "vim1_tray_sides", "vim1_round", "vim1_hex", "vim1_snap", "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", "vim4_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"]
accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "xu4_keyhole", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2l_tray", "n2l_gpio", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_ssd", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "m1_fitted_drivebox2.5", "m1_fitted_drivebox3.5", "m1_fitted_pizzabox", "m1_fitted_drivebox3.5v", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "h3_shell", "h3_lowboy", "h3_lowboy_router", "h3_tallboy", "h3_tallboy-ssd", "h3_ultimate", "h3_shell_drivebox2.5v", "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", "quartz64b_stacked_poe_hat", "show2_shell", "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_shell_geeekpi_poe_hat", "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_stacked", "rockpi4c_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", "rockpi5b", "vim1_shell", "vim1_panel", "vim1_stacked", "vim1_tray", "vim1_tray_sides", "vim1_round", "vim1_hex", "vim1_snap", "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", "vim4_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);
s = search([sbc_model],sbc_data);

View File

@@ -378,6 +378,11 @@ accessory_data = [
"suball","round",10.5,-2,14.5,"top",[90,0,0],["case",false,false,false],11,0,18,0,0,"",0, // sub power plug hole
"suball","rectangle",35,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1]], // sub hdmi opening
// Odroid-XU4
["xu4_keyhole",
"add1","keyhole",50,30,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",[7,3,6,2], // keyhole
"sub","keyhole",50,30,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",[7,3,6,2]], // keyhole
// Odroid-HC4
["hc4_tray_drivebox2.5",
@@ -828,7 +833,7 @@ accessory_data = [
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"add2","batt_holder",113.5,45,20,"top",[90,0,270],["sbc-case_z",true,true,true],10,10,0,0,0,"",0, // add battery holder
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
@@ -847,7 +852,7 @@ accessory_data = [
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
@@ -856,11 +861,11 @@ accessory_data = [
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
"sub","round",111,34,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",111,110.6,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
"add2","hd_vertleft",98,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // add hd holder
"sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"add2","hd_vertleft",98,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // add hd holder
"sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"model","hd25",98,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,7,0,"",0], // model 2.5 hd
["h3_ultimate",
@@ -871,20 +876,21 @@ accessory_data = [
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"sub","rectangle",-5,76,33.5,"top",[0,0,0],["sbc",false,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening
"sub","rectangle",-5,85.5,33.5,"top",[0,0,0],["sbc",false,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening
"sub","rectangle",-5,95,33.5,"top",[0,0,0],["sbc",false,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening
"sub","round",-5,87,51.5,"top",[0,90,0],["sbc",false,true,true],3,0,6,0,0,"",0, // port extender hole
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
"model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
"model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
// "model","h3_port_extender",-1,70,18.5,"bottom",[0,0,0],["sbc",true,true,false],0,0,0,0,0,"landscape",0, // access port cover
"model","h3_port_extender",6,70,18.5,"bottom",[0,0,0],["sbc",true,true,false],0,0,0,0,0,"landscape",0, // access port cover
"model","h3_port_extender",6,70,18.5,"bottom",[0,0,0],["sbc",true,true,false],0,0,0,0,0,"header",0, // access port cover
"sub","rectangle",-5,76,33.5,"top",[0,0,0],["sbc",false,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening
"sub","rectangle",-5,85.5,33.5,"top",[0,0,0],["sbc",false,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening
"sub","rectangle",-5,95,33.5,"top",[0,0,0],["sbc",false,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening
"sub","round",-5,87,51.5,"top",[0,90,0],["sbc",false,true,true],3,0,6,0,0,0,0, // port extender hole
"model","hk_pwr_button",20,110,53,"top",[0,0,0],["sbc-case_z",true,true,true],0,0,0,0,0,0,0, // hk pwr button model
"sub","round",20,110,48,"top",[0,0,0],["sbc-case_z",true,true,true],16,0,8,0,0,0,0, // hk pwr button hole
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,true],100,80,2,0,0,"landscape",0, // access port
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
// "add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
// "add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
// "model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
// "model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
// "platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
// "platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
"sub","round",111,34,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",111,110.6,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
@@ -899,7 +905,7 @@ accessory_data = [
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
@@ -908,15 +914,15 @@ accessory_data = [
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
"sub","round",111,24,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",111,100.6,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
"sub","round",111,24,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",111,100.6,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"add2","hd_vertleft",100,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // add hd holder
"add2","hd_vertright",65,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // sub hd bottom holes
"add2","hd_vertright",65,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // sub hd bottom holes
"sub","hd_vertleft_holes",100,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"sub","hd_vertright_holes",65,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
"model","hd25",65,110,71.85,"bottom",[-90,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",100,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,15,0,"",0], // model 2.5 hd
"sub","hd_vertright_holes",65,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
"model","hd25",65,110,71.85,"bottom",[-90,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",100,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,15,0,"",0], // model 2.5 hd
// Nvidia

View File

@@ -48,6 +48,8 @@
20221101 version 2.0.2 added hdmi_a_vertical mask, increased jack_3.5 mask dia.to 6mm, lowered hdmi_a_vertical mask by 2mm,
added mask for microsdcard2
20221207 version 2.0.3 added double_stacked_usb3-usb2, hd35_vtab(side) and supporting code
2023xxxx version 2.0.x added h3_port_extender(style, mask = false), hk_pwr_button(mask = false), keyhole(keysize, mask = false)
and supporting code
see https://github.com/hominoids/SBC_Case_Builder
@@ -117,8 +119,9 @@
fan_mask(size, thick, style)
mask(loc_x,loc_y,rotation,side,class,type,case_z,wallthick,gap,floorthick,pcb_z)
punchout(width,depth,gap,thick,fillet,shape)
h3_port_extender()
h3_port_extender(style, mask = false)
hk_pwr_button(mask = false)
keyhole(keysize, mask = false)
*/
use <./lib/fillets.scad>;
@@ -271,7 +274,13 @@ module add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data
translate([loc_x,loc_y,loc_z]) rotate(rotation) boom_vring(data_1);
}
if(type == "h3_port_extender") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) h3_port_extender();
translate([loc_x,loc_y,loc_z]) rotate(rotation) h3_port_extender(data_3);
}
if(type == "hk_pwr_button") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) hk_pwr_button();
}
if(type == "keyhole") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) keyhole(data_4);
}
}
@@ -324,6 +333,9 @@ module sub(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data
if(type == "sphere") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) sphere(d=size_x);
}
if(type == "keyhole") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) keyhole(data_4, true);
}
}
@@ -1915,11 +1927,11 @@ module header(pins) {
adjust = .01;
$fn = 90;
size_x = 2.5;
size_y = 2.5 * pins;
size_x = 2.54;
size_y = 2.54 * pins;
union() {
color("black") translate([0,0,0]) cube([size_x, size_y, 2.5]);
for (i=[1:2.5:size_y]) {
for (i=[1:2.54:size_y]) {
color("silver") translate ([1,i,2.5]) cube([.64,.64,5]);
}
}
@@ -3446,26 +3458,140 @@ module vent(width,length,height,gap,rows,columns,orientation) {
}
}
// odroid-h3 gpio port extender
module h3_port_extender() {
// translate([7,258.5,103]) rotate([90,0,270]) import("stl/h3_port_extender.stl");
translate([1.6,188.5,84]) rotate([90,0,270]) import("stl/h3_port_extender.stl");
// hk power button
module hk_pwr_button(mask = false) {
// gpio 24 pin front position
translate([-3,15.75,0.25]) rotate([90,180,180]) import("stl/header_f_2x12_90.stl");
adjust=.01;
$fn = 90;
if(mask == true) {
color("silver") translate([0, 0, -19]) cylinder(h=20, d=16);
}
else {
difference() {
union() {
// light ring
difference() {
color("blue", .6) translate([0, 0, 1.67]) cylinder(h=.1, d=14.75);
color("blue", .6) translate([0, 0, 1.66]) cylinder(h=.2, d=13.75);
}
// power symbol
color("blue", .6) translate([-.5, 0, 1.65]) color("blue", .6) cube([1,3.5,.1]);
difference() {
color("blue", .6) translate([0, 0, 1.66]) cylinder(h=.1, d=5.75);
color("blue", .6) translate([0, 0, 1.65]) cylinder(h=.2, d=4.5);
color("blue", .6) translate([-1.75, 0, 1.65]) cube([3.5,4,2]);
}
// body
color("Gainsboro") cylinder(h=1.66, d1=17.75, d2=14.75);
color("silver") translate([0, 0, -19]) cylinder(h=19, d=15.8);
difference() {
color("steelblue") translate([0, 0, -27.9]) cylinder(h=9, d=15.8);
color("steelblue") translate([-1+15.8/2, -4, -19-9.1]) cube([2,8,6.1]);
color("steelblue") translate([-1-15.8/2, -4, -19-9.1]) cube([2,8,6.1]);
}
color("white") translate([-3.5, -6, -28]) cube([7,12,2]);
// gpio 24 pin rear position
// translate([4.55,18.25,0.25]) rotate([90,180,0]) import("stl/header_f_2x12_90.stl");
// serial header rear position
// color("yellow") translate([6.5,4,29.25]) rotate([180,90,0]) import("stl/header_2x5_90.stl");
// serial enclosed header rear position
// color("yellow")translate([9,-.5,12.75]) rotate([0,270,90]) import("stl/header_encl_2x5_90.stl");
// power button
translate([-2.5,0,29.5]) rotate([270,0,90]) import("stl/header_2x2_90.stl");
// nut
difference() {
translate([0, 0, -4.75]) color("Gainsboro", .6) cylinder(h=2.75, d=21.5, $fn=6);
translate([0, 0, -4.75]) color("Gainsboro", .6) cylinder(h=2.75, d=15.8);
}
// connector pins
color("silver") translate([-1.4, -.5, -34.99]) cube([2.8, 1, 7]);
color("silver") translate([-1.4, -.5+5, -34.99]) cube([2.8, 1, 7]);
color("silver") translate([-1.4, -.5-5, -34.99]) cube([2.8, 1, 7]);
color("silver") translate([-1.4-1.75, -.5+1.75, -34.99]) cube([1, 2.8, 7]);
color("silver") translate([-1.4+3.5, -.5+1.75, -34.99]) cube([1, 2.8, 7]);
}
}
}
}
// @mctom's odroid-h3 gpio port extender
module h3_port_extender(style, mask = false) {
adjust=.01;
$fn = 90;
if(style == "header") {
if(mask == true) {
translate([-20, 6.25, 15]) cube([12, 7.5, 14.75]);
translate([-20, 15.875, 15]) cube([12, 7.5, 14.75]);
translate([-20, 25.375, 15]) cube([12, 7.5, 14.75]);
translate([-20, 17, 32.5]) rotate([0, 90, 0]) cylinder(d=3.5, h=12);
}
else {
// gpio 24 pin front position
color("silver") translate([1.6, 188.5, 84]) rotate([90, 0, 270]) import("stl/h3_port_extender.stl");
// color("dimgrey") translate([-3, 15.75, 0.25]) rotate([90, 180, 180]) import("stl/header_f_2x12_90.stl");
translate([0, 2, 8.25]) rotate([0, 180, 0]) header_f(12,8);
translate([-2.54, 2, 8.25]) rotate([0, 180, 0]) header_f(12,8);
color("dimgrey") translate([-2.5, 0, 29.5]) rotate([270, 0, 90]) import("stl/header_2x2_90.stl");
}
}
if(style == "remote") {
if(mask == true) {
translate([-20, 6.25, 15]) cube([12,7.5,14.75]);
translate([-20, 15.875, 15]) cube([12,7.5,14.75]);
translate([-20, 25.375, 15]) cube([12,7.5,14.75]);
translate([-20, 17, 32.5]) rotate([0,90,0]) cylinder(d=3.5, h=12);
translate([-20, 17, 5]) rotate([0,90,0]) cylinder(d=3.5, h=12);
}
else {
// gpio 24 pin front position
color("silver") translate([1.6, 188.5, 84]) rotate([90, 0, 270]) import("stl/h3_port_extender.stl");
color("dimgrey") translate([-2.5, 0, 29.5]) rotate([270, 0, 90]) import("stl/header_2x2_90.stl");
translate([2, 2, 14.08]) rotate([0, 90, 0]) header(12);
translate([2, 2, 11.54]) rotate([0, 90, 0]) header(12);
}
}
}
// enclosed keyhole
module keyhole(keysize, mask = false) {
adjust=.01;
$fn = 90;
if(mask == true) {
union() {
translate([0, 0, -adjust]) cylinder(h=keysize[3]+2*adjust, d=keysize[0]);
translate([-keysize[1]/2, 0, -adjust]) cube([keysize[1], keysize[2]+keysize[0]/2, keysize[3]+2*adjust]);
translate([0, -keysize[1]/2, -adjust]) cube([keysize[2]+keysize[0]/2, keysize[1], keysize[3]+2*adjust]);
}
}
else {
difference() {
union() {
translate([0, 0, -adjust])
difference() {
difference() {
translate([-keysize[2], -keysize[2], keysize[3]]) cube([keysize[2]*3, keysize[2]*3, 4.5]);
translate([0, -10, 0]) rotate([0, 0, 135]) cube([20, 10, 10]);
translate([keysize[2], keysize[2], -adjust]) cube([keysize[2]*3, keysize[2]*3, keysize[3]+5]);
}
difference() {
translate([-keysize[2]+2, -keysize[2]+2, keysize[3]-adjust])
cube([-4+keysize[2]*3, -4+keysize[2]*3, 3.5]);
translate([2, -10, 0]) rotate([0, 0, 135]) cube([20, 10, 10]);
translate([+keysize[2]-2, keysize[2]-2, -adjust])
cube([keysize[2]*3, keysize[2]*3, keysize[3]+5]);
}
}
difference() {
translate([-keysize[2], -keysize[2], 0]) cube([keysize[2]*3, keysize[2]*3, keysize[3]]);
translate([0, -10, -adjust]) rotate([0, 0, 135]) cube([20, 10, 10]);
}
}
translate([keysize[2], keysize[2], -adjust]) cube([keysize[2]*3, keysize[2]*3, keysize[3]+2*adjust]);
union() {
translate([0, 0, -adjust]) cylinder(h=keysize[3]+2*adjust, d=keysize[0]);
translate([-keysize[1]/2, 0, -adjust]) cube([keysize[1], keysize[2]+keysize[0]/2, keysize[3]+2*adjust]);
translate([0, -keysize[1]/2, -adjust]) cube([keysize[2]+keysize[0]/2, keysize[1], keysize[3]+2*adjust]);
}
}
}
}