From 33bace995fbc9e45845571506a11be825dd9f825 Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Sat, 17 Sep 2022 22:04:05 -0400 Subject: [PATCH 1/3] added multi-associative parametric positioning of accessories which use sbc xy postion and case z offset, sbc-case_z. --- README.md | 8 +- sbc_case_builder.scad | 68 ++++++++- sbc_case_builder_accessories.cfg | 248 +++++++++++++++---------------- 3 files changed, 196 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index aa3f0bf..3fa8c21 100644 --- a/README.md +++ b/README.md @@ -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 it’s class, uses a basic set of variables(loc_x,loc_y,loc_z,”face”,rotation[],parametrics[]) but each type doesn’t 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 diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index af1fad3..567f04b 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -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); + } } } diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index 908aaa3..9ca356a 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -767,13 +767,13 @@ accessory_data = [ "sub","fan",10,10,23.5,"top",[0,0,0],["sbc",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 + "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",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 + "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",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rock64_snap", @@ -823,285 +823,285 @@ accessory_data = [ "suball","round",48.75,0,6,"top",[90,0,0],["sbc",true,true,true],4,0,4,0,0,"",0, // sub button access hole "suball","round",57.25,0,6,"top",[90,0,0],["sbc",true,true,true],4,0,4,0,0,"",0, // sub button access hole "suball","round",65.75,0,6,"top",[90,0,0],["sbc",true,true,true],4,0,4,0,0,"",0, // sub button access hole - "sub","rectangle",.5,8,8.5,"top",[0,0,0],["case",false,false,false],6,16.5,8,0,0,"",[.5,.5,.5,.5], // sub gpio opening - "add1","rectangle",22.5,9,8.85,"top",[0,0,0],["case",false,false,false],47,36,3.25,0,0,"",[.5,.5,.5,.5], // add screen trim - "sub","rectangle",23.5,10,8.5,"top",[0,0,0],["case",false,false,false],45,34,8,0,0,"",[.5,.5,.5,.5]], // sub screen opening + "sub","rectangle",.5,8,8.5,"top",[0,0,0],["case",false,false,false],6,16.5,8,0,0,"",[.5,.5,.5,.5], // sub gpio opening + "add1","rectangle",22.5,9,8.85,"top",[0,0,0],["case",false,false,false],47,36,3.25,0,0,"",[.5,.5,.5,.5], // add screen trim + "sub","rectangle",23.5,10,8.5,"top",[0,0,0],["case",false,false,false],45,34,8,0,0,"",[.5,.5,.5,.5]], // sub screen opening // 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 + "sub","fan",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",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 - "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 + "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 ["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 + "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 ["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 + "sub","fan",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",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 - "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 + "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 ["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 + "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 ["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 - "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 + "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 ["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 + "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 ["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],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",12,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,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 + "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 - "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 + "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 ["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 + "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 ["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", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4b+_panel", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4b+_stacked", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4b+_tray", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4b+_tray_sides", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],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,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],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,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4b+_snap", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4b+_fitted", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_shell", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_panel", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_stacked", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_tray", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_tray_sides", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],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,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],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,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_snap", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c_fitted", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_shell", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_panel", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_stacked", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_tray", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_tray_sides", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],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,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],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,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_snap", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rockpi4c+_fitted", - "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening + "sub","fan",10,10,0,"bottom",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0], // sub fan opening // Khadas ["vim1_shell", @@ -1266,13 +1266,13 @@ accessory_data = [ "sub","fan",10,10,25.5,"top",[0,0,0],["sbc",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 + "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",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 + "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",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["tinkerboard_snap", @@ -1297,13 +1297,13 @@ accessory_data = [ "sub","fan",10,10,25.5,"top",[0,0,0],["sbc",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 + "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",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 + "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",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["tinkerboard-s_snap", @@ -1328,13 +1328,13 @@ accessory_data = [ "sub","fan",10,10,25.5,"top",[0,0,0],["sbc",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 + "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",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 + "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",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["tinkerboard-2_snap", @@ -1359,13 +1359,13 @@ accessory_data = [ "sub","fan",10,10,25.5,"top",[0,0,0],["sbc",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 + "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",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 + "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",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["tinkerboard-r2_snap", @@ -1376,9 +1376,9 @@ accessory_data = [ // 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 + "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 ]; From e0ae29f0fb504cdb2b10d1075571af33e1ae445d Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Sun, 18 Sep 2022 17:16:38 -0400 Subject: [PATCH 2/3] more changes to existing case accessories to use parametrics. --- sbc_case_builder.json | 16 +-- sbc_case_builder_accessories.cfg | 163 ++++++++++++++++--------------- 2 files changed, 90 insertions(+), 89 deletions(-) diff --git a/sbc_case_builder.json b/sbc_case_builder.json index f65e999..f9a7b4c 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -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", diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index 9ca356a..da49da7 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -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 From fb0ee1f361f4d2afba7080a5191b3a50cb1dac8c Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Sun, 18 Sep 2022 21:11:20 -0400 Subject: [PATCH 3/3] some more changes to existing case accessories to use parametrics. --- sbc_case_builder_accessories.cfg | 135 +++++++++++++++---------------- 1 file changed, 67 insertions(+), 68 deletions(-) diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index da49da7..3410380 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -399,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 @@ -482,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