5 Commits

9 changed files with 822 additions and 3874 deletions

5
.gitmodules vendored
View File

@@ -1,3 +1,6 @@
[submodule "SBC_Model_Framework"]
path = SBC_Model_Framework
url = git@github.com:hominoids/SBC_Model_Framework.git
url = https://github.com/hominoids/SBC_Model_Framework.git
[submodule "NopSCADlib"]
path = NopSCADlib
url = https://github.com/hominoids/NopSCADlib

1
NopSCADlib Submodule

Submodule NopSCADlib added at d95e1e64ed

View File

@@ -82,19 +82,27 @@ There are currently 47 SBC represented by 43 models, from 8 manufactures in SBC
- ORANGE = unverified, may be usable but missing component data
- RED = unverified, not usable due to incomplete component data
### Utility
Additionally, template creation and i/o panel layouts in a dxf format can be easily created and integrated into other designs or for hand fabrication by sectioning a case panel for the desired SBC. The case design “panel” will most likely work best.
The SBC that I do not own have been created using manufacturer supplied mechanical drawings. Some of the drawings are missing information or have errors that effect all or part of the drawings and subsequent SBC models. If you own an SBC that is not represented or verified in SBC Model Framework, please consider adding it or helping to correct errors in existing SBC data. An SBC can be verified to be accurate if a printed shell case from SBC Case Builder fits. Any misalignment is corrected in the SBC Model Framework model data(sbc_models.cfg).
### Future Development
There are a few more ideas for base cases to be worked on as well as a host of supporting accessory models that need to be created. It would also be nice to have all of the OEM accessories for each SBC in the library as well. Im still looking for a better way to create accessory entries and groups, and continue to expand and verify as many SBC as possible. With that and the obvious benefit of autonomously making SBC cases, this project has also been helping fulfill another personal goal.
Computer aided design(CAD) has been around along time but I have been interested in exploring approaches to the next step, computer autonomous design. Regardless of the current or future object creation method, whether it be manufactured or materialized, I believe a universal approach to autonomous design will be needed to advance the human condition. This application has helped me explore and think about practical approaches that might be possible right now in autonomous design and I hope to continue this work by developing new tools and techniques for the new CAD, computer autonomous design.
### Notes
Notes:
Due to the number of possibilities, no pre-compiled case stls are included.
“tol”, located at the bottom of the Adjustments Tab, is a tolerance fitment adjustment for the snap, fitted, round and hex tops. Adjust accordingly if the tops are too tight or loose.
Template creation and i/o panel layouts in a dxf format can be easily created and integrated into other designs or for hand fabrication by sectioning a case panel for the desired SBC. The case design “panel” will most likely work best.
### Case Designs and Styles
The case naming convention for standard cases in the configuration file follow the basic form of “sbc”_”design”_”style” e.g. c4_shell or c4_tray_vu5.
#### Current Case Count 368
#### Current Case Count 377
##### Hardkernel
@@ -120,7 +128,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
**Odorid-XU4Q cases** - 11 : xu4q_shell, xu4q_panel, xu4q_stacked, xu4q_tray, xu4q_tray_sides, xu4q_tray_vu5, xu4q_tray_vu7, xu4q_round, xu4q_hex, xu4q_snap, xu4q_fitted
**Odroid-H2 cases** - 17 : h2_shell, h2_lowboy, h2_lowboy_router, h2_shell_router, h2_shell_routerssd, h2_panel, h2_stacked, h2_tray, h2_tray_sides, h2_tray_vu5, h2_tray_vu7, h2_tray_router, h2_router_station, h2_round, h2_hex, h2_snap, h2_fitted
**Odroid-H2 and H3 cases** - 17 : h2_shell, h2_lowboy, h2_lowboy_router, h2_shell_router, h2_shell_routerssd, h2_panel, h2_stacked, h2_tray, h2_tray_sides, h2_tray_vu5, h2_tray_vu7, h2_tray_router, h2_router_station, h2_round, h2_hex, h2_snap, h2_fitted
**Odroid-Show2** cases - 1 : show2_shell
@@ -164,6 +172,8 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
**ROCKPi 4c+** - 9 : rockpi4c+_shell, rockpi4c+_panel, rockpi4c+_stacked, rockpi4c+_tray, rockpi4c+_tray_sides, rockpi4c+_round, rockpi4c+_hex, rockpi4c+_snap, rockpi4c+_fitted
**ROCKPi5b** - 9 : rockpi5b_shell, rockpi5b_panel, rockpi5b_stacked, rockpi5b_tray, rockpi5b_tray_sides, rockpi5b_round, rockpi5b_hex, rockpi5b_snap, rockpi5b_fitted
##### Khadas

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 3.2 MiB

File diff suppressed because it is too large Load Diff

View File

@@ -43,12 +43,12 @@
see https://github.com/hominoids/SBC_Case_Builder
*/
include <./NopSCADlib/lib.scad>;
include <./SBC_Model_Framework/sbc_models.cfg>;
include <./sbc_case_builder_accessories.cfg>;
use <./SBC_Model_Framework/sbc_models.scad>;
use <./sbc_case_builder_library.scad>;
use <./lib/fillets.scad>;
include <./SBC_Model_Framework/sbc_models.cfg>;
include <./sbc_case_builder_accessories.cfg>;
/* [View] */
// viewing mode "platter", "model", "debug"
@@ -78,7 +78,7 @@ case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted]
// base case style
case_style = "none"; // ["none","vu5","vu7","sides"]
// single board computer model
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "m1", "m1_noheatsink", "h2", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "test"]
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "m1", "m1_noheatsink", "h2", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "rockpi5b", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "test"]
// sbc location x axis
pcb_loc_x = 0; //[0:.5:200]
// sbc location y axis
@@ -159,7 +159,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", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_drive", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "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", "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_stacked_geeekpi_poe_hat", "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", "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", "NopSCADlib", "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", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_drive", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "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", "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_stacked_geeekpi_poe_hat", "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", "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

@@ -405,7 +405,7 @@ accessory_data = [
"sub","round",92,66.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,-10,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,66.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"suball","fan",37,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"suball","fan_mask",37,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"suball","vent",72,87,27,"bottom",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent
"model","hc4_oled",20,81,2,"bottom",[0,0,0],["case",false,true,false],0,0,0,0,0,"",0, // model hc4 oled
"model","hd25",10,76,2,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
@@ -417,12 +417,12 @@ accessory_data = [
"add2","hc4_oled_holder",20,82,1.99,"bottom",[0,0,0],["case",false,true,false],0,0,2,0,0,"",0, // model hc4 holder
"add2","hd_holder",10,-21,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // add hd holder
"sub","hd_holes",10,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"sub","round",92,47,5,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,123.6,5,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,47,23,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,123.6,23,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screws hole
"sub","round",92,-5,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,69.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,-5,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
"sub","round",92,69.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole
"sub","vent",71.85,88,30,"top",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent
"suball","fan",39,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"suball","fan_mask",39,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"sub","vent",-3.5,35,34,"top",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
"sub","vent",92,35,34,"top",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
"sub","vent",-3.5,35,9,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
@@ -441,7 +441,7 @@ accessory_data = [
"sub","round",91.3,-5,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,6,0,0,"",0, // sub hd side screw hole
"sub","round",91.3,71.6,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,6,0,0,"",0, // sub hd side screw hole
"sub","vent",71.85,88,30,"top",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent
"sub","fan",45.6,-.1,30,"top",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"sub","fan_mask",45.6,-.1,30,"top",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"add1","hc4_oled_holder",20,82,1.99,"bottom",[0,0,0],["case",false,true,false],0,0,2,0,0,"",0, // model hc4 holder
"model","hc4_oled",20,82,1.99,"bottom",[0,0,0],["case",false,true,false],0,0,0,0,0,"",0, // model hc4 oled
"model","fan_cover",46.6,-3,30,"top",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan
@@ -457,7 +457,7 @@ accessory_data = [
"sub","round",91.6,3.4,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
"sub","round",91.6,63.1,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
"suball","vent",72,88,29,"bottom",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent
"suball","fan",5.6,-1.5,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"suball","fan_mask",5.6,-1.5,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
"model","hc4_oled",20,82,1.99,"bottom",[0,0,0],["case",false,true,false],0,0,0,0,0,"",0, // model hc4 oled
"model","hd35",-19.4,80,3,"bottom",[0,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd
"model","hd35",-19.4,80,35,"bottom",[0,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd
@@ -467,10 +467,10 @@ accessory_data = [
// Odroid-N1
// internal fan
["n1_round",
"sub","fan",50,25,24.5,"top",[0,0,45],["case",false,false,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",50,25,24.5,"top",[0,0,45],["case",false,false,false],40,0,6,2,0,"",0], // sub fan opening
["n1_hex",
"sub","fan",50,25,24.5,"top",[0,0,45],["case",false,false,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",50,25,24.5,"top",[0,0,45],["case",false,false,false],40,0,6,2,0,"",0], // sub fan opening
// Odroid-N2+
// internal fan
@@ -582,7 +582,7 @@ accessory_data = [
"sub","vent",111.5,30,18,"top",[0,0,90],["case",true,false,false],2,6,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
"add2","batt_holder",98,40,44,"top",[180,0,-18],["case",false,false,false],10,10,0,0,0,"",0, // add uart
"add2","batt_holder",98,40,44,"top",[180,0,-18],["case",false,false,true],10,10,0,0,0,"",0, // add uart
"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,11,0,0,"recess",0, // button
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
@@ -732,74 +732,74 @@ accessory_data = [
// Pine64
["rock64_shell",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_panel",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_stacked",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_tray",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_tray_sides",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_snap",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rock64_fitted",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rockpro64_shell",
"sub","fan",43,28,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,28,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_panel",
"sub","fan",43,26,24,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,26,24,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_stacked",
"sub","fan",43,26,24,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,26,24,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_tray",
"sub","fan",43,26,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,26,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,8,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_tray_sides",
"sub","fan",43,26,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,26,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,8,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_round",
"sub","fan",43,28,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,28,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_hex",
"sub","fan",43,28,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,28,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,25,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_snap",
"sub","fan",43,28,28,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,28,28,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,28,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_fitted",
"sub","fan",43,28,28,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",43,28,28,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,28,"top",[0,0,0],["sbc-case_z",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["quartz64b_stacked_poe_hat",
"sub","fan",20,0,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",20,0,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["show2_shell",
"model","hk_wb2",6.25,24.675,16,"top",[0,0,180],["sbc",true,true,true],0,0,0,0,0,"",0, // hk weatherboard2
@@ -812,592 +812,609 @@ accessory_data = [
// Raspberry Pi
["rpi1a+_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_round",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_hex",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1a+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_shell",
"sub","fan",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,23.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi1b+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_round",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_hex",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3a+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi3b+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_shell_geeekpi_poe_hat",
"sub","fan",12,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,0,6,3,0,"",0], // sub fan opening
"sub","fan_mask",12,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,0,6,3,0,"",0], // sub fan opening
["rpi4b_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
// Radxa
["rockpi4b+_shell",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_panel",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_stacked",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_tray",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_tray_sides",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_round",
"suball","rectangle",4.5,-26,14.5,"top",[0,0,0],["sbc",true,true,true],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,13,"top",[0,0,0],["sbc",true,true,true],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_hex",
"suball","rectangle",4.5,-20,14.5,"top",[0,0,0],["sbc",true,true,true],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,13,"top",[0,0,0],["sbc",true,true,true],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_snap",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4b+_fitted",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_shell",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_panel",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_stacked",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_tray",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_tray_sides",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_round",
"suball","rectangle",4.5,-26,14.5,"top",[0,0,0],["sbc",true,true,true],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,13,"top",[0,0,0],["sbc",true,true,true],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_hex",
"suball","rectangle",4.5,-20,14.5,"top",[0,0,0],["sbc",true,true,true],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,13,"top",[0,0,0],["sbc",true,true,true],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_snap",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c_fitted",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_shell",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_panel",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_stacked",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_tray",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_tray_sides",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_round",
"suball","rectangle",4.5,-26,14.5,"top",[0,0,0],["sbc",true,true,true],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,13,"top",[0,0,0],["sbc",true,true,true],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_hex",
"suball","rectangle",4.5,-20,14.5,"top",[0,0,0],["sbc",true,true,true],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,13,"top",[0,0,0],["sbc",true,true,true],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_snap",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
["rockpi4c+_fitted",
"sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,0,"bottom",[0,0,0],["sbc",true,true,false],40,0,6,2,0,"",0], // sub fan opening
// Khadas
["vim1_shell",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_panel",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_stacked",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_tray",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_tray_sides",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_snap",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim1_fitted",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_shell",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_panel",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_stacked",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_tray",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_tray_sides",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_snap",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim2_fitted",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_shell",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_panel",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_stacked",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_tray",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_tray_sides",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_snap",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3l_fitted",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_shell",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_panel",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_stacked",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_tray",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_tray_sides",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_snap",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim3_fitted",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_shell",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_panel",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_stacked",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_tray",
"sub","fan",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_tray_sides",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_round",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_hex",
"sub","fan",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",38.5,11,19.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",6,14,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_snap",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
["vim4_fitted",
"sub","fan",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","fan_mask",3,11,20.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","vent",44,14,22.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,2,4,11,1,"horizontal",1], // sub vent opening
// Asus
["tinkerboard_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-s_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-2_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_shell",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_round",
"suball","rectangle",4.5,-26,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,10,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_hex",
"suball","rectangle",4.5,-20,5.5,"top",[0,0,0],["case",false,false,false],11,20,8,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"suball","rectangle",21.5,-26,4,"top",[0,0,0],["case",false,false,false],21,20,15.5,0,0,"vertical",[1,1,1,1], // sub hdmi opening
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_snap",
"sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["tinkerboard-r2_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"sub","fan_mask",10,10,25.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening
// hk uart group
["hk_uart",
"add2","uart_holder",-25,0,1.9,"bottom",[0,0,0],["sbc",true,false,false],10,10,0,0,0,"",0, // add uart holder
"model","hk_uart",-22.5,23,5,"bottom",[0,0,-90],["sbc",true,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",-25,0,2,"bottom",[0,0,0],["sbc",true,false,false],0,0,0,0,0,"",0,
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0] // hk uart strap
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk uart strap
["NopSCADlib",
"model","led",65,30,82,"top",[0,0,0],["case",true,true,true],0,0,0,5,0,"red",LED3mm, // add led model
"model","led",65,40,82,"top",[0,0,0],["case",true,true,true],0,0,0,5,0,"green",LED5mm, // add led model
"model","led",65,55,82,"top",[0,0,0],["case",true,true,true],0,0,0,5,0,"yellow",LED10mm, // add led model
"model","pin_header",55,30,82,"top",[90,0,0],["case",true,true,true],2,20,false,false,false,"black",2p54header, // add 2p54header
"model","pin_header",55,40,82,"top",[90,0,0],["case",true,true,true],2,2,false,false,false,"white",jst_xh_header, // add jst_xh_header model
"model","pin_header",55,50,82,"top",[90,0,0],["case",true,true,true],2,2,false,false,false,"white",jst_ph_header, // add jst_ph_header model
"model","pin_header",55,60,82,"top",[90,0,0],["case",true,true,true],2,2,false,false,false,"white",jst_zh_header, // add jst_zh_header model
"model","fuseholder",40,30,82,"top",[90,0,0],["case",true,true,true],0,0,0,2,0,"",0, // add fuseholder model
"model","iec",5,30,82,"top",[90,0,0],["case",true,true,true],0,0,0,0,0,"",IEC_fused_inlet, // add IEC model
"model","pillar",10,30,50,"top",[0,0,0],["case",true,true,true],0,0,0,0,0,"",M3x10_nylon_hex_pillar, // add pillar model
"model","pillar",20,30,50,"top",[0,0,0],["case",true,true,true],0,0,0,0,0,"",M3x6_hex_pillar, // add pillar model
"model","screw",35.5,29.75,50,"top",[0,0,0],["case",true,true,true],0,0,0,0,false,"",M3_cap_screw, // add screw model
"model","nut",35.5,29.75,40,"top",[0,0,0],["case",true,true,true],0,0,0,false,false,false,M3_nut, // add screw model
"model","fan",35.5,29.75,32,"top",[0,0,0],["case",true,true,true],0,0,0,0,0,"",fan40x11], // add fan model
];

View File

@@ -44,7 +44,7 @@
printer friendly punchout(),added remaining mask() entries, standardized mask()
20221005 version 2.0.0 increased mask projection for ir_1, added mask for usb2 and usb3 single_horizontal_a, hdmi_micro,
video-hdmi_mini,microsdcard,momentary_7x3x3_90,rj45_single_short, added subtraction microusb and sphere
2022xxxx version 2.0.x added hdmi_a_vertical mask
see https://github.com/hominoids/SBC_Case_Builder
@@ -116,7 +116,8 @@
*/
use <./lib/fillets.scad>;
include <./NopSCADlib/lib.scad>
use <./lib/fillets.scad>
/* placement module *must be first* for children() */
module place(x,y,z,size_x,size_y,rotation,side) {
@@ -253,6 +254,9 @@ module add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data
if(type == "fan_cover") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) fan_cover(size_x, size_z);
}
if(type == "fan") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) fan(data_4);
}
if(type == "feet") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) feet(size_x, size_z);
}
@@ -265,6 +269,32 @@ module add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data
if(type == "boom_vring") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) boom_vring(data_1);
}
if(type == "screw") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) screw(data_4);
}
if(type == "nut") {
length = screw_head_type(data_4) == hs_grub ? screw_radius(data_4) * 4
: screw_radius(data_4) <= 1.5 ? 10
: screw_max_thread(data_4) ? screw_longer_than(screw_max_thread(data_4) + 5)
: 30;
translate([loc_x,loc_y,loc_z]) rotate(rotation) screw(data_4, length);
}
if(type == "pillar") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) pillar(data_4);
}
if(type == "iec") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) iec(data_4);
}
if(type == "fuseholder") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) fuseholder(data_1);
}
if(type == "pin_header") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) pin_header(data_4, size_x, size_y, size_z, data_1, data_2, data_3);
}
if(type == "led") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) led(data_4,data_3,data_1);
}
}
@@ -304,7 +334,7 @@ module sub(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data
if(type == "punchout") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) punchout(size_x,size_y,data_1,size_z,data_2,data_3);
}
if(type == "fan") {
if(type == "fan_mask") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) fan_mask(size_x, size_z, data_1);
}
if(type == "vent") {
@@ -2562,6 +2592,19 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
if(type == "hdmi_a" && side == "bottom" && rotation == 270) {
place(loc_x-1,loc_y-1,loc_z-pcb_z,15,11.5,rotation,side) hdmi_open("hdmi_a");
}
// hdmi vertical opening
if(type == "hdmi_a_vertical" && side == "top" && rotation == 0) {
place(loc_x-.5,loc_y,loc_z,15,11.5,rotation,side) translate([-.25,0,17.4]) rotate([0,90,0]) hdmi_open("hdmi_a");
}
if(type == "hdmi_a_vertical" && side == "top" && rotation == 90) {
place(loc_x-1,loc_y,loc_z,15,11.5,rotation,side) translate([-.25,0,17.4]) rotate([0,90,0]) hdmi_open("hdmi_a");
}
if(type == "hdmi_a_vertical" && side == "top" && rotation == 180) {
place(loc_x,loc_y+1,loc_z,15,11.5,rotation,side) translate([-.25,0,17.4]) rotate([0,90,0]) hdmi_open("hdmi_a");
}
if(type == "hdmi_a_vertical" && side == "top" && rotation == 270) {
place(loc_x+1,loc_y-.5,loc_z,15,11.5,rotation,side) translate([-.25,0,17.4]) rotate([0,90,0]) hdmi_open("hdmi_a");
}
// hdmi micro opening
if(class == "video" && type == "hdmi_micro" && rotation == 0 && side == "top") {
place(loc_x,loc_y,loc_z,7.25,6.5,rotation,side) hdmi_open("hdmi_micro");
@@ -2952,6 +2995,23 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
place(loc_x+2,loc_y+1.5,loc_z-3.25,6,8,rotation,side)
rotate([90,0,0]) slot(3.75,6,8);
}
// single vertical usbc opening
if(class == "usbc" && type == "single_vertical" && rotation == 0 && side == "top") {
place(loc_x+1.5,loc_y+2,loc_z+1.75,6,8,rotation,side)
translate([.25,0,5.5]) rotate([90,90,0]) slot(3.75,5.5,8);
}
if(class == "usbc" && type == "single_vertical" && rotation == 90 && side == "top") {
place(loc_x+2,loc_y+1.5,loc_z+1.75,6,8,rotation,side)
translate([.25,0,5.5]) rotate([90,90,0]) slot(3.75,5.5,8);
}
if(class == "usbc" && type == "single_vertical" && rotation == 180 && side == "top") {
place(loc_x+1.5,loc_y-3-adjust,loc_z+2,6,8,rotation,side)
translate([.25,0,5.5]) rotate([90,90,0]) slot(3.75,5.5,8);
}
if(class == "usbc" && type == "single_vertical" && rotation == 270 && side == "top") {
place(loc_x-3-adjust,loc_y+1.5,loc_z+1.75,6,8,rotation,side)
translate([.25,0,5.5]) rotate([90,90,0]) slot(3.75,5.5,8);
}
// ir opening
if(type == "ir_1" && rotation == 0) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)