Merge remote-tracking branch 'upstream/main' into new_fan

This commit is contained in:
David Long
2022-09-22 10:23:20 -04:00
4 changed files with 353 additions and 288 deletions

View File

@@ -5,7 +5,11 @@
This project is about autonomous SBC case creation. It utilizes the SBC Model Framework project
to automatically generate cases based on the data for any given SBC contained within the framework.
It uses the Customizer for a graphical user interface for all case attributes. Cases can be created, saved, recalled and edited using the graphical interface after enabling the customizer in the OpenSCAD menu view.
It uses the Customizer for a graphical user interface for all case attributes. Cases can be created,
saved, recalled and edited using the graphical interface after enabling the customizer in the
OpenSCAD menu->view. It also supports variable height sbc standoffs to accommodate hats and other add-on
PCB. Multi-associative parametric positioning of accessories is supported.
License: GPLv3.
![Image](SBC_Case_Builder_Cases.gif)
@@ -226,7 +230,7 @@ e.g.
Every type, regardless of its class, uses a basic set of variables(loc_x,loc_y,loc_z,”face”,rotation[],parametrics[]) but each type doesnt necessarily use all available data fields(size_x,size_y,size_z,data_1,data_2,”data_3”,data_4[]). “add1” and “add2” are used to add geometry to the case. The difference is when the addition occurs. “add1” happens at the beginning when the core case geometry is created and add2 happens after all subtractions have occurred. “suball” is used to affect all faces of a case, not just “face”. The “face” is the case piece that will be effected by the addition or subtraction. The "model" type is for placing supporting accessories in the model view. e.g. hard drives, fans. The "platter" type is for adding supporting accessories to the print platter.
The parametric array specifies the axis to enable for associated parametric positoning. An accessory can be associated with the sbc position("sbc"), case offset("case") or uses absolute values if all axises are false
The parametric array specifies the axis to enable for associated parametric positoning. An accessory can be associated with the sbc position("sbc"), case offset("case"),multi-associated which use sbc xy postion and case z offset(sbc-case_z) or uses absolute values if all axises are false
#### classes: add1, sub, suball, add2, model, platter

View File

@@ -1029,7 +1029,7 @@
"c2_shell_boombox": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_shell_boombox",
"accessory_name": "c2_shell_boombox",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1143,7 +1143,7 @@
"c2_panel_lcd3.5": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_panel_lcd3.5",
"accessory_name": "c2_panel_lcd3.5",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1200,7 +1200,7 @@
"c2_panel_boombox": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_panel_boombox",
"accessory_name": "c2_panel_boombox",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1257,7 +1257,7 @@
"c2_desktop_lcd3.5": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_desktop_lcd3.5",
"accessory_name": "c2_desktop_lcd3.5",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1314,7 +1314,7 @@
"c2_deskboom_lcd3.5": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_deskboom_lcd3.5",
"accessory_name": "2_deskboom_lcd3.5",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1542,7 +1542,7 @@
"c2_tray_boombox": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_tray_boombox",
"accessory_name": "c2_tray_boombox",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1713,7 +1713,7 @@
"c2_round": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_round",
"accessory_name": "c2_round",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
@@ -1770,7 +1770,7 @@
"c2_hex": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "c1+_hex",
"accessory_name": "c2_hex",
"adjust": "0.01",
"bottom_ext_standoff": "[6.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",

View File

@@ -37,7 +37,7 @@
2022xxxx Version 2.0.x full customizer user interface,case configuration file changed to json,
accessories kept in sbc_case_builder_accessories.cfg,
added round, hexagon, snap and fitted cases, setup additional sbc from SBC_Model_Framework,
added components and masks, added associated parametric positioning for accessories,
added components and masks, added multi-associative parametric positioning for accessories,
added individual variable height sbc standoffs
see https://github.com/hominoids/SBC_Case_Builder
@@ -2393,6 +2393,14 @@ module parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,
add(type,loc_x,loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
add(type,loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
add(type,loc_x,loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
// xy axis accessory parametrics
if(parametric[1] == true && parametric[2] == true && parametric[3] == false) {
@@ -2423,6 +2431,14 @@ module parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,
add(type,loc_x+pcb_loc_x,loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
add(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
add(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
// yz axis accessory parametrics
if(parametric[1] == false && parametric[2] == true && parametric[3] == true) {
@@ -2442,6 +2458,14 @@ module parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,
add(type,loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
add(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
add(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
// xyz axis accessory parametrics
if(parametric[1] == true && parametric[2] == true && parametric[3] == true) {
@@ -2454,13 +2478,21 @@ module parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "case" && face != "bottom" && face != "top") {
#add(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z,
add(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc") {
add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
}
@@ -2513,6 +2545,14 @@ module parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric,
sub(type,loc_x,loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
sub(type,loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
sub(type,loc_x,loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
// xy axis accessory parametrics
if(parametric[1] == true && parametric[2] == true && parametric[3] == false) {
@@ -2543,6 +2583,14 @@ module parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric,
sub(type,loc_x+pcb_loc_x,loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
sub(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
sub(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
// yz axis accessory parametrics
if(parametric[1] == false && parametric[2] == true && parametric[3] == true) {
@@ -2562,6 +2610,14 @@ module parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric,
sub(type,loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
sub(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
sub(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
// xyz axis accessory parametrics
if(parametric[1] == true && parametric[2] == true && parametric[3] == true) {
@@ -2581,5 +2637,13 @@ module parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric,
sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "top") {
sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
if(parametric[0] == "sbc-case_z" && face == "bottom") {
sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz,
face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
}
}
}

View File

@@ -29,8 +29,9 @@
20220515 Version 1.2.3 added m1_panel,m1_tray,m1_tray_drive,m1_tray_sides,m1_tray_vu5,m1_tray_vu7,show2_shell
jetsonnano_shell,jetsonnano_panel,jetsonnano_stacked,jetsonnano_tray
rockpro64_shell,rockpro64_panel,rockpro64_stacked,rockpro64_tray
2022xxxx Version 2.x.x seperated case data from accessory data. moved case data to customizer json format,
added parametrics for parametric positioning of accessories.
2022xxxx Version 2.x.x added cusotmizer graphical ui, seperated case data from accessory data, moved case data to customizer json format,
added multi-associative parametric positioning of accessories, added variable height sbc standoffs to accomidate
add-on pcb.
see https://github.com/hominoids/SBC_Case_Builder
*/
@@ -41,7 +42,7 @@
schema:
"case_name",
"class","type",loc_x,loc_y,loc_z,face,rotation[],positioning,size_x,size_y,size_z,data_1,data_2,"data_3",data_4[]
"class","type",loc_x,loc_y,loc_z,face,rotation[x,y,z],parametric[association,x,y,z],size_x,size_y,size_z,data_1,data_2,"data_3",data_4[]
classes: add1, sub, suball, add2, model, platter
@@ -71,34 +72,34 @@ accessory_data = [
// Odroid-C1+
["c1+_shell_boombox",
"add2","pcb_holder",.75,68.1,1.99,"bottom",[0,0,0],["case",false,false,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,77,21.5,"top",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108,77,21.5,"top",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","pcb_holder",.75,51.1,1.99,"bottom",[0,0,0],["case",false,true,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,60,21.5,"top",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108,60,21.5,"top",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","uart_holder",10,0,1.9,"bottom",[0,0,0],["case",false,false,false],10,10,0,0,0,"",0, // add uart holder
"sub","round",43.75,66,39,"top",[0,0,0],["case",false,false,false],5,0,5,0,0,"vertical",0, // sub cylinder
"sub","slot",70.5,65,39,"top",[0,0,0],["case",false,false,false],6,14,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.5,78,21.5,"top",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,78,21.5,"top",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",44,77,17,"top",[0,0,0],["case",false,false,false],2,10,4,1,10,"vertical",1, // vent opening
"sub","round",43.75,49,39,"top",[0,0,0],["case",false,true,false],5,0,5,0,0,"vertical",0, // sub cylinder
"sub","slot",70.5,65,48,"top",[0,0,0],["case",false,true,false],6,14,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.5,61,21.5,"top",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,61,21.5,"top",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",44,61,17,"top",[0,0,0],["case",false,true,false],2,10,4,1,10,"vertical",1, // vent opening
"model","hk_uart",12.5,23,5,"bottom",[0,0,-90],["case",false,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",10,0,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"model","hk_boom",32.25,70,4,"bottom",[90,0,0],["case",false,false,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,66.5,31,"bottom",[90,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"model","hk_boom",32.25,53,4,"bottom",[90,0,0],["case",false,true,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,49.5,31,"bottom",[90,0,0],["case",false,true,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
["c1+_panel_boombox",
"add2","pcb_holder",.75,66.1,1.99,"bottom",[0,0,0],["case",false,false,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,72.5,21.5,"front",[90,0,180],["case",false,false,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","boom_grill",108,72.5,21.5,"front",[90,0,180],["case",false,false,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","pcb_holder",.75,51.1,1.99,"bottom",[0,0,0],["case",false,true,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,57.5,21.5,"front",[90,0,180],["case",false,true,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","boom_grill",108,57.5,21.5,"front",[90,0,180],["case",false,true,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","uart_holder",10,0,1.9,"bottom",[0,0,0],["case",false,false,false],10,10,0,0,0,"",0, // add uart holder
"sub","round",16.5,75,21.5,"front",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,75,21.5,"front",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",-3,22,13,"left",[0,0,90],["case",false,false,false],2,10,5,1,8,"vertical",1, // vent opening
"sub","round",16.5,60,21.5,"front",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,60,21.5,"front",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",-3,22,13,"left",[0,0,90],["case",false,false,true],2,10,5,1,8,"vertical",1, // vent opening
"model","hk_uart",12.5,23,5,"bottom",[0,0,-90],["case",false,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",10,0,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"model","hk_boom",32.25,68,4,"bottom",[90,0,0],["case",false,false,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,64.5,31,"bottom",[90,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"model","hk_boom",32.25,53,4,"bottom",[90,0,0],["case",false,true,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,49.5,31,"bottom",[90,0,0],["case",false,true,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
@@ -154,17 +155,17 @@ accessory_data = [
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
["c1+_tray_boombox",
"add2","boom_speaker_holder",16.75,69.6,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_speaker_holder",108.25,69.6,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_grill",16.75,74,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108.25,74,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_speaker_holder",16.75,54.6,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_speaker_holder",108.25,54.6,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_grill",16.75,59,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108.25,59,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"sub","vent",44,75,12,"bottom",[0,0,0],["case",false,false,false],2,10,4,1,10,"vertical",1, // vent opening
"sub","round",-2,11,15.75,"top",[0,-90,0],["case",false,false,false],5,0,8,0,0,"vertical",0, // sub cylinder
"sub","slot",-9,37.5,17,"top",[90,0,90],["case",false,false,false],7,14,6,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.75,75,17.5,"bottom",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108.25,75,17.5,"bottom",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"model","boom_speaker",16.75,71,17.5,"bottom",[-90,0,0],["case",false,false,false],0,0,0,false,0,"left",0, // boom speaker
"model","boom_speaker",108.25,71,17.5,"bottom",[-90,0,0],["case",false,false,false],0,0,0,false,0,"right",0, // boom speaker
"sub","round",16.75,60,17.5,"bottom",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108.25,60,17.5,"bottom",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"model","boom_speaker",16.75,56,17.5,"bottom",[-90,0,0],["case",false,true,false],0,0,0,false,0,"left",0, // boom speaker
"model","boom_speaker",108.25,56,17.5,"bottom",[-90,0,0],["case",false,true,false],0,0,0,false,0,"right",0, // boom speaker
"model","hk_boom",32,0,12,"bottom",[0,0,90],["case",false,false,false],0,0,0,false,0,"front",0, // hk boom bonnet
"model","boom_vring",4.5,44.5,16,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","boom_vring",-50,0,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
@@ -180,34 +181,34 @@ accessory_data = [
// Odroid-C2
["c2_shell_boombox",
"add2","pcb_holder",.75,68.1,1.99,"bottom",[0,0,0],["case",false,false,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,77,21.5,"top",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108,77,21.5,"top",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","pcb_holder",.75,51.1,1.99,"bottom",[0,0,0],["case",false,true,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,60,21.5,"top",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108,60,21.5,"top",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","uart_holder",10,0,1.9,"bottom",[0,0,0],["case",false,false,false],10,10,0,0,0,"",0, // add uart holder
"sub","round",43.75,66,39,"top",[0,0,0],["case",false,false,false],5,0,5,0,0,"vertical",0, // sub cylinder
"sub","slot",70.5,65,39,"top",[0,0,0],["case",false,false,false],6,14,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.5,78,21.5,"top",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,78,21.5,"top",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",44,77,17,"top",[0,0,0],["case",false,false,false],2,10,4,1,10,"vertical",1, // vent opening
"sub","round",43.75,49,39,"top",[0,0,0],["case",false,true,false],5,0,5,0,0,"vertical",0, // sub cylinder
"sub","slot",70.5,48,39,"top",[0,0,0],["case",false,true,false],6,14,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.5,61,21.5,"top",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,61,21.5,"top",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",44,60,17,"top",[0,0,0],["case",false,true,false],2,10,4,1,10,"vertical",1, // vent opening
"model","hk_uart",12.5,23,5,"bottom",[0,0,-90],["case",false,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",10,0,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"model","hk_boom",32.25,70,4,"bottom",[90,0,0],["case",false,false,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,66.5,31,"bottom",[90,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"model","hk_boom",32.25,53,4,"bottom",[90,0,0],["case",false,true,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,49.5,31,"bottom",[90,0,0],["case",false,true,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
["c2_panel_boombox",
"add2","pcb_holder",.75,66.1,1.99,"bottom",[0,0,0],["case",false,false,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,72.5,21.5,"front",[90,0,180],["case",false,false,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","boom_grill",108,72.5,21.5,"front",[90,0,180],["case",false,false,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","pcb_holder",.75,51.1,1.99,"bottom",[0,0,0],["case",false,true,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,57.5,21.5,"front",[90,0,180],["case",false,true,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","boom_grill",108,57.5,21.5,"front",[90,0,180],["case",false,true,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","uart_holder",10,0,1.9,"bottom",[0,0,0],["case",false,false,false],10,10,0,0,0,"",0, // add uart holder
"sub","round",16.5,75,21.5,"front",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,75,21.5,"front",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",16.5,60,21.5,"front",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,60,21.5,"front",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",-3,22,13,"left",[0,0,90],["case",false,false,false],2,10,5,1,8,"vertical",1, // vent opening
"model","hk_uart",12.5,23,5,"bottom",[0,0,-90],["case",false,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",10,0,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"model","hk_boom",32.25,68,4,"bottom",[90,0,0],["case",false,false,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,64.5,31,"bottom",[90,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"model","hk_boom",32.25,51,4,"bottom",[90,0,0],["case",false,true,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,49.5,31,"bottom",[90,0,0],["case",false,true,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
@@ -263,17 +264,17 @@ accessory_data = [
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
["c2_tray_boombox",
"add2","boom_speaker_holder",16.75,69.6,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_speaker_holder",108.25,69.6,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_grill",16.75,74,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108.25,74,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"sub","vent",44,75,12,"bottom",[0,0,0],["case",false,false,false],2,10,4,1,10,"vertical",1, // vent opening
"add2","boom_speaker_holder",16.75,54.6,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_speaker_holder",108.25,54.6,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_grill",16.75,59,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108.25,59,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"sub","vent",44,60,12,"bottom",[0,0,0],["case",false,true,false],2,10,4,1,10,"vertical",1, // vent opening
"sub","round",-2,11,15.75,"top",[0,-90,0],["case",false,false,false],5,0,8,0,0,"vertical",0, // sub cylinder
"sub","slot",-9,37.5,17,"top",[90,0,90],["case",false,false,false],7,14,6,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.75,75,17.5,"bottom",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108.25,75,17.5,"bottom",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"model","boom_speaker",16.75,71,17.5,"bottom",[-90,0,0],["case",false,false,false],0,0,0,false,0,"left",0, // boom speaker
"model","boom_speaker",108.25,71,17.5,"bottom",[-90,0,0],["case",false,false,false],0,0,0,false,0,"right",0, // boom speaker
"sub","round",16.75,60,17.5,"bottom",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108.25,60,17.5,"bottom",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"model","boom_speaker",16.75,56,17.5,"bottom",[-90,0,0],["case",false,true,false],0,0,0,false,0,"left",0, // boom speaker
"model","boom_speaker",108.25,56,17.5,"bottom",[-90,0,0],["case",false,true,false],0,0,0,false,0,"right",0, // boom speaker
"model","hk_boom",32,0,12,"bottom",[0,0,90],["case",false,false,false],0,0,0,false,0,"front",0, // hk boom bonnet
"model","boom_vring",4.5,44.5,16,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","boom_vring",-50,0,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
@@ -289,19 +290,19 @@ accessory_data = [
// Odroid-C4
["c4_shell_boombox",
"add2","pcb_holder",.75,68.1,1.99,"bottom",[0,0,0],["case",false,false,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,77,21.5,"top",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108,77,21.5,"top",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","pcb_holder",.75,51.1,1.99,"bottom",[0,0,0],["case",false,true,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,60,21.5,"top",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108,60,21.5,"top",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","uart_holder",10,0,1.9,"bottom",[0,0,0],["case",false,false,false],10,10,0,0,0,"",0, // add uart holder
"sub","round",43.75,66,39,"top",[0,0,0],["case",false,false,false],5,0,5,0,0,"vertical",0, // sub cylinder
"sub","slot",70.5,65,39,"top",[0,0,0],["case",false,false,false],6,14,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.5,78,21.5,"top",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,78,21.5,"top",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",44,77,17,"top",[0,0,0],["case",false,false,false],2,10,4,1,10,"vertical",1, // vent opening
"sub","round",43.75,49,39,"top",[0,0,0],["case",false,true,false],5,0,5,0,0,"vertical",0, // sub cylinder
"sub","slot",70.5,48,39,"top",[0,0,0],["case",false,true,false],6,14,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
"sub","round",16.5,61,21.5,"top",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,61,21.5,"top",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",44,60,17,"top",[0,0,0],["case",false,true,false],2,10,4,1,10,"vertical",1, // vent opening
"model","hk_uart",12.5,23,5,"bottom",[0,0,-90],["case",false,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",10,0,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"model","hk_boom",32.25,70,4,"bottom",[90,0,0],["case",false,false,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,66.5,31,"bottom",[90,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"model","hk_boom",32.25,53,4,"bottom",[90,0,0],["case",false,true,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,49.5,31,"bottom",[90,0,0],["case",false,true,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
@@ -357,32 +358,32 @@ accessory_data = [
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom
["c4_panel_boombox",
"add2","pcb_holder",.75,66.1,1.99,"bottom",[0,0,0],["case",false,false,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,72.5,21.5,"front",[90,0,180],["case",false,false,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","boom_grill",108,72.5,21.5,"front",[90,0,180],["case",false,false,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","pcb_holder",.75,51.1,1.99,"bottom",[0,0,0],["case",false,true,false],123.5,35,1.6,2,0,"none",0, // add pcb holder
"add2","boom_grill",16.5,57.5,21.5,"front",[90,0,180],["case",false,true,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","boom_grill",108,57.5,21.5,"front",[90,0,180],["case",false,true,false],0,0,2,0,0,"flat",0, // add boom grill
"add2","uart_holder",10,0,1.9,"bottom",[0,0,0],["case",false,false,false],10,10,0,0,0,"",0, // add uart holder
"sub","round",16.5,75,21.5,"front",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,75,21.5,"front",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",16.5,60,21.5,"front",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108,60,21.5,"front",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","vent",-3,22,13,"left",[0,0,90],["case",false,false,false],2,10,5,1,8,"vertical",1, // vent opening
"model","hk_uart",12.5,23,5,"bottom",[0,0,-90],["case",false,false,false],10,10,0,0,0,"",0, // add uart model
"model","uart_strap",10,0,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"model","hk_boom",32.25,68,4,"bottom",[90,0,0],["case",false,false,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,64.5,31,"bottom",[90,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"model","hk_boom",32.25,53,4,"bottom",[90,0,0],["case",false,true,false],0,0,0,true,0,"front",0, // hk boom bonnet
"model","boom_vring",76.75,49.5,31,"bottom",[90,0,0],["case",false,true,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","uart_strap",-35,75,-9,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk uart strap
"platter","boom_vring",-60,100,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
["c4_tray_boombox",
"add2","boom_speaker_holder",16.75,69.6,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_speaker_holder",108.25,69.6,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_grill",16.75,74,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108.25,74,17.5,"bottom",[90,0,180],["case",false,false,false],0,0,0,0,0,"dome",0, // add boom grill
"sub","vent",44,75,12,"bottom",[0,0,0],["case",false,false,false],2,10,4,1,10,"vertical",1, // vent opening
"add2","boom_speaker_holder",16.75,54.6,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_speaker_holder",108.25,54.6,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"none",0, // add boom grill
"add2","boom_grill",16.75,59,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"add2","boom_grill",108.25,59,17.5,"bottom",[90,0,180],["case",false,true,false],0,0,0,0,0,"dome",0, // add boom grill
"sub","vent",44,60,12,"bottom",[0,0,0],["case",false,true,false],2,10,4,1,10,"vertical",1, // vent opening
"sub","round",-2,11,15.75,"top",[0,-90,0],["case",false,false,false],5,0,8,0,0,"vertical",0, // sub cylinder
"sub","slot",-9,37.5,17,"top",[90,0,90],["case",false,false,false],7,14,6,0,0,"vertical",[.25,.25,.25,.25], // sub slot
"sub","round",16.75,75,17.5,"bottom",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108.25,75,17.5,"bottom",[90,0,0],["case",false,false,false],24,0,5,0,0,"vertical",0, // sub cylinder
"model","boom_speaker",16.75,71,17.5,"bottom",[-90,0,0],["case",false,false,false],0,0,0,false,0,"left",0, // boom speaker
"model","boom_speaker",108.25,71,17.5,"bottom",[-90,0,0],["case",false,false,false],0,0,0,false,0,"right",0, // boom speaker
"sub","round",16.75,60,17.5,"bottom",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"sub","round",108.25,60,17.5,"bottom",[90,0,0],["case",false,true,false],24,0,5,0,0,"vertical",0, // sub cylinder
"model","boom_speaker",16.75,56,17.5,"bottom",[-90,0,0],["case",false,true,false],0,0,0,false,0,"left",0, // boom speaker
"model","boom_speaker",108.25,56,17.5,"bottom",[-90,0,0],["case",false,true,false],0,0,0,false,0,"right",0, // boom speaker
"model","hk_boom",32,0,12,"bottom",[0,0,90],["case",false,false,false],0,0,0,false,0,"front",0, // hk boom bonnet
"model","boom_vring",4.5,44.5,16,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // hk boom bonnet volume ring
"platter","boom_vring",-50,0,0,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0], // hk boom bonnet volume ring
@@ -398,71 +399,70 @@ accessory_data = [
// Odroid-HC4
["hc4_tray_drivebox2.5",
"add1","hc4_oled_holder",20,137,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,2,0,0,"",0, // model hc4 holder
"add2","hd_holder",98,31,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,0,"portrait",0, // add hd holder
"sub","hd_holes",98,31,-.01,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"sub","round",180,45,5,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",180,121.6,5,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",180,45,23,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",180,121.6,23,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"suball","fan",125,-.1,7,"bottom",[90,0,0],["case",false,false,false],40,0,3,1,0,"",0, // sub fan
"suball","vent",72,142,27,"bottom",[0,0,0],["case",false,false,false],2,13,4,1,4,"vertical",1, // sub vent
"model","hc4_oled",20,137,2,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // model hc4 oled
"model","fan_cover",125,-4,7,"bottom",[90,0,0],["case",false,false,false],40,0,3,2,0,"",0, // model fan
"model","hd25",98,131,2,"bottom",[0,0,-90],["case",false,false,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",98,131,20,"bottom",[0,0,-90],["case",false,false,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","fan_cover",125,-4,7,"bottom",[90,0,0],["case",false,false,false],40,0,3,2,0,"",0, // model 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
"add2","hd_holder",10,-24,2,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // add hd holder
"sub","hd_holes",10,-24,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"sub","round",92,-10,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",92,66.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",92,-10,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw access 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 access hole
"suball","fan",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
"model","hd25",10,76,20,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","fan_cover",37,-4,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan
"platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan
["hc4_shell_drivebox2.5",
"add2","hc4_oled_holder",20,136,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,2,0,0,"",0, // model hc4 holder
"add2","hd_holder",96,33,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,0,"portrait",0, // add hd holder
"sub","hd_holes",96,33,-.01,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"sub","round",178,47,5,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",178,123.6,5,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",178,47,23,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",178,123.6,23,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","vent",71.85,142,30,"top",[0,0,0],["case",false,false,false],2,13,4,1,4,"vertical",1, // sub vent
"suball","fan",125,-.1,7,"bottom",[90,0,0],["case",false,false,false],40,0,3,1,0,"",0, // sub fan
"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 access 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 access hole
"sub","round",92,47,23,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",92,123.6,23,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw access 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
"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",178,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
"sub","vent",178,35,9,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
"model","hc4_oled",20,136,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // model hc4 oled
"model","hd25",96,133,2,"bottom",[0,0,-90],["case",false,false,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",96,133,20,"bottom",[0,0,-90],["case",false,false,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","fan_cover",125,-4,7,"top",[90,0,0],["case",false,false,false],40,0,3,2,0,"",0, // model fan
"sub","vent",92,35,9,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
"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","hd25",10,79,2,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",10,79,20,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","fan_cover",39,-4,7,"top",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan
"platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan
["hc4_shell_drivebox2.5v",
"add2","hd_vertright",93,33,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,0,"portrait",0, // sub hd bottom holes
"add2","hd_vertleft",127,33,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,0,"portrait",0, // add hd holder
"sub","hd_vertright_holes",93,33,-.01,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
"sub","hd_vertleft_holes",127,33,-.01,"bottom",[0,0,0],["case",false,false,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
"sub","round",139,49,6.07,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","round",139,125.6,6.07,"bottom",[0,90,0],["case",false,false,false],3,0,3,0,0,"",0, // sub hd side screw access hole
"sub","vent",71.85,142,30,"top",[0,0,0],["case",false,false,false],2,13,4,1,4,"vertical",1, // sub vent
"sub","fan",93,-.1,30,"top",[90,0,0],["case",false,false,false],40,0,3,1,0,"",0, // sub fan
"add1","hc4_oled_holder",20,136,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,2,0,0,"",0, // model hc4 holder
"model","hc4_oled",20,136,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // model hc4 oled
"model","fan_cover",94,-3,30,"top",[90,0,0],["case",false,false,false],40,0,3,2,0,"",0, // model fan
"model","hd25",93,133,71.85,"bottom",[-90,0,-90],["case",false,false,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",127,133,2,"bottom",[90,0,-90],["case",false,false,false],0,0,0,15,0,"",0, // model 2.5 hd
"add2","hd_vertright",45.6,-21,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // sub hd bottom holes
"add2","hd_vertleft",79.6,-21,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // add hd holder
"sub","hd_vertright_holes",45.6,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
"sub","hd_vertleft_holes",79.6,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
"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 access 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 access 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
"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
"model","hd25",45.6,79,71.85,"bottom",[-90,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"model","hd25",79.3,79,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
"platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan
["hc4_shell_drivebox3.5",
"add1","hc4_oled_holder",20,177,3,"bottom",[0,0,0],["case",false,false,false],0,0,3,0,0,"",0, // model hc4 holder
"add2","hd_holder",100,28,3,"bottom",[0,0,0],["case",false,false,false],0,0,0,3.5,0,"portrait",0, // add hd holder
"sub","hd_holes",100,28,-.01,"bottom",[0,0,0],["case",false,false,false],0,0,0,3.5,3,"portrait",0, // sub hd bottom holes
"sub","round",211,56.5,9.35,"bottom",[0,90,0],["case",false,false,false],3,0,4,0,0,"",0, // sub hd side screw access hole
"sub","round",211,98.4,9.35,"bottom",[0,90,0],["case",false,false,false],3,0,4,0,0,"",0, // sub hd side screw access hole
"sub","round",211,158.1,9.35,"bottom",[0,90,0],["case",false,false,false],3,0,4,0,0,"",0, // sub hd side screw access hole
"suball","vent",72,183,29,"bottom",[0,0,0],["case",false,false,false],2,13,4,1,4,"vertical",1, // sub vent
"suball","fan",125,-1.5,7,"bottom",[90,0,0],["case",false,false,false],40,0,3,1,0,"",0, // sub fan
"model","hc4_oled",20,177,1.99,"bottom",[0,0,0],["case",false,false,false],0,0,0,0,0,"",0, // model hc4 oled
"model","hd35",100,175,3,"bottom",[0,0,-90],["case",false,false,false],0,0,0,0,0,"",0, // model 3.5 hd
"model","hd35",100,175,35,"bottom",[0,0,-90],["case",false,false,false],0,0,0,0,0,"",0, // model 3.5 hd
"model","fan_cover",125,-4,7,"top",[90,0,0],["case",false,false,false],40,0,3,2,0,"",0, // model fan
"add1","hc4_oled_holder",20,82,3,"bottom",[0,0,0],["case",false,true,false],0,0,3,0,0,"",0, // model hc4 holder
"add2","hd_holder",-19.4,-67,3,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // add hd holder
"sub","hd_holes",-19.4,-67,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,3,"portrait",0, // sub hd bottom holes
"sub","round",91.6,-38.5,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw access hole
"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 access 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 access 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
"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
"model","fan_cover",5.6,-4,7,"top",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan
"platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan
// Odroid-N1
@@ -481,40 +481,40 @@ accessory_data = [
// Odroid-M1
["m1_panel",
"sub","vent",29,20,-1,"bottom",[0,0,0],["case",false,false,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",100,32,10,"right",[0,0,90],["case",false,false,false],2,15,8,1,17,"vertical",1, // vent opening
"sub","vent",29,20,-1,"bottom",[0,0,0],["sbc",true,true,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",90,32,10,"right",[0,0,90],["case",true,false,false],2,15,8,1,17,"vertical",1, // vent opening
"sub","vent",-5.5,32,10,"left",[0,0,90],["case",false,false,false],2,15,8,1,17,"vertical",1], // vent opening
["m1_tray",
"add2","button",60,118.5,35,"top",[0,0,0],["case",false,false,false],10,0,11,0,0,"recess",0, // button
"model","button_top",60,118.5,35,"top",[0,0,0],["case",false,false,false],10,0,11,0,0,"recess",0, // button top
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,11,0,0,"recess",0, // button top
"sub","vent",29,32,34,"top",[0,0,0],["case",false,false,false],2,15,8,2,12,"horizontal",1, // top vent opening
"sub","vent",22,32,33,"top",[0,0,0],["sbc-case_z",true,true,true],2,15,8,2,12,"horizontal",1, // top vent opening
"sub","vent",29,20,-1,"bottom",[0,0,0],["case",false,false,false],2,15,8,5,12,"horizontal",1, // bottom vent opening
"sub","vent",108.5,32,10,"top",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",94.5,32,10,"top",[0,0,90],["case",true,false,false],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",-6.5,32,10,"top",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1], // vent opening
["m1_tray_drive",
"sub","hd_holes",17,22,41,"top",[0,0,0],["case",false,false,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"model","hd25",17,122,33.5,"top",[0,0,-90],["case",false,false,false],0,0,0,7.5,0,"",0, // model 2.5 hd
"sub","vent",29,32,41,"top",[0,0,0],["case",false,false,false],2,15,8,2,12,"horizontal",1, // top vent opening
"sub","hd_holes",10,22,33,"top",[0,0,0],["sbc-case_z",true,true,true],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"model","hd25",10,122,25.5,"top",[0,0,-90],["sbc-case_z",true,true,true],0,0,0,7.5,0,"",0, // model 2.5 hd
"sub","vent",22,32,33,"top",[0,0,0],["sbc-case_z",true,true,true],2,15,8,2,12,"horizontal",1, // top vent opening
"sub","vent",29,20,-1,"bottom",[0,0,0],["case",false,false,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",108.5,32,10,"top",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",94.5,32,10,"top",[0,0,90],["case",true,false,false],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",-6.5,32,10,"top",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1], // vent opening
["m1_tray_sides",
"sub","vent",29,20,-1,"bottom",[0,0,0],["case",false,false,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",104,32,10,"right",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",24,20,-1,"bottom",[0,0,0],["sbc",true,true,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",94,32,10,"right",[0,0,90],["case",true,false,false],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",-5.5,32,10,"left",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1], // vent opening
["m1_tray_vu5",
"sub","vent",29,20,-1,"bottom",[0,0,0],["case",false,false,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",105,32,10,"right",[0,0,90],["case",false,false,false],2,15,8,1,17,"vertical",1, // vent opening
"sub","vent",22,20,-1,"bottom",[0,0,0],["sbc",true,true,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",92,32,10,"right",[0,0,90],["case",true,false,false],2,15,8,1,17,"vertical",1, // vent opening
"sub","vent",-7,32,10,"left",[0,0,90],["case",false,false,false],2,15,8,1,17,"vertical",1], // vent opening
["m1_tray_vu7",
"sub","vent",36,20,-1,"bottom",[0,0,0],["case",false,false,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",123,32,10,"right",[0,0,90],["case",false,false,false],2,15,6,1,17,"vertical",1, // vent opening
"sub","vent",21,20,-1,"bottom",[0,0,0],["sbc",true,true,false],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",93,32,10,"right",[0,0,90],["case",true,false,false],2,15,6,1,17,"vertical",1, // vent opening
"sub","vent",-7,32,10,"left",[0,0,90],["case",false,false,false],2,15,6,1,17,"vertical",1], // vent opening
@@ -832,19 +832,19 @@ accessory_data = [
// Raspberry Pi
["rpi1a+_shell",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi1a+_stacked",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi1a+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["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
@@ -853,25 +853,25 @@ accessory_data = [
"sub","fan",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi1a+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["rpi1b+_shell",
"sub","fan",10,10,23.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi1b+_panel",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi1b+_tray",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["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
@@ -884,25 +884,25 @@ accessory_data = [
"sub","fan",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi1b+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["rpi3a+_shell",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3a+_stacked",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3a+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["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
@@ -911,25 +911,25 @@ accessory_data = [
"sub","fan",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3a+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["rpi3b_shell",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3b_stacked",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3b_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["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
@@ -942,25 +942,25 @@ accessory_data = [
"sub","fan",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3b_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["rpi3b+_shell",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3b+_stacked",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3b+_tray_sides",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["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
@@ -973,31 +973,28 @@ accessory_data = [
"sub","fan",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi3b+_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["rpi4b_shell",
"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",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],["case",true,true,true],30,0,6,2,0,"",0], // sub fan opening
"sub","fan",12,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,0,6,2,0,"",0], // sub fan opening
["rpi4b_panel",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_stacked_geeekpi_poe_hat",
"sub","fan",12,10,24.5,"top",[0,0,0],["case",true,true,true],30,0,6,2,0,"",0], // sub fan 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
["rpi4b_tray",
"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",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
["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
@@ -1010,10 +1007,10 @@ accessory_data = [
"sub","fan",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],["case",true,true,true],40,0,6,2,0,"",0], // sub fan 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
["rpi4b_fitted",
"sub","fan",10,10,25.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
"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
// Radxa
["rockpi4b+_shell",