Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7fbb5d5f12 | ||
|
|
2f32d3c3b5 | ||
|
|
2ed95c20d1 | ||
|
|
788c6568ed | ||
|
|
dd2162b480 |
35
README.md
35
README.md
@@ -3,7 +3,7 @@
|
||||
|
||||
## Introduction
|
||||
|
||||
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 of the 51 current SBC contained within the framework. This allows legacy, current and future SBC to have multiple cases available on day one of their inclusion in the framework. There are multiple base case designs(shell, panel, stacked, tray, tray-sides, round, hex, snap, fitted) available and each allows for different styles within the design.
|
||||
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 of the 53 current SBC contained within the framework. This allows legacy, current and future SBC to have multiple cases available on day one of their inclusion in the framework. There are multiple base case designs(shell, panel, stacked, tray, tray-sides, round, hex, snap, fitted) available and each allows for different styles within the design.
|
||||
|
||||
All case openings are created automatically based on SBC data and the dimensions of any case design can be expanded in any axis allowing for the creation of larger cases. If you reposition the SBC in a case, you will see i/o openings created or removed appropriately based on it’s proximity to the case geometry. These cases might be useful for prototypes or other in house uses to quickly and easily create standard, specialized and custom SBC cases thru different case designs, styles and accessories.
|
||||
|
||||
@@ -103,9 +103,9 @@ Template creation and i/o panel layouts in a dxf format can be easily created an
|
||||
### Case Designs and Styles
|
||||
The case naming convention for standard cases in the configuration file follow the basic form of “sbc”_”design”_”style” e.g. c4_shell or c4_tray_vu5.
|
||||
|
||||
#### Current Case Count 395
|
||||
#### Current Case Count 423
|
||||
|
||||
##### Hardkernel
|
||||
##### Hardkernel - 182
|
||||
|
||||
**Odorid-C1+ cases** - 16 : c1+_shell, c1+_panel, c1+_panel_lcd3.5, c1+_desktop_lcd3.5, c1+_stacked, c1+_tray, c1+_tray_sides, c1+_tray_vu5,
|
||||
c1+_tray_vu7, c1+_shell_boombox, c1+_panel_boombox, c1+_tray_boombox, c1+_round, c1+_hex, c1+_snap, c1+_fitted
|
||||
@@ -125,25 +125,36 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
|
||||
|
||||
**Odorid-N2+ cases** - 9 :n2+_panel, n2+_tray, n2+_tray_sides, n2+_tray_vu5, n2+_tray_vu7, n2+_round, n2+_hex, n2+_snap, n2+_fitted
|
||||
|
||||
**Odorid-N2L cases** - 9 :n2l_shell, n2l_panel, n2l_stacked, n2l_tray, n2l_tray_sides, n2l_tray_vu5, n2l_tray_vu7, n2l_snap, n2l_fitted
|
||||
|
||||
**Odorid-N2LQ cases** - 9 :n2lq_shell, n2lq_panel, n2lq_stacked, n2lq_tray, n2lq_tray_sides, n2lq_tray_vu5, n2lq_tray_vu7, n2lq_snap, n2lq_fitted
|
||||
|
||||
**Odorid-M1 cases** - 12 : m1_panel, m1_tray, m1_tray_drive, m1_tray_sides, m1_tray_vu5, m1_tray_vu7, m1_snap, m1_fitted, m1_fitted_drivebox2.5, m1_fitted_drivebox3.5, m1_fitted_pizzabox, m1_fitted_drivebox3.5v
|
||||
|
||||
**Odorid-XU4 cases** - 11 : xu4_shell, xu4_panel, xu4_stacked, xu4_tray, xu4_tray_sides, xu4_tray_vu5, xu4_tray_vu7, xu4_round, xu4_hex, xu4_snap, xu4_fitted
|
||||
|
||||
**Odorid-XU4Q cases** - 11 : xu4q_shell, xu4q_panel, xu4q_stacked, xu4q_tray, xu4q_tray_sides, xu4q_tray_vu5, xu4q_tray_vu7, xu4q_round, xu4q_hex, xu4q_snap, xu4q_fitted
|
||||
|
||||
**Odroid-H2 cases** - 17 : h2_shell, h2_lowboy, h2_lowboy_router, h2_shell_router, h2_shell_routerssd, h2_panel, h2_stacked, h2_tray, h2_tray_sides, h2_tray_vu5, h2_tray_vu7, h2_tray_router, h2_router_station, h2_round, h2_hex, h2_snap, h2_fitted
|
||||
**Odroid-H2 cases** - 17 : h2_shell, h2_lowboy, h2_lowboy_router, h2_shell_router, h2_shell_router-ssd, h2_panel, h2_stacked, h2_tray, h2_tray_sides, h2_tray_vu5, h2_tray_vu7, h2_tray_router, h2_router_station, h2_round, h2_hex, h2_snap, h2_fitted
|
||||
|
||||
**Odroid-H3 cases** - 18 : h3_shell, h3_shell-internalfan, h3_lowboy, h3_lowboy_router, h3_shell_router, h3_shell_routerssd, h3_panel, h3_stacked, h3_tray, h3_tray_sides, h3_tray_vu5, h3_tray_vu7, h3_tray_router, h3_router_station, h3_round, h3_hex, h3_snap, h3_fitted
|
||||
**Odroid-H3 cases** - 18 : h3_shell, h3_shell-internalfan, h3_lowboy, h3_lowboy_router, h3_shell_router, h3_shell_router-ssd, h3_panel, h3_stacked, h3_tray, h3_tray_sides, h3_tray_vu5, h3_tray_vu7, h3_tray_router, h3_router_station, h3_round, h3_hex, h3_snap, h3_fitted
|
||||
|
||||
**Odroid-Show2** cases - 1 : show2_shell
|
||||
|
||||
|
||||
##### Pine64
|
||||
##### Pine64 - 24
|
||||
|
||||
**Rock64** - 9 : rockp64_shell, rock64_panel, rock64_stacked, rock64_tray, rock64_tray_sides, rock64_round, rock64_hex, rock64_snap, rock64_fitted
|
||||
|
||||
**RockPro64** - 9 : rockpro64_shell, rockpro64_panel, rockpro64_stacked, rockpro64_tray, rockpro64_tray_sides, rockpro64_round, rockpro64_hex, rockpro64_snap, rockpro64_fitted
|
||||
|
||||
**Quartz64a** - 2 : quartz64a_shell, quartz64a_panel
|
||||
|
||||
##### Raspberry PI
|
||||
**Quartz64b** - 2 : quartz64b_shell, quartz64b_panel
|
||||
|
||||
**h64b** - 2 : h64b_shell, h64b_panel
|
||||
|
||||
##### Raspberry PI - 72
|
||||
|
||||
**RPIzero** - 9 : rpizero_shell, rpizero_panel, rpizero_stacked, rpizero_tray, rpizero_tray_sides, rpizero_round, rpizero_hex, rpizero_snap, rpizero_fitted
|
||||
|
||||
@@ -162,12 +173,12 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
|
||||
**RPI4b** - 9 : rpi4b_shell, rpi4b_panel, rpi4b_stacked, rpi4b_tray, rpi4b_tray_sides, rpi4b_round, rpi4b_hex, rpi4b_snap, rpi4b_fitted
|
||||
|
||||
|
||||
##### Nivida
|
||||
##### Nivida - 1
|
||||
|
||||
**Jetson Nano** - 9 : jetsonnano_shell, jetsonnano_panel, jetsonnano_stacked, jetsonnano_tray, jetsonnano_tray_sides, jetsonnano_round, jetsonnano_hex, jetsonnano_snap, jetsonnano_fitted
|
||||
|
||||
|
||||
##### Radxa
|
||||
##### Radxa - 36
|
||||
|
||||
**ROCKPi 4b+** - 9 : rockpi4b+_shell, rockpi4b+_panel, rockpi4b+_stacked, rockpi4b+_tray, rockpi4b+_tray_sides, rockpi4b+_round, rockpi4b+_hex, rockpi4b+_snap, rockpi4b+_fitted
|
||||
|
||||
@@ -178,7 +189,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
|
||||
**ROCKPi5b** - 9 : rockpi5b_shell, rockpi5b_panel, rockpi5b_stacked, rockpi5b_tray, rockpi5b_tray_sides, rockpi5b_round, rockpi5b_hex, rockpi5b_snap, rockpi5b_fitted
|
||||
|
||||
|
||||
##### Khadas
|
||||
##### Khadas - 45
|
||||
|
||||
**Vim1** - 9 : vim1_shell, vim1_panel, vim1_stacked, vim1_tray, vim1_tray_sides, vim1_round, vim1_hex, vim1_snap, vim1_fitted
|
||||
|
||||
@@ -191,7 +202,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
|
||||
**Vim4** - 9 : vim4_shell, vim4_panel, vim4_stacked, vim4_tray, vim4_tray_sides, vim4_round, vim4_hex, vim4_snap, vim4_fitted
|
||||
|
||||
|
||||
##### Asus
|
||||
##### Asus - 36
|
||||
|
||||
**Tinkerboard** - 9 : tinkerboard_shell, tinkerboard_panel, tinkerboard_stacked, tinkerboard_tray, tinkerboard_tray_sides, tinkerboard_round, tinkerboard_hex, tinkerboard_snap, tinkerboard_fitted
|
||||
|
||||
@@ -202,7 +213,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
|
||||
**Tinkerboard R2/R2S** - 9 : tinkerboard-r2_shell, tinkerboard-r2_panel, tinkerboard-r2_stacked, tinkerboard-r2_tray, tinkerboard-r2_tray_sides, tinkerboard-r2_round, tinkerboard-r2_hex, tinkerboard-r2_snap, tinkerboard-r2_fitted
|
||||
|
||||
|
||||
##### Orange PI
|
||||
##### Orange PI - 27
|
||||
|
||||
**OPI Zero/ZeroPlus** - 9 : opizero_shell, opizero_panel, opizero_stacked, opizero_tray, opizero_tray_sides, opizero_round, opizero_hex, opizero_snap, opizero_fitted
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 3.8 MiB |
Submodule SBC_Model_Framework updated: ccda0585c0...710fba6d20
File diff suppressed because it is too large
Load Diff
@@ -36,12 +36,15 @@
|
||||
changed tray top design.
|
||||
20221005 Version 2.0.0 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 multi-associative parametric positioning for accessories,
|
||||
added individual variable height sbc standoffs, added cutaway view when case face
|
||||
is not movable, finished indents for select components and orientations.
|
||||
added round, hexagon, snap and fitted cases, setup additional sbc from
|
||||
SBC_Model_Framework, added components and masks, added multi-associative
|
||||
parametric positioning for accessories, added individual variable height
|
||||
sbc standoffs, added cutaway view when case face is not movable, finished
|
||||
indents for select components and orientations.
|
||||
20221011 Version 2.0.1 adjusted cases and accessories, updated README.md and SBC_Case_Builder_Cases.gif
|
||||
20221101 Version 2.0.2 updated sbc model framework, h3/h3+ model and rockpi5b adjustments
|
||||
20221207 Version 2.0.3 added part view to facilitate individual part prints, updated sbc model framework,
|
||||
added n2l and m1 cases
|
||||
|
||||
see https://github.com/hominoids/SBC_Case_Builder
|
||||
*/
|
||||
@@ -53,8 +56,9 @@ include <./SBC_Model_Framework/sbc_models.cfg>;
|
||||
include <./sbc_case_builder_accessories.cfg>;
|
||||
|
||||
/* [View] */
|
||||
// viewing mode "platter", "model", "debug"
|
||||
view = "model"; // [platter, model, debug]
|
||||
// viewing mode "model", "platter", "part"
|
||||
view = "model"; // [model, platter, part]
|
||||
individual_part = "bottom"; // [top, bottom, right, left, front, rear, accessories]
|
||||
// sbc off in model view
|
||||
sbc_off = false;
|
||||
// enable highlight for sbc component subtarctive geometry
|
||||
@@ -80,21 +84,21 @@ case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted]
|
||||
// base case style
|
||||
case_style = "none"; // ["none","vu5","vu7","sides"]
|
||||
// single board computer model
|
||||
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "m1", "m1_noheatsink", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "rockpi5b", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "test"]
|
||||
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "rockpi5b", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts"]
|
||||
// sbc location x axis
|
||||
pcb_loc_x = 0; //[0:.5:200]
|
||||
pcb_loc_x = 0; //[0:.5:300]
|
||||
// sbc location y axis
|
||||
pcb_loc_y = 0; //[0:.5:200]
|
||||
pcb_loc_y = 0; //[0:.5:300]
|
||||
// sbc location z axis
|
||||
pcb_loc_z = 0; //[0:.25:50]
|
||||
pcb_loc_z = 0; //[0:.25:100]
|
||||
// additional x axis case size
|
||||
case_offset_x = 0; //[0:.5:200]
|
||||
case_offset_x = 0; //[0:.5:300]
|
||||
// additional y axis case size
|
||||
case_offset_y = 0; //[0:.5:200]
|
||||
case_offset_y = 0; //[0:.5:300]
|
||||
// additional z axis case top size
|
||||
case_offset_tz = 0; //[0:.5:50]
|
||||
case_offset_tz = 0; //[0:.5:100]
|
||||
// additional z axis case bottom size
|
||||
case_offset_bz = 0; //[0:.5:50]
|
||||
case_offset_bz = 0; //[0:.5:100]
|
||||
// case wall thickness
|
||||
wallthick = 2; //[1:.5:5]
|
||||
// case floor thickness
|
||||
@@ -121,7 +125,7 @@ case_ext_standoffs = false;
|
||||
sidewall_support = true;
|
||||
|
||||
// top case standoff - [diameter,height(not used),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed, 3=nut holder, 4=blind),style(0=hex, 1=cylinder),reverse,insert,insert hole dia.,insert depth]
|
||||
top_standoff = [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1];
|
||||
top_standoff = [5.75,18,2.5,10,4,4,0,1,0,4.5,5.1];
|
||||
// case top - lower left standoff
|
||||
top_rear_left = 0; //[-20:.25:20]
|
||||
// case top - upper left standoff
|
||||
@@ -132,7 +136,7 @@ top_rear_right = 0; //[-20:.25:20]
|
||||
top_front_right = 0; //[-20:.25:20]
|
||||
|
||||
// bottom case standoff - [diameter,height(not used),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed, 3=nut holder, 4=blind),style(0=hex, 1=cylinder),reverse,insert,insert hole dia.,insert depth]
|
||||
bottom_standoff = [6.75,7,3.6,10,4,1,0,0,0,4.5,5.1];
|
||||
bottom_standoff = [5.75,7,3.6,10,4,1,0,0,0,4.5,5.1];
|
||||
// case bottom - rear left standoff
|
||||
bottom_rear_left = 0; //[-20:.25:20]
|
||||
// case bottom - upper left standoff
|
||||
@@ -143,10 +147,10 @@ bottom_rear_right = 0; //[-20:.25:20]
|
||||
bottom_front_right = 0; //[-20:.25:20]
|
||||
|
||||
// top case extened standoff - [diameter,height(not used),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed, 3=nut holder, 4=blind),style(0=hex, 1=cylinder),reverse,insert,insert hole dia.,insert depth]
|
||||
top_ext_standoff = [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1];
|
||||
top_ext_standoff = [5.75,18,2.5,10,4,4,0,1,0,4.5,5.1];
|
||||
|
||||
// bottom case extended standoff - [diameter,height(not used),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed, 3=nut holder, 4=blind),style(0=hex, 1=cylinder),reverse,insert,insert hole dia.,insert depth]
|
||||
bottom_ext_standoff = [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1];
|
||||
bottom_ext_standoff = [5.75,5,3.6,10,4,1,0,0,0,4.5,5.1];
|
||||
|
||||
/* [Features and Accessories] */
|
||||
// enable indentations around io openings
|
||||
@@ -161,7 +165,7 @@ cooling = "fan"; // [none,vents,fan,custom]
|
||||
exhaust_vents = "vent"; // [none,vent]
|
||||
// case accessory group to load
|
||||
|
||||
accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_drive", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "h3_shell", "h3_shell-internalfan", "h3_lowboy", "h3_lowboy_router", "jetsonnano_shell", "jetsonnano_panel", "jetsonnano_stacked", "jetsonnano_tray", "jetsonnano_tray_sides", "jetsonnano_round", "jetsonnano_hex", "jetsonnano_snap", "jetsonnano_fitted", "rock64_shell", "rock64_panel", "rock64_stacked", "rock64_tray", "rock64_tray_sides", "rock64_round", "rock64_hex", "rock64_snap", "rock64_fitted", "rockpro64_shell", "rockpro64_panel", "rockpro64_stacked", "rockpro64_tray", "rockpro64_tray_sides", "rockpro64_round", "rockpro64_hex", "rockpro64_snap", "rockpro64_fitted", "quartz64b_stacked_poe_hat", "show2_shell", "rpi1a+_shell", "rpi1a+_panel", "rpi1a+_stacked", "rpi1a+_tray", "rpi1a+_tray_sides", "rpi1a+_round", "rpi1a+_hex", "rpi1a+_snap", "rpi1a+_fitted", "rpi1b+_shell", "rpi1b+_panel", "rpi1b+_stacked", "rpi1b+_tray", "rpi1b+_tray_sides", "rpi1b+_round", "rpi1b+_hex", "rpi1b+_snap", "rpi1b+_fitted", "rpi3a+_shell", "rpi3a+_panel", "rpi3a+_stacked", "rpi3a+_tray", "rpi3a+_tray_sides", "rpi3a+_round", "rpi3a+_hex", "rpi3a+_snap", "rpi3a+_fitted", "rpi3b_shell", "rpi3b_panel", "rpi3b_stacked", "rpi3b_tray", "rpi3b_tray_sides", "rpi3b_round", "rpi3b_hex", "rpi3b_snap", "rpi3b_fitted", "rpi3b+_shell", "rpi3b+_panel", "rpi3b+_stacked", "rpi3b+_tray", "rpi3b+_tray_sides", "rpi3b+_round", "rpi3b+_hex", "rpi3b+_snap", "rpi3b+_fitted", "rpi4b_shell", "rpi4b_shell_geeekpi_poe_hat", "rpi4b_panel", "rpi4b_stacked", "rpi4b_stacked_geeekpi_poe_hat", "rpi4b_tray", "rpi4b_tray_sides", "rpi4b_round", "rpi4b_hex", "rpi4b_snap", "rpi4b_fitted", "rockpi4b+_shell", "rockpi4b+_panel", "rockpi4b+_stacked", "rockpi4b+_tray", "rockpi4b+_tray_sides", "rockpi4b+_round", "rockpi4b+_hex", "rockpi4b+_snap", "rockpi4b+_fitted", "rockpi4c_shell", "rockpi4c_panel", "rockpi4c_stacked", "rockpi4c_tray", "rockpi4c_tray_sides", "rockpi4c_round", "rockpi4c_hex", "rockpi4c_snap", "rockpi4c_fitted", "rockpi4c+_shell", "rockpi4c+_panel", "rockpi4c+_stacked", "rockpi4c+_tray", "rockpi4c+_tray_sides", "rockpi4c+_round", "rockpi4c+_hex", "rockpi4c+_snap", "rockpi4c+_fitted", "rockpi5b_adjustments", "vim1_shell", "vim1_panel", "vim1_stacked", "vim1_tray", "vim1_tray_sides", "vim1_round", "vim1_hex", "vim1_snap", "vim1_fitted", "vim2_shell", "vim2_panel", "vim2_stacked", "vim2_tray", "vim2_tray_sides", "vim2_round", "vim2_hex", "vim2_snap", "vim2_fitted", "vim3l_shell", "vim3l_panel", "vim3l_stacked", "vim3l_tray", "vim3l_tray_sides", "vim3l_round", "vim3l_hex", "vim3l_snap", "vim3l_fitted", "vim3_shell", "vim3_panel", "vim3_stacked", "vim3_tray", "vim3_tray_sides", "vim3_round", "vim3_hex", "vim3_snap", "vim3_fitted", "vim4_shell", "vim4_panel", "vim4_stacked", "vim4_tray", "vim4_tray_sides", "vim4_round", "vim4_hex", "vim4_snap", "vim4_fitted", "tinkerboard_shell", "tinkerboard_panel", "tinkerboard_stacked", "tinkerboard_tray", "tinkerboard_tray_sides", "tinkerboard_round", "tinkerboard_hex", "tinkerboard_snap", "tinkerboard_fitted", "tinkerboard-s_shell", "tinkerboard-s_panel", "tinkerboard-s_stacked", "tinkerboard-s_tray", "tinkerboard-s_tray_sides", "tinkerboard-s_round", "tinkerboard-s_hex", "tinkerboard-s_snap", "tinkerboard-s_fitted", "tinkerboard-2_shell", "tinkerboard-2_panel", "tinkerboard-2_stacked", "tinkerboard-2_tray", "tinkerboard-2_tray_sides", "tinkerboard-2_round", "tinkerboard-2_hex", "tinkerboard-2_snap", "tinkerboard-2_fitted", "tinkerboard-r2_shell", "tinkerboard-r2_panel", "tinkerboard-r2_stacked", "tinkerboard-r2_tray", "tinkerboard-r2_tray_sides", "tinkerboard-r2_round", "tinkerboard-r2_hex", "tinkerboard-r2_snap", "tinkerboard-r2_fitted", "hk_uart"]
|
||||
accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2l_tray", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_ssd", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "m1_fitted_drivebox2.5", "m1_fitted_drivebox3.5", "m1_fitted_pizzabox", "m1_fitted_drivebox3.5v", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "h3_shell", "h3_lowboy", "h3_lowboy_router", "h3_tallboy", "h3_tallboy-ssd", "h3_shell_drivebox2.5v", "jetsonnano_shell", "jetsonnano_panel", "jetsonnano_stacked", "jetsonnano_tray", "jetsonnano_tray_sides", "jetsonnano_round", "jetsonnano_hex", "jetsonnano_snap", "jetsonnano_fitted", "rock64_shell", "rock64_panel", "rock64_stacked", "rock64_tray", "rock64_tray_sides", "rock64_round", "rock64_hex", "rock64_snap", "rock64_fitted", "rockpro64_shell", "rockpro64_panel", "rockpro64_stacked", "rockpro64_tray", "rockpro64_tray_sides", "rockpro64_round", "rockpro64_hex", "rockpro64_snap", "rockpro64_fitted", "quartz64b_stacked_poe_hat", "show2_shell", "rpi1a+_shell", "rpi1a+_panel", "rpi1a+_stacked", "rpi1a+_tray", "rpi1a+_tray_sides", "rpi1a+_round", "rpi1a+_hex", "rpi1a+_snap", "rpi1a+_fitted", "rpi1b+_shell", "rpi1b+_panel", "rpi1b+_stacked", "rpi1b+_tray", "rpi1b+_tray_sides", "rpi1b+_round", "rpi1b+_hex", "rpi1b+_snap", "rpi1b+_fitted", "rpi3a+_shell", "rpi3a+_panel", "rpi3a+_stacked", "rpi3a+_tray", "rpi3a+_tray_sides", "rpi3a+_round", "rpi3a+_hex", "rpi3a+_snap", "rpi3a+_fitted", "rpi3b_shell", "rpi3b_panel", "rpi3b_stacked", "rpi3b_tray", "rpi3b_tray_sides", "rpi3b_round", "rpi3b_hex", "rpi3b_snap", "rpi3b_fitted", "rpi3b+_shell", "rpi3b+_panel", "rpi3b+_stacked", "rpi3b+_tray", "rpi3b+_tray_sides", "rpi3b+_round", "rpi3b+_hex", "rpi3b+_snap", "rpi3b+_fitted", "rpi4b_shell", "rpi4b_shell_geeekpi_poe_hat", "rpi4b_panel", "rpi4b_stacked", "rpi4b_tray", "rpi4b_tray_sides", "rpi4b_round", "rpi4b_hex", "rpi4b_snap", "rpi4b_fitted", "rockpi4b+_shell", "rockpi4b+_panel", "rockpi4b+_stacked", "rockpi4b+_tray", "rockpi4b+_tray_sides", "rockpi4b+_round", "rockpi4b+_hex", "rockpi4b+_snap", "rockpi4b+_fitted", "rockpi4c_shell", "rockpi4c_panel", "rockpi4c_stacked", "rockpi4c_tray", "rockpi4c_tray_sides", "rockpi4c_round", "rockpi4c_hex", "rockpi4c_snap", "rockpi4c_fitted", "rockpi4c+_shell", "rockpi4c+_panel", "rockpi4c+_stacked", "rockpi4c+_tray", "rockpi4c+_tray_sides", "rockpi4c+_round", "rockpi4c+_hex", "rockpi4c+_snap", "rockpi4c+_fitted", "rockpi5b", "vim1_shell", "vim1_panel", "vim1_stacked", "vim1_tray", "vim1_tray_sides", "vim1_round", "vim1_hex", "vim1_snap", "vim1_fitted", "vim2_shell", "vim2_panel", "vim2_stacked", "vim2_tray", "vim2_tray_sides", "vim2_round", "vim2_hex", "vim2_snap", "vim2_fitted", "vim3l_shell", "vim3l_panel", "vim3l_stacked", "vim3l_tray", "vim3l_tray_sides", "vim3l_round", "vim3l_hex", "vim3l_snap", "vim3l_fitted", "vim3_shell", "vim3_panel", "vim3_stacked", "vim3_tray", "vim3_tray_sides", "vim3_round", "vim3_hex", "vim3_snap", "vim3_fitted", "vim4_shell", "vim4_panel", "vim4_stacked", "vim4_tray", "vim4_tray_sides", "vim4_round", "vim4_hex", "vim4_snap", "vim4_fitted", "tinkerboard_shell", "tinkerboard_panel", "tinkerboard_stacked", "tinkerboard_tray", "tinkerboard_tray_sides", "tinkerboard_round", "tinkerboard_hex", "tinkerboard_snap", "tinkerboard_fitted", "tinkerboard-s_shell", "tinkerboard-s_panel", "tinkerboard-s_stacked", "tinkerboard-s_tray", "tinkerboard-s_tray_sides", "tinkerboard-s_round", "tinkerboard-s_hex", "tinkerboard-s_snap", "tinkerboard-s_fitted", "tinkerboard-2_shell", "tinkerboard-2_panel", "tinkerboard-2_stacked", "tinkerboard-2_tray", "tinkerboard-2_tray_sides", "tinkerboard-2_round", "tinkerboard-2_hex", "tinkerboard-2_snap", "tinkerboard-2_fitted", "tinkerboard-r2_shell", "tinkerboard-r2_panel", "tinkerboard-r2_stacked", "tinkerboard-r2_tray", "tinkerboard-r2_tray_sides", "tinkerboard-r2_round", "tinkerboard-r2_hex", "tinkerboard-r2_snap", "tinkerboard-r2_fitted", "hk_uart"]
|
||||
|
||||
a = search([accessory_name],accessory_data);
|
||||
s = search([sbc_model],sbc_data);
|
||||
@@ -189,7 +193,6 @@ case_ffn = 90; // circle segments for fillet of
|
||||
lip = 5;
|
||||
vu_rotation = [15,0,0];
|
||||
|
||||
|
||||
// platter view
|
||||
if (view == "platter") {
|
||||
if(case_design == "shell") {
|
||||
@@ -266,6 +269,12 @@ if (view == "platter") {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(case_design == "tray") {
|
||||
echo(width=width+2*sidethick,depth=depth,top=top_height,bottom=bottom_height);
|
||||
}
|
||||
else {
|
||||
echo(width=width,depth=depth,top=top_height,bottom=bottom_height);
|
||||
}
|
||||
}
|
||||
|
||||
// model view
|
||||
@@ -288,8 +297,8 @@ if (view == "model") {
|
||||
cube([gap+wallthick+1.01,depth+2,case_z+2]);
|
||||
}
|
||||
if(move_rightside < 0) {
|
||||
translate([width-gap-wallthick-2.01,-gap-wallthick-1,-lower_bottom])
|
||||
cube([gap+wallthick+1,depth+2,case_z+2]);
|
||||
translate([width-gap-(2*wallthick)-adjust,-gap-wallthick-1,-lower_bottom])
|
||||
cube([gap+wallthick,depth+2,case_z+2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -312,8 +321,8 @@ if (view == "model") {
|
||||
cube([gap+wallthick+1.01,depth+2,case_z+2]);
|
||||
}
|
||||
if(move_rightside < 0) {
|
||||
translate([width-gap-wallthick-2.01,-gap-wallthick-1,raise_top])
|
||||
cube([gap+wallthick+1,depth+2,case_z+2]);
|
||||
translate([width-gap-(2*wallthick)-adjust,-gap-wallthick-1,raise_top])
|
||||
cube([gap+wallthick,depth+2,case_z+2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -540,14 +549,108 @@ if (view == "model") {
|
||||
}
|
||||
}
|
||||
//}
|
||||
// debug
|
||||
if (view == "debug") {
|
||||
case_top(case_design);
|
||||
// case_bottom(case_design);
|
||||
// case_side(case_design,case_style,"rear");
|
||||
// case_side(case_design,case_style,"front");
|
||||
// case_side(case_design,case_style,"left");
|
||||
// case_side(case_design,case_style,"right");
|
||||
// part
|
||||
if (view == "part") {
|
||||
if(individual_part == "top") {
|
||||
if(case_design == "shell") {
|
||||
translate([0,depth,case_z]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "panel") {
|
||||
translate([0,depth,case_z]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "stacked") {
|
||||
translate([0,depth,case_z]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "tray") {
|
||||
translate([0,depth,case_z]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "round") {
|
||||
translate([width+30,depth,case_z-floorthick-gap]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "hex") {
|
||||
translate([2*width,depth,case_z]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "snap") {
|
||||
translate([0,depth,case_z+2*floorthick]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
if(case_design == "fitted") {
|
||||
translate([0,depth,case_z+floorthick]) rotate([180,0,0]) case_top(case_design);
|
||||
}
|
||||
}
|
||||
if(individual_part == "bottom") {
|
||||
case_bottom(case_design);
|
||||
}
|
||||
if(individual_part == "front") {
|
||||
if(case_design == "panel") {
|
||||
translate([0,case_z,-depth+wallthick+gap+floorthick])
|
||||
rotate([90,0,0]) case_side(case_design,case_style,"front");
|
||||
}
|
||||
}
|
||||
if(individual_part == "rear") {
|
||||
if(case_design == "panel") {
|
||||
translate([0,0,-gap]) rotate([-90,0,0]) case_side(case_design,case_style,"rear");
|
||||
}
|
||||
}
|
||||
if(individual_part == "right") {
|
||||
if(case_design == "panel") {
|
||||
translate([gap,0,-width+(2*wallthick)+gap]) rotate([0,-90,-90])
|
||||
case_side(case_design,case_style,"right");
|
||||
}
|
||||
if(case_design == "tray") {
|
||||
if(case_style == "vu5" || case_style == "vu7" || case_style == "sides") {
|
||||
translate([depth,0,width-gap]) rotate([0,90,90])
|
||||
case_side(case_design,case_style,"right");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(individual_part == "left") {
|
||||
if(case_design == "panel") {
|
||||
translate([depth,0,-gap]) rotate([0,90,90])
|
||||
case_side(case_design,case_style,"left");
|
||||
}
|
||||
if(case_design == "tray") {
|
||||
if(case_style == "vu5" || case_style == "vu7" || case_style == "sides") {
|
||||
translate([gap,0,2*sidethick+gap]) rotate([0,-90,-90])
|
||||
case_side(case_design,case_style,"left");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(individual_part == "accessories") {
|
||||
if(accessory_name != "none") {
|
||||
for (i=[1:15:len(accessory_data[a[0]])-1]) {
|
||||
class = accessory_data[a[0]][i];
|
||||
type = accessory_data[a[0]][i+1];
|
||||
loc_x = accessory_data[a[0]][i+2];
|
||||
loc_y = accessory_data[a[0]][i+3];
|
||||
loc_z = accessory_data[a[0]][i+4];
|
||||
face = accessory_data[a[0]][i+5];
|
||||
rotation = accessory_data[a[0]][i+6];
|
||||
parametric = accessory_data[a[0]][i+7];
|
||||
size_x = accessory_data[a[0]][i+8];
|
||||
size_y = accessory_data[a[0]][i+9];
|
||||
size_z = accessory_data[a[0]][i+10];
|
||||
data_1 = accessory_data[a[0]][i+11];
|
||||
data_2 = accessory_data[a[0]][i+12];
|
||||
data_3 = accessory_data[a[0]][i+13];
|
||||
data_4 = accessory_data[a[0]][i+14];
|
||||
|
||||
if (class == "platter" && type != "button_top") {
|
||||
add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4);
|
||||
}
|
||||
if (class == "platter" && type == "button_top") {
|
||||
translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_3, size_x, size_z);
|
||||
translate([loc_x-20,loc_y-10,loc_z+3]) rotate([0,0,0]) button_top(data_3, size_x, size_z);
|
||||
translate([loc_x-20,loc_y-20,loc_z]) rotate([0,0,0]) button_clip(data_3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(case_design == "tray") {
|
||||
echo(width=width+2*sidethick,depth=depth,top=top_height,bottom=bottom_height);
|
||||
}
|
||||
else {
|
||||
echo(width=width,depth=depth,top=top_height,bottom=bottom_height);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2208,7 +2311,7 @@ module open_io() {
|
||||
}
|
||||
if(side == "top" && type == "uart_micro" && rotation == 270) {
|
||||
translate([loc_x-2*(wallthick),loc_y-1,bottom_height+5]) rotate([90,0,90])
|
||||
punchout(15,8,1,wallthick+(2*adjust)+5,2,"rectangle");
|
||||
punchout(15,8,1,wallthick+(2*adjust)+12,2,"rectangle");
|
||||
}
|
||||
|
||||
// sata openings
|
||||
|
||||
@@ -14,27 +14,8 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
Code released under GPLv3: http://www.gnu.org/licenses/gpl.html
|
||||
|
||||
20220212 Version 1.1.0 SBC Case Builder configuration file
|
||||
20220220 Version 1.1.1 changed accessory rotation to an array,
|
||||
added commands add1,add2,model,platter
|
||||
added top_ext_standoff[],bottom_ext_standoff
|
||||
20220227 Version 1.1.2 added cases hc4_shell_drivebox2.5, hc4_shell_drivebox3.5, hc4_shell_drivebox2.5v
|
||||
20220306 Version 1.1.3 added cases h2_shell_router, h2_shell_router-ssd, h2_lowboy_router, h2_lowboy, h2_tray_router, h2_router_station
|
||||
20220312 Version 1.2.0 added cases c4_panel_lcd3.5, c2_panel_lcd3.5, c1+_panel_lcd3.5, c1+_desktop_lcd3.5, c2_desktop_lcd3.5,
|
||||
c4_desktop_lcd3.5, adjusted h2_lowboy
|
||||
20220320 Version 1.2.1 added cases c1+_shell_boombox, c1+_panel_boombox, c1+_tray_boombox,
|
||||
c2_shell_boombox, c2_panel_boombox, c2_deskboom_lcd3.5, c2_tray_boombox,
|
||||
c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boombox
|
||||
20220406 Version 1.2.2 various case adjustments
|
||||
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
|
||||
20221005 Version 2.0.0 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, converted all existing accessories to use parametric positioning.
|
||||
20221011 Version 2.0.1 adjusted cases and accessories, updated README.md and SBC_Case_Builder_Cases.gif
|
||||
20221101 Version 2.0.2 updated sbc model framework, h3/h3+ model and rockpi5b adjustments
|
||||
|
||||
SBC Case Builder accessory configuration file
|
||||
|
||||
see https://github.com/hominoids/SBC_Case_Builder
|
||||
*/
|
||||
|
||||
@@ -419,10 +400,10 @@ accessory_data = [
|
||||
"add2","hc4_oled_holder",20,82,1.99,"bottom",[0,0,0],["case",false,true,false],0,0,2,0,0,"",0, // model hc4 holder
|
||||
"add2","hd_holder",10,-21,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // add hd holder
|
||||
"sub","hd_holes",10,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
|
||||
"sub","round",92,-5,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,69.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,-5,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,69.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole
|
||||
"sub","round",92,-5,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,69.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,-5,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,69.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole
|
||||
"sub","vent",71.85,88,30,"top",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent
|
||||
"suball","fan",39,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
|
||||
"sub","vent",-3.5,35,34,"top",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
@@ -474,6 +455,10 @@ accessory_data = [
|
||||
["n1_hex",
|
||||
"sub","fan",50,25,24.5,"top",[0,0,45],["case",false,false,false],40,0,6,2,0,"",0], // sub fan opening
|
||||
|
||||
// Odroid-N2L
|
||||
["n2l_tray",
|
||||
"sub","rectangle",65,36,-2.5,"bottom",[0,0,0],["case",true,true,true],5,13,15.5,0,0,"vertical",[1,1,1,1]], // sub hdmi opening
|
||||
|
||||
// Odroid-N2+
|
||||
// internal fan
|
||||
["n2+_tray_vu7_fan",
|
||||
@@ -495,7 +480,7 @@ accessory_data = [
|
||||
"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",
|
||||
["m1_tray_ssd",
|
||||
"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
|
||||
@@ -518,6 +503,74 @@ accessory_data = [
|
||||
"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
|
||||
|
||||
["m1_fitted_drivebox2.5",
|
||||
"add2","hd_holder",10,20,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,20,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
|
||||
"sub","round",92,34,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,110.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,34,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",92,110.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole
|
||||
"suball","fan",39,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
|
||||
"sub","vent",-3.75,25,30,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,25,30,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.75,25,9,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,25,9,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"model","hd25",10,120,2,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
|
||||
"model","hd25",10,120,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,"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
|
||||
|
||||
["m1_fitted_drivebox3.5",
|
||||
"add2","hd_holder",-19.4,-27,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,-27,-.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,1.5,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",91.6,43.4,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",91.6,103.1,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","vent",-3.75,60,40,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,60,40,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.75,60,20,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,60,20,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"suball","vent",29,126,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","hd35",-19.4,120,3,"bottom",[0,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd
|
||||
"model","hd35",-19.4,120,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,"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
|
||||
|
||||
["m1_fitted_pizzabox",
|
||||
"sub","hd_holes",-12,-27,-.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,1.5,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",91.6,43.4,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",91.6,103.1,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","vent",-3.75,60,9,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,60,9,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"suball","vent",-89,126,15,"bottom",[0,0,0],["case",true,true,false],2,13,4,1,4,"vertical",1, // sub vent
|
||||
"suball","fan",-30,60,48,"top",[0,0,0],["case",true,false,false],80,0,3,2,0,"",0, // sub fan
|
||||
"model","hd35",-12,120,2.5,"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,"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
|
||||
|
||||
["m1_fitted_drivebox3.5v",
|
||||
// "add2","hd_vertright",45.6,-21,2.49,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // sub hd bottom holes
|
||||
// "sub","hd_vertright_holes",45.6,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,2.5,"portrait",0, // sub hd bottom holes
|
||||
// "add2","hd_vertleft",0,-27,2.49,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // add hd holder
|
||||
// "sub","hd_vertleft_holes",0,-27,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // sub hd bottom holes
|
||||
"add2","hd_vertleft",80,-27,2.49,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // add hd holder
|
||||
"sub","hd_vertleft_holes",80,-27,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // sub hd bottom holes
|
||||
"sub","round",91.6,14.5,6,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",91.6,58.55,6,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",91.6,90.1,6,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole
|
||||
"sub","vent",-3.75,60,40,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,60,40,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.75,60,20,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",92,60,20,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"suball","vent",29,126,29,"bottom",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent
|
||||
"suball","fan",5.6,-1.5,50,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan
|
||||
// "model","hd35",-19.4,120,104.1,"bottom",[-90,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd
|
||||
"model","hd35",80,120,2.5,"bottom",[90,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd
|
||||
"model","fan_cover",5.6,-4,50,"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
|
||||
|
||||
|
||||
// Odroid-H2
|
||||
["h2_shell",
|
||||
@@ -584,7 +637,7 @@ accessory_data = [
|
||||
"sub","vent",111.5,30,18,"top",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"add2","batt_holder",98,40,53,"top",[180,0,-18],["case",false,false,true],10,10,0,0,0,"",0, // add uart
|
||||
"add2","batt_holder",98,40,53,"top",[180,0,-18],["case",false,false,true],10,10,0,0,0,"",0, // add uart
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
|
||||
@@ -718,22 +771,6 @@ accessory_data = [
|
||||
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,32,0,0,"recess",0, // button top
|
||||
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,32,0,0,"recess",0, // button top
|
||||
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0], // access port cover
|
||||
|
||||
["h3_shell-internalfan",
|
||||
"sub","vent",-3.5,30,18,"top",[0,0,90],["case",false,false,true],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,18,"top",[0,0,90],["case",true,false,true],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,true],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,true],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,79.5,2,0,0,"landscape",0, // access port
|
||||
"add2","batt_holder",113.5,45,38,"top",[180,90,0],["sbc-case_z",true,true,true],10,10,0,0,0,"",0, // add battery holder
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,32,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,32,0,0,"recess",0, // button
|
||||
"model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,52,0,0,"recess",0, // button top
|
||||
"model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,52,0,0,"recess",0, // button top
|
||||
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,32,0,0,"recess",0, // button top
|
||||
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,32,0,0,"recess",0, // button top
|
||||
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0], // access port cover
|
||||
|
||||
["h3_lowboy",
|
||||
@@ -741,12 +778,12 @@ accessory_data = [
|
||||
"sub","rectangle",68,-4,32,"top",[0,0,0],["sbc-case_z",true,true,true],19.5,21.5,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",44.5,-4,32,"top",[0,0,0],["sbc-case_z",true,true,true],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",19.5,-4,32,"top",[0,0,0],["sbc-case_z",true,true,true],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",9.5,26.5,50,"top",[0,0,0],["sbc-case_z",true,true,true],79.5,74.5,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",9.5,26.5,50,"top",[0,0,0],["sbc-case_z",true,true,true],79.5,74.5,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","vent",-3.5,30,18,"top",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,18,"top",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"add2","-batt_holder",111.6,45,38,"top",[180,90,0],["sbc-case_z",true,true,true],10,10,0,0,0,"",0, // add battery holder
|
||||
"add2","-batt_holder",111.6,45,38,"top",[180,90,0],["sbc-case_z",true,true,true],10,10,0,0,0,"",0, // add battery holder
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
|
||||
@@ -762,12 +799,12 @@ accessory_data = [
|
||||
"sub","rectangle",68,-4,32,"top",[0,0,0],["sbc-case_z",true,true,true],19.5,21.5,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",44.5,-4,32,"top",[0,0,0],["sbc-case_z",true,true,true],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",19.5,-4,32,"top",[0,0,0],["sbc-case_z",true,true,true],20.5,31,22,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",9.5,26.5,50,"top",[0,0,0],["sbc-case_z",true,true,true],79.5,74.5,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","rectangle",9.5,26.5,50,"top",[0,0,0],["sbc-case_z",true,true,true],79.5,74.5,5,0,0,"vertical",[.25,.25,.25,.25], // sub rectangle
|
||||
"sub","vent",-3.5,30,30,"top",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,30,"top",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening
|
||||
"add2","-batt_holder",98,40,44,"top",[180,0,-18],["case",false,false,false],10,10,0,0,0,"",0, // add uart
|
||||
"add2","-batt_holder",98,40,44,"top",[180,0,-18],["case",false,false,false],10,10,0,0,0,"",0, // add uart
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,11,0,0,"recess",0, // button
|
||||
@@ -779,7 +816,75 @@ accessory_data = [
|
||||
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,11,0,0,"recess",0, // button top
|
||||
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0], // access port cover
|
||||
|
||||
|
||||
["h3_tallboy",
|
||||
"sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,28,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
|
||||
"add2","batt_holder",113.5,45,20,"top",[90,0,270],["sbc-case_z",true,true,true],10,10,0,0,0,"",0, // add battery holder
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
|
||||
"model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
|
||||
"model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
|
||||
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
|
||||
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
|
||||
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0], // access port cover
|
||||
|
||||
["h3_tallboy-ssd",
|
||||
"sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,28,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
|
||||
"model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
|
||||
"model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
|
||||
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
|
||||
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
|
||||
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"sub","round",111,34,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",111,110.6,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"add2","hd_vertleft",98,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // add hd holder
|
||||
"sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
|
||||
"model","hd25",98,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,7,0,"",0], // model 2.5 hd
|
||||
|
||||
["h3_shell_drivebox2.5v",
|
||||
"sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,28,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening
|
||||
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening
|
||||
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port
|
||||
"add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
|
||||
"add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button
|
||||
"model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
|
||||
"model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top
|
||||
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
|
||||
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top
|
||||
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover
|
||||
"sub","round",111,24,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"sub","round",111,100.6,6.07,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole
|
||||
"add2","hd_vertleft",100,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // add hd holder
|
||||
"add2","hd_vertright",65,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // sub hd bottom holes
|
||||
"sub","hd_vertleft_holes",100,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
|
||||
"sub","hd_vertright_holes",65,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,2,"portrait",0, // sub hd bottom holes
|
||||
"model","hd25",65,110,71.85,"bottom",[-90,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd
|
||||
"model","hd25",100,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,15,0,"",0], // model 2.5 hd
|
||||
|
||||
|
||||
// Nvidia
|
||||
["jetsonnano_shell",
|
||||
"sub","rectangle",17.5,36.375,31,"top",[0,0,0],["sbc-case_z",true,true,true],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening
|
||||
|
||||
@@ -47,7 +47,8 @@
|
||||
20221011 Version 2.0.1 adjusted cases and accessories, updated README.md and SBC_Case_Builder_Cases.gif
|
||||
20221101 version 2.0.2 added hdmi_a_vertical mask, increased jack_3.5 mask dia.to 6mm, lowered hdmi_a_vertical mask by 2mm,
|
||||
added mask for microsdcard2
|
||||
|
||||
20221207 version 2.0.3 added double_stacked_usb3-usb2, hd35_vtab(side) and supporting code
|
||||
|
||||
see https://github.com/hominoids/SBC_Case_Builder
|
||||
|
||||
place(x,y,z,size_x,size_y,rotation,side)
|
||||
@@ -75,6 +76,7 @@
|
||||
hd25_tab(side)
|
||||
hd25_vtab(side)
|
||||
hd35_tab(side)
|
||||
hd35_vtab(side)
|
||||
hd_bottom_holes(hd,orientation,position,side,thick)
|
||||
hd25(height)
|
||||
hd35()
|
||||
@@ -826,20 +828,46 @@ module hd_mount(hd,orientation,position,side) {
|
||||
}
|
||||
if(hd == 3.5) {
|
||||
if(orientation == "portrait") {
|
||||
translate([-.5,28.5,0]) hd35_tab("left");
|
||||
translate([-.5,69.75,0]) hd35_tab("left");
|
||||
translate([-.5,130.1,0]) hd35_tab("left");
|
||||
translate([101.6+.5,28.5,0]) hd35_tab("right");
|
||||
translate([101.6+.5,69.75,0]) hd35_tab("right");
|
||||
translate([101.6+.5,130.1,0]) hd35_tab("right");
|
||||
if(position == "vertical") {
|
||||
if(side == "left") {
|
||||
translate([0,41.28,0]) rotate([0,0,0]) hd35_vtab("right");
|
||||
translate([0,41.28+44.45,0]) rotate([0,0,0]) hd35_vtab("right");
|
||||
translate([0,41.28+76.20,0]) rotate([0,0,0]) hd35_vtab("right");
|
||||
}
|
||||
else { // right
|
||||
translate([0,41.28,0]) rotate([0,0,0]) hd35_vtab("left");
|
||||
translate([0,41.28+44.45,0]) rotate([0,0,0]) hd35_vtab("left");
|
||||
translate([0,41.28+76.20,0]) rotate([0,0,0]) hd35_vtab("left");
|
||||
}
|
||||
}
|
||||
else {
|
||||
translate([-.5,28.5,0]) hd35_tab("left");
|
||||
translate([-.5,69.75,0]) hd35_tab("left");
|
||||
translate([-.5,130.1,0]) hd35_tab("left");
|
||||
translate([101.6+.5,28.5,0]) hd35_tab("right");
|
||||
translate([101.6+.5,69.75,0]) hd35_tab("right");
|
||||
translate([101.6+.5,130.1,0]) hd35_tab("right");
|
||||
}
|
||||
}
|
||||
if(orientation == "landscape") {
|
||||
translate([16.9,-.5,0]) rotate([0,0,90]) hd35_tab("left");
|
||||
translate([76.6,-.5,0]) rotate([0,0,90]) hd35_tab("left");
|
||||
translate([118.5,-.5,0]) rotate([0,0,90]) hd35_tab("left");
|
||||
translate([16.9,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right");
|
||||
translate([76.6,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right");
|
||||
translate([118.5,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right");
|
||||
if(position == "vertical") {
|
||||
if(side == "left") {
|
||||
translate([9.4,0,0]) rotate([0,0,90]) hd35_vtab("right");
|
||||
translate([86,0,0]) rotate([0,0,90]) hd35_vtab("right");
|
||||
}
|
||||
else { // right
|
||||
translate([9.4,0,0]) rotate([0,0,90]) hd35_vtab("left");
|
||||
translate([86,0,0]) rotate([0,0,90]) hd35_vtab("left");
|
||||
}
|
||||
}
|
||||
else {
|
||||
translate([16.9,-.5,0]) rotate([0,0,90]) hd35_tab("left");
|
||||
translate([76.6,-.5,0]) rotate([0,0,90]) hd35_tab("left");
|
||||
translate([118.5,-.5,0]) rotate([0,0,90]) hd35_tab("left");
|
||||
translate([16.9,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right");
|
||||
translate([76.6,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right");
|
||||
translate([118.5,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1035,6 +1063,66 @@ module hd35_tab(side) {
|
||||
}
|
||||
}
|
||||
|
||||
module hd35_vtab(side) {
|
||||
|
||||
width = 15;
|
||||
l_width = 16;
|
||||
depth = 15;
|
||||
height = 4;
|
||||
fillet = 2;
|
||||
hole = 3.6;
|
||||
length = 3;
|
||||
|
||||
adjust = .01;
|
||||
$fn = 90;
|
||||
if(side == "left") {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,-depth/2,0]) rotate([0,-90,0])
|
||||
slab_r([l_width,depth,height], [fillet,fillet,fillet,fillet]);
|
||||
translate([-height,-depth/2,0]) cube([height,depth,height]);
|
||||
translate([adjust,-5.5,depth])
|
||||
rotate([90,0,0])
|
||||
linear_extrude(height = 2)
|
||||
polygon(points = [ [-height,height-5],
|
||||
[-depth+4,-depth],
|
||||
[-height,-depth]]);
|
||||
translate([adjust,7.5,depth])
|
||||
rotate([90,0,0])
|
||||
linear_extrude(height = 2)
|
||||
polygon(points = [ [-height,height-5],
|
||||
[-depth+4,-depth],
|
||||
[-height,-depth]]);
|
||||
}
|
||||
translate([3,0,-adjust]) rotate([0,0,0]) cylinder(d=hole, h=3);
|
||||
translate([-height-adjust,1.5+(width/2)-(length/2)-depth/2,5.57]) rotate([90,90,90]) slot(hole,length,height+(2*adjust));
|
||||
}
|
||||
}
|
||||
if(side == "right") {
|
||||
difference() {
|
||||
union() {
|
||||
translate([height,-depth/2,0]) rotate([0,-90,0])
|
||||
slab_r([l_width,depth,height], [fillet,fillet,fillet,fillet]);
|
||||
translate([0,-depth/2,0]) cube([height,depth,height]);
|
||||
translate([adjust,-7.5,depth])
|
||||
rotate([90,0,180])
|
||||
linear_extrude(height = 2)
|
||||
polygon(points = [ [-height,height-5],
|
||||
[-depth+4,-depth],
|
||||
[-height,-depth]]);
|
||||
translate([adjust,5.5,depth])
|
||||
rotate([90,0,180])
|
||||
linear_extrude(height = 2)
|
||||
polygon(points = [ [-height,height-5],
|
||||
[-depth+4,-depth],
|
||||
[-height,-depth]]);
|
||||
}
|
||||
translate([-3,0,-adjust]) rotate([0,0,0]) cylinder(d=hole, h=3);
|
||||
translate([-adjust,1.5+(width/2)-(length/2)-depth/2,5.57]) rotate([90,90,90]) slot(hole,length,height+(2*adjust));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module hd_bottom_holes(hd,orientation,position,side,thick) {
|
||||
|
||||
@@ -1065,13 +1153,13 @@ module hd_bottom_holes(hd,orientation,position,side,thick) {
|
||||
if(orientation == "landscape") {
|
||||
if(position == "vertical") {
|
||||
if(side == "left") {
|
||||
translate([9.4,-3,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([86,-3,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([9.4,-3,0]) cylinder(d=3.6,h=thick+5);
|
||||
translate([86,-3,0]) cylinder(d=3.6,h=thick+5);
|
||||
}
|
||||
else {
|
||||
echo(side);
|
||||
translate([9.4,3,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([86,3,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([9.4,3,0]) cylinder(d=3.6,h=thick+5);
|
||||
translate([86,3,0]) cylinder(d=3.6,h=thick+5);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1085,13 +1173,28 @@ module hd_bottom_holes(hd,orientation,position,side,thick) {
|
||||
}
|
||||
if(hd == 3.5) {
|
||||
if(orientation == "portrait") {
|
||||
// portrait 3.5" bottom screw holes
|
||||
translate([3.18,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([3.18,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([3.18,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([98.43,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([98.43,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([98.43,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
if(position == "vertical") {
|
||||
if(side == "left") {
|
||||
translate([-6,28.5,0]) cylinder(d=3.6,h=thick+5);
|
||||
translate([-6,70.5,0]) cylinder(d=3.6,h=thick+5);
|
||||
translate([-6,28.5+101.6,0]) cylinder(d=3.6,h=thick+5);
|
||||
}
|
||||
else {
|
||||
// portrait 3.5" bottom screw holes
|
||||
translate([6,28.5,0]) cylinder(d=3.6,h=thick+5);
|
||||
translate([6,70.5,0]) cylinder(d=3.6,h=thick+5);
|
||||
translate([6,28.5+101.6,0]) cylinder(d=3.6,h=thick+5);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// portrait 3.5" bottom screw holes
|
||||
translate([3.18,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([3.18,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([3.18,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([98.43,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([98.43,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
translate([98.43,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2));
|
||||
}
|
||||
}
|
||||
if(orientation == "landscape") {
|
||||
// landscape 3.5" bottom screw holes
|
||||
@@ -2740,8 +2843,8 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
|
||||
cube([14.5,19.5,floorthick+(2*adjust)]);
|
||||
}
|
||||
if(type == "emmc" && side == "bottom" && rotation == 270) {
|
||||
place(loc_x-.5,loc_y-.5,floorthick+adjust,14.5,19.5,rotation,side)
|
||||
cube([14.5,19.5,floorthick+(2*adjust)]);
|
||||
place(loc_x-.5,loc_y-.5,floorthick+adjust+7,15,19.5,rotation,side)
|
||||
cube([14.5,19.5,floorthick+(2*adjust)+12]);
|
||||
}
|
||||
// sd storage
|
||||
if(type == "sdcard" && side == "bottom" && rotation == 0) {
|
||||
@@ -2916,19 +3019,19 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
|
||||
place(loc_x-3,loc_y,loc_z-1.25,8,3,rotation,side) microusb_open();
|
||||
}
|
||||
// double stack usb opening
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc") && rotation == 0) {
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc" || type == "double_stacked_usb3-usb2") && rotation == 0) {
|
||||
place(loc_x-1,loc_y-6,loc_z,15.5,16,rotation,side)
|
||||
cube([15.5,8,16.5]);
|
||||
}
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc") && rotation == 90) {
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc" || type == "double_stacked_usb3-usb2") && rotation == 90) {
|
||||
place(loc_x-6,loc_y-1.25,loc_z,15.5,16,rotation,side)
|
||||
cube([15.5,8,16.5]);
|
||||
}
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc") && rotation == 180) {
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc" || type == "double_stacked_usb3-usb2") && rotation == 180) {
|
||||
place(loc_x-1,loc_y+7.5,loc_z,15.5,16,rotation,side)
|
||||
cube([15.5,8,16.5]);
|
||||
}
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc") && rotation == 270) {
|
||||
if((type == "double_stacked_a" || type == "double_stacked_usb3-usbc" || type == "double_stacked_usb3-usb2") && rotation == 270) {
|
||||
place(loc_x+6.25,loc_y-1,loc_z,15.5,16,rotation,side)
|
||||
cube([15.5,8,16.5]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user