finished mask(), changed tray top design, added sides style for tray design, added odroid-m1 and show2 cases, improved docs, updated sbc_model with fixed m1 heatsink and other m1 adjustments.

This commit is contained in:
Edward Kisiel
2022-05-19 11:10:34 -04:00
parent fe11f54855
commit a821d299ab
8 changed files with 6303 additions and 6100 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because it is too large Load Diff

View File

@@ -49,6 +49,7 @@
20220413 Version 1.0.6 adjusted slide_4x9, adjust m.2_header, rj45-usb2_double, rj45-usb3_double, out-in-spdif, 20220413 Version 1.0.6 adjusted slide_4x9, adjust m.2_header, rj45-usb2_double, rj45-usb3_double, out-in-spdif,
momentary_6x6x4, fixed color for usb2 micro otg, adjust all header heights, momentary_6x6x4, fixed color for usb2 micro otg, adjust all header heights,
added mipi_csi, mipi_dsi, m.2_stud added mipi_csi, mipi_dsi, m.2_stud
20220515 Version 1.0.7 added pcie(), jst_ph(), cm(), cm_holder(), corrected odroid-m1 heatsink height and sbc location, and other fixes and adjustments
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
@@ -1340,7 +1341,7 @@ module misc(x,y,rotation,side,type,pcbsize_z) {
} }
color("black") translate([54.5,4,-.01]) cube([2,30,4]); color("black") translate([54.5,4,-.01]) cube([2,30,4]);
} }
color("grey") translate([4.25,.9,3.35]) cube([45,34,.25]); color("dimgrey") translate([4.25,.9,3.35]) cube([45,34,.25]);
} }
} }
// type battery holder 1 // type battery holder 1

View File

@@ -22,12 +22,13 @@
Updated Odroid h2 sbc data Updated Odroid h2 sbc data
Added Odroid-C4 as "c4" Added Odroid-C4 as "c4"
Added Odroid-XU4Q as "xu4q" Added Odroid-XU4Q as "xu4q"
20200725 Version 1.03 Added Odroid-N2+ as "n2+" 20200725 Version 1.0.3 Added Odroid-N2+ as "n2+"
20201021 Version 1.04 Added Odroid-HC4 as "hc4" 20201021 Version 1.0.4 Added Odroid-HC4 as "hc4"
20220202 Version 1.05 Added HK Show2 20220202 Version 1.0.5 Added HK Show2
Updated Odroid-HC4 sbc data Updated Odroid-HC4 sbc data
raised C4 hdmi, updated Odroid-XU4Q, add type sdcard_i, adjusted C2 usb raised C4 hdmi, updated Odroid-XU4Q, add type sdcard_i, adjusted C2 usb
20220413 Version 1.06 Added Odroid-M1 as m1, adjustments h2, c4 gpio 20220413 Version 1.0.6 Added Odroid-M1 as m1, adjustments h2, c4 gpio
20220515 Version 1.0.7 Added rockpro64, jetsonnano and other fixes and adjustments
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
@@ -432,10 +433,10 @@ sbc_data = [
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
2.35,-1,0,"top","plug","pwr5.5_7.5x11.5", // power plug location, rotation, side, class and type 2.35,-1,0,"top","plug","pwr5.5_7.5x11.5", // power plug location, rotation, side, class and type
18,0,0,"top","usb3","double_stacked_a", // usb3 location, rotation, side, class and type 17,0,0,"top","usb3","double_stacked_a", // usb3 location, rotation, side, class and type
36,0,0,"top","usb2","double_stacked_a", // usb3 location, rotation, side, class and type 35,0,0,"top","usb2","double_stacked_a", // usb3 location, rotation, side, class and type
54.5,-1,0,"top","video","hdmi_a", // hdmi location, rotation, side, class and type 54.5,-1,0,"top","video","hdmi_a", // hdmi location, rotation, side, class and type
71.75,0,0,"top","network","rj45_single", // ethernet location, rotation, side, class and type 71.25,0,0,"top","network","rj45_single", // ethernet location, rotation, side, class and type
84.375,62.25,90,"top","gpio","header_40", // gpio location, rotation, side, class and type 84.375,62.25,90,"top","gpio","header_40", // gpio location, rotation, side, class and type
.2,101,270,"top","plug","uart_micro", // uart location, rotation, side, class and type .2,101,270,"top","plug","uart_micro", // uart location, rotation, side, class and type
21,88,120,"top","misc","bat_hold_1", // battery holder, location, rotation, side, class and type 21,88,120,"top","misc","bat_hold_1", // battery holder, location, rotation, side, class and type
@@ -460,7 +461,7 @@ sbc_data = [
.5,0,0,"top","heatsink","m1_oem", // heatsink location, rotation, side, class and type .5,0,0,"top","heatsink","m1_oem", // heatsink location, rotation, side, class and type
86.5,47,0,"top","storage","m.2_stud"], // m2 stud location, rotation, side, class and type 86.5,47,0,"top","storage","m.2_stud"], // m2 stud location, rotation, side, class and type
["m1_noheatsink",90,122,1.7,.2,17,14, // sbc model, pcb size and component height ["m1_noheatsink",90,122,1.7,.2,17,1.6, // sbc model, pcb size and component height
3,28.5,3,3,118.5,3, // pcb holes 1 and 2 location and pcb hole size 3,28.5,3,3,118.5,3, // pcb holes 1 and 2 location and pcb hole size
86.5,118.5,3,,86.5,28.5,3, // pcb holes 3 and 4 location and pcb hole size 86.5,118.5,3,,86.5,28.5,3, // pcb holes 3 and 4 location and pcb hole size
3,67,3,66,25,3, // pcb holes 5 and 6 location and pcb hole size 3,67,3,66,25,3, // pcb holes 5 and 6 location and pcb hole size
@@ -712,5 +713,9 @@ sbc_data = [
0,0,0,0,0,0,0,"", // soc2 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc2 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc3 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc3 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
100, -1, 0, "top", "misc", "ir_1", // ir_1
-1, 67, 90, "top", "misc", "ir_1", // ir_1
60, 61, 180, "top", "misc", "ir_1", // ir_1
108.5, 67, 270, "top", "misc", "ir_1", // ir_1
0,0,0,"","",""] // component, location, rotation, side, class and type 0,0,0,"","",""] // component, location, rotation, side, class and type
]; ];

View File

@@ -27,6 +27,7 @@
20201021 Version 1.0.4 Added HK Odroid-HC4 as "hc4" 20201021 Version 1.0.4 Added HK Odroid-HC4 as "hc4"
20220202 Version 1.0.5 Added HK Show2 as "show2" 20220202 Version 1.0.5 Added HK Show2 as "show2"
20220413 Version 1.0.6 Added Odroid-M1 as "m1" 20220413 Version 1.0.6 Added Odroid-M1 as "m1"
20220515 Version 1.0.7 Added rockpro64, jetsonnano, updated sbc_test.scad, sbc_test_components.scad and other fixes and adjustments
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder

View File

@@ -26,6 +26,9 @@
c2_shell_boombox, c2_panel_boombox, c2_deskboom_lcd3.5, c2_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 c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boombox
20220406 Version 1.2.2 various case adjustments 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
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
*/ */
@@ -34,7 +37,7 @@
corner of component or opening, holes measured to center. All measurements in mm. corner of component or opening, holes measured to center. All measurements in mm.
PCB orientation is long side of board along the x axis. PCB orientation is long side of board along the x axis.
SBC: "c1+","c2","c4","xu4","xu4q","mc1","hc1","n1","n2","n2+","h2",hc4,rockpro64,jetsonnano SBC: "c1+","c2","c4","xu4","xu4q","mc1","hc1","n1","n2","n2+",m1,"h2",hc4,rockpro64,jetsonnano
schema: schema:
"case_name","sbc_model","case_design","case_style", "case_name","sbc_model","case_design","case_style",
@@ -230,6 +233,16 @@ case_data = [
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["c1+_tray_sides","c1+","tray","sides", // case_name,sbc_model,case_design,case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["c1+_tray_boombox","c1+","tray","none", // case_name,sbc_model,case_design,case_style ["c1+_tray_boombox","c1+","tray","none", // case_name,sbc_model,case_design,case_style
40,0,0,40,15,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 40,0,0,40,15,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
@@ -446,6 +459,16 @@ case_data = [
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["c2_tray_sides","c2","tray","sides", // case_name,sbc_model,case_design,case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["c2_tray_boombox","c2","tray","none", // case_name,sbc_model,case_design,case_style ["c2_tray_boombox","c2","tray","none", // case_name,sbc_model,case_design,case_style
40,0,0,40,15,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 40,0,0,40,15,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
@@ -665,6 +688,16 @@ case_data = [
["c4_tray","c4","tray","none", // case_name,sbc_model,case_design,case_style ["c4_tray","c4","tray","none", // case_name,sbc_model,case_design,case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,true,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"punchout","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["c4_tray_sides","c4","tray","sides", // case_name,sbc_model,case_design,case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
@@ -757,7 +790,17 @@ case_data = [
["xu4_tray","xu4","tray","none", // case_name,sbc_model,case_design,case_style ["xu4_tray","xu4","tray","none", // case_name,sbc_model,case_design,case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs false,true,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["xu4_tray_sides","xu4","tray","sides", // case_name,sbc_model,case_design,case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
false,true,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
@@ -826,6 +869,16 @@ case_data = [
[6.75,27,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,27,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["xu4q_tray_sides","xu4q","tray","sides", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,27,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,27,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["xu4q_tray_vu5","xu4q","tray","vu5", // case_name, sbc_model, case_design, case_style ["xu4q_tray_vu5","xu4q","tray","vu5", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
@@ -852,7 +905,7 @@ case_data = [
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,true,true,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs true,true,true,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","none","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
@@ -872,7 +925,7 @@ case_data = [
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,true,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs false,false,true,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","none","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
@@ -882,7 +935,17 @@ case_data = [
0,0,0,0,10,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,10,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","none","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["n1_tray_sides","n1","tray","sides", // case_name, sbc_model, case_design, case_style
0,0,0,0,10,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
@@ -892,7 +955,7 @@ case_data = [
0,0,0,0,10,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,10,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","none","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
@@ -902,7 +965,7 @@ case_data = [
15,0,0,30,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 15,0,0,30,0,0,4, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,3,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs true,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","none","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
@@ -920,7 +983,17 @@ case_data = [
["n2_tray","n2","tray","none", // case_name, sbc_model, case_design, case_style ["n2_tray","n2","tray","none", // case_name, sbc_model, case_design, case_style
5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,2,[.2,3], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,2,[.2,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["n2_tray_sides","n2","tray","sides", // case_name, sbc_model, case_design, case_style
5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,2,[.2,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
@@ -961,7 +1034,17 @@ case_data = [
["n2+_tray","n2+","tray","none", // case_name, sbc_model, case_design, case_style ["n2+_tray","n2+","tray","none", // case_name, sbc_model, case_design, case_style
5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,2,[.2,3], // wallthick,floorthick,sidethick,gap,fillet 2.5,2,2,2,[.2,3], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["n2+_tray_sides","n2+","tray","sides", // case_name, sbc_model, case_design, case_style
5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2.5,2,2,2,[.2,3], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","fan","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff [6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
@@ -1003,6 +1086,92 @@ case_data = [
"sub","vent",25,50,44,"top",[0,0,0],10,2,4,6,6,"horizontal",1,], // sub vent "sub","vent",25,50,44,"top",[0,0,0],10,2,4,6,6,"horizontal",1,], // sub vent
// Odroid-M1
["m1_panel","m1","panel","none", // case_name, sbc_model, case_design, case_style
5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,2,[.2,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","none","false", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","vent",29,20,-1,"bottom",[0,0,0],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",100,32,10,"right",[0,0,90],2,15,8,1,17,"vertical",1, // vent opening
"sub","vent",-5.5,32,10,"left",[0,0,90],2,15,8,1,17,"vertical",1], // vent opening
["m1_tray","m1","tray","none", // case_name, sbc_model, case_design, case_style
7,0,0,14,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2.5,2,2,2,[.2,2], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_ext_standoff
"add2","button",60,118.5,35,"top",[0,0,0],10,0,11,0,0,"recess",0, // button
"model","button_top",60,118.5,35,"top",[0,0,0],10,0,11,0,0,"recess",0, // button top
"platter","button_top",-20,0,0,"top",[0,0,0],10,0,11,0,0,"recess",0, // button top
"sub","vent",29,32,34,"top",[0,0,0],2,15,8,2,12,"horizontal",1, // top vent opening
"sub","vent",29,20,-1,"bottom",[0,0,0],2,15,8,5,12,"horizontal",1, // bottom vent opening
"sub","vent",108.5,32,10,"top",[0,0,90],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",-6.5,32,10,"top",[0,0,90],2,15,4,1,17,"vertical",1], // vent opening
["m1_tray_drive","m1","tray","none", // case_name, sbc_model, case_design, case_style
7,0,0,14,0,8,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2.5,2,2,2,[.2,2], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","hd_holes",17,22,41,"top",[0,0,0],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes
"model","hd25",17,122,33.5,"top",[0,0,-90],0,0,0,7.5,0,"",0, // model 2.5 hd
"sub","vent",29,32,41,"top",[0,0,0],2,15,8,2,12,"horizontal",1, // top vent opening
"sub","vent",29,20,-1,"bottom",[0,0,0],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",108.5,32,10,"top",[0,0,90],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",-6.5,32,10,"top",[0,0,90],2,15,4,1,17,"vertical",1], // vent opening
["m1_tray_sides","m1","tray","sides", // case_name, sbc_model, case_design, case_style
5,0,0,10,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,2,[.2,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","vent",29,20,-1,"bottom",[0,0,0],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",104,32,10,"right",[0,0,90],2,15,4,1,17,"vertical",1, // vent opening
"sub","vent",-5.5,32,10,"left",[0,0,90],2,15,4,1,17,"vertical",1], // vent opening
["m1_tray_vu5","m1","tray","vu5", // case_name, sbc_model, case_design, case_style
7,0,0,14,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,2,[.2,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","vent",29,20,-1,"bottom",[0,0,0],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",104,32,10,"right",[0,0,90],2,15,8,1,17,"vertical",1, // vent opening
"sub","vent",-7,32,10,"left",[0,0,90],2,15,8,1,17,"vertical",1], // vent opening
["m1_tray_vu7","m1","tray","vu7", // case_name, sbc_model, case_design, case_style
15,0,0,30,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,2,[.2,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","none","none","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,18,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,5,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","vent",36,20,-1,"bottom",[0,0,0],2,15,8,5,12,"horizontal",1, // vent opening
"sub","vent",123,32,10,"right",[0,0,90],2,15,6,1,17,"vertical",1, // vent opening
"sub","vent",-7,32,10,"left",[0,0,90],2,15,6,1,17,"vertical",1], // vent opening
// Odroid-H2 // Odroid-H2
["h2_shell","h2","shell","none", // case_name, sbc_model, case_design, case_style ["h2_shell","h2","shell","none", // case_name, sbc_model, case_design, case_style
@@ -1035,6 +1204,16 @@ case_data = [
["h2_tray","h2","tray","none", // case_name, sbc_model, case_design, case_style ["h2_tray","h2","tray","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2.5,2,2,1.5,[3.5,3], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,38,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,38,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,11,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["h2_tray_sides","h2","tray","sides", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3.5,0], // wallthick,floorthick,sidethick,gap,fillet
true,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs true,false,false,false,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
@@ -1258,6 +1437,16 @@ case_data = [
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff [6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff [6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["hc4_tray_sides","hc4","tray","sides", // case_name, sbc_model, case_design, case_style
0,0,0,0,10,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[9,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,false, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
true,"none","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1]], // bottom_ext_standoff
["hc4_tray_vu5","hc4","tray","vu5", // case_name, sbc_model, case_design, case_style ["hc4_tray_vu5","hc4","tray","vu5", // case_name, sbc_model, case_design, case_style
0,0,0,0,10,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,10,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,3,1.5,[9,0], // wallthick,floorthick,sidethick,gap,fillet 2,2,3,1.5,[9,0], // wallthick,floorthick,sidethick,gap,fillet
@@ -1423,6 +1612,17 @@ case_data = [
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff [6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,8,0,0,"",[1,1,1,1]], // sub heatsink opening "sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,8,0,0,"",[1,1,1,1]], // sub heatsink opening
["jetsonnano_tray_sides","jetsonnano","tray","sides", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,-5,3, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,8,0,0,"",[1,1,1,1]], // sub heatsink opening
["rockpro64_shell","rockpro64","shell","none", // case_name, sbc_model, case_design, case_style ["rockpro64_shell","rockpro64","shell","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
@@ -1461,6 +1661,18 @@ case_data = [
["rockpro64_tray","rockpro64","tray","none", // case_name, sbc_model, case_design, case_style ["rockpro64_tray","rockpro64","tray","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2.5,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
false,true,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","fan",43,26,25,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,8,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_tray_sides","rockpro64","tray","sides", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet 2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
false,true,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs false,true,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
@@ -1471,6 +1683,22 @@ case_data = [
"sub","fan",43,26,25,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening "sub","fan",43,26,25,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,8,0,0,"",[1,1,1,1]], // sub pcie opening "sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,8,0,0,"",[1,1,1,1]], // sub pcie opening
["show2_shell","show2","shell","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
false,true,true,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"model","hk_wb2",6.25,24.675,16,"top",[0,0,180],0,0,0,0,0,"",0, // hk weatherboard2
"suball","round",48.75,0,6,"top",[90,0,0],4,0,4,0,0,"",0, // sub button access hole
"suball","round",57.25,0,6,"top",[90,0,0],4,0,4,0,0,"",0, // sub button access hole
"suball","round",65.75,0,6,"top",[90,0,0],4,0,4,0,0,"",0, // sub button access hole
"sub","rectangle",.5,8,8.5,"top",[0,0,0],6,16.5,8,0,0,"",[.5,.5,.5,.5], // sub gpio opening
"add1","rectangle",22.5,9,8.85,"top",[0,0,0],47,36,3.25,0,0,"",[.5,.5,.5,.5], // add screen trim
"sub","rectangle",23.5,10,8.5,"top",[0,0,0],45,34,8,0,0,"",[.5,.5,.5,.5]], // sub screen opening
["test","test","shell","none", // case_name, sbc_model, case_design, case_style ["test","test","shell","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,

View File

@@ -31,6 +31,8 @@
20220320 Version 1.2.1 added hk_boom bonnet model and accessories, hk_uart model, fixed uart opening, 20220320 Version 1.2.1 added hk_boom bonnet model and accessories, hk_uart model, fixed uart opening,
enabled pcb_z, added tabs and fixed tray case top, other fixes and maintenance enabled pcb_z, added tabs and fixed tray case top, other fixes and maintenance
20220406 Version 1.2.2 added vu7c, vu8m and weatherboard2 models, other additions, fixes and maintenance 20220406 Version 1.2.2 added vu7c, vu8m and weatherboard2 models, other additions, fixes and maintenance
20220515 Version 1.2.3 added odroid-m1, jetson nano, rockpro64, completed mask(), improved docs
changed tray top design
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
*/ */
@@ -41,7 +43,7 @@ use <./lib/fillets.scad>;
include <./lib/sbc_models.cfg>; include <./lib/sbc_models.cfg>;
include <./sbc_case_builder.cfg>; include <./sbc_case_builder.cfg>;
case_name = "rockpro64_shell"; // case_name to load from sbc_case_builder.cfg case_name = "m1_tray"; // case_name to load from sbc_case_builder.cfg
view = "model"; // viewing mode "platter", "model", "debug" view = "model"; // viewing mode "platter", "model", "debug"
highlight = false; // enable highlight for subtarctive geometry (true or false) highlight = false; // enable highlight for subtarctive geometry (true or false)
@@ -57,7 +59,6 @@ c = search([case_name],case_data);
case_design = case_data[c[0]][2]; // "shell", "panel", "stacked", "tray" case_design = case_data[c[0]][2]; // "shell", "panel", "stacked", "tray"
case_style = case_data[c[0]][3]; // style of case_design case_style = case_data[c[0]][3]; // style of case_design
// tray: none, vu5, vu7
sbc_model = case_data[c[0]][1]; // any sbc from sbc model framework: "c1+","c2","c4","hc4" sbc_model = case_data[c[0]][1]; // any sbc from sbc model framework: "c1+","c2","c4","hc4"
// "xu4","xu4q","mc1","hc1","n1","n2","n2+","h2" // "xu4","xu4q","mc1","hc1","n1","n2","n2+","h2"
@@ -176,10 +177,12 @@ if (view == "platter") {
if(case_design == "tray") { if(case_design == "tray") {
case_bottom(case_design); case_bottom(case_design);
translate([0,(2*depth)+10,case_z]) rotate([180,0,0]) case_top(case_design); translate([0,(2*depth)+10,case_z]) rotate([180,0,0]) case_top(case_design);
translate([3*width,0,width]) rotate([0,90,90]) if(case_style == "vu5" || case_style == "vu7" || case_style == "sides") {
case_side(case_design,case_style,"right"); translate([3*width,0,width]) rotate([0,90,90])
translate([width+15,0,2*sidethick]) rotate([0,-90,-90]) case_side(case_design,case_style,"right");
case_side(case_design,case_style,"left"); translate([width+15,0,2*sidethick]) rotate([0,-90,-90])
case_side(case_design,case_style,"left");
}
} }
// platter accessories // platter accessories
for (i=[30:14:len(case_data[c[0]])-1]) { for (i=[30:14:len(case_data[c[0]])-1]) {
@@ -267,11 +270,13 @@ if (view == "model") {
if(raise_top >= 0) { if(raise_top >= 0) {
color("grey",1) translate([0,0,raise_top]) case_top(case_design); color("grey",1) translate([0,0,raise_top]) case_top(case_design);
} }
if(move_rightside >= 0) { if(case_style == "sides" || case_style == "vu5" || case_style == "vu7") {
color("grey",1) translate([move_rightside,0,0]) case_side(case_design,case_style,"right"); if(move_rightside >= 0) {
} color("grey",1) translate([move_rightside,0,0]) case_side(case_design,case_style,"right");
if(move_leftside >= 0) { }
color("grey",1) translate([-move_leftside,0,0]) case_side(case_design,case_style,"left"); if(move_leftside >= 0) {
color("grey",1) translate([-move_leftside,0,0]) case_side(case_design,case_style,"left");
}
} }
if(case_style == "vu5") { if(case_style == "vu5") {
color("darkgrey",.5) translate([width+((127.5-width)/2)-6.5-wallthick-gap, color("darkgrey",.5) translate([width+((127.5-width)/2)-6.5-wallthick-gap,
@@ -344,12 +349,12 @@ if(case_design == "tray") {
else { else {
echo(width=width,depth=depth,top=top_height,bottom=bottom_height); echo(width=width,depth=depth,top=top_height,bottom=bottom_height);
} }
//} //}
// debug // debug
if (view == "debug") { if (view == "debug") {
// case_top(case_design); case_top(case_design);
case_bottom(case_design); // case_bottom(case_design);
// case_side(case_design,case_style,"rear"); // case_side(case_design,case_style,"rear");
// case_side(case_design,case_style,"front"); // case_side(case_design,case_style,"front");
// case_side(case_design,case_style,"left"); // case_side(case_design,case_style,"left");
@@ -413,9 +418,19 @@ module case_bottom(case_design) {
translate([width-wallthick-gap-wallthick-4+adjust,wallthick+gap+10, translate([width-wallthick-gap-wallthick-4+adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([90,0,90]) ((bottom_height+floorthick)/2)-1]) rotate([90,0,90])
cylinder(d=10, h=4, $fn=6); cylinder(d=10, h=4, $fn=6);
translate([width-wallthick-gap-wallthick-4+adjust,depth-wallthick-gap-10, if(depth >= 75) {
((bottom_height+floorthick)/2)-1]) rotate([90,0,90]) translate([width-wallthick-gap-wallthick-4+adjust,depth-wallthick-gap-10,
cylinder(d=10, h=4, $fn=6); ((bottom_height+floorthick)/2)-1]) rotate([90,0,90])
cylinder(d=10, h=4, $fn=6);
}
else {
translate([width-wallthick-gap-wallthick-4+adjust,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([90,0,90])
cylinder(d=10, h=4, $fn=6);
}
// left side nuts // left side nuts
translate([-adjust-gap,wallthick+gap+10,((bottom_height+floorthick)/2)-1]) translate([-adjust-gap,wallthick+gap+10,((bottom_height+floorthick)/2)-1])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
@@ -427,10 +442,16 @@ module case_bottom(case_design) {
translate([-adjust-gap,wallthick+gap+40,((bottom_height+floorthick)/2)-1]) translate([-adjust-gap,wallthick+gap+40,((bottom_height+floorthick)/2)-1])
rotate([90,0,90]) cylinder(d=10, h=4, $fn=6); rotate([90,0,90]) cylinder(d=10, h=4, $fn=6);
} }
// rear panel
translate([-wallthick-gap,depth-(2*wallthick)-gap,bottom_height-adjust])
rotate([0,0,0]) cube([width,wallthick,top_height]);
// front panel // front panel
if(case_style == "sides" || case_style == "vu5" || case_style == "vu7") {
translate([-wallthick-gap,depth-(2*wallthick)-gap,bottom_height-adjust])
rotate([0,0,0]) cube([width,wallthick,top_height]);
}
else {
translate([-wallthick-gap,depth-(2*wallthick)-gap,bottom_height-adjust])
rotate([0,0,0]) cube([width,wallthick,top_height-floorthick]);
}
// rear panel
translate([-wallthick-gap,-wallthick-gap,bottom_height-adjust]) translate([-wallthick-gap,-wallthick-gap,bottom_height-adjust])
cube([width,wallthick,top_height-floorthick]); cube([width,wallthick,top_height-floorthick]);
@@ -462,8 +483,15 @@ module case_bottom(case_design) {
// right side bottom attachment holes // right side bottom attachment holes
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10, translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10, if(depth >= 75) {
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
}
else {
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
}
// left side bottom attachment holes // left side bottom attachment holes
translate([-wallthick-gap-adjust,wallthick+gap+10, translate([-wallthick-gap-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust)); ((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
@@ -478,8 +506,14 @@ module case_bottom(case_design) {
// right side bottom nut inset // right side bottom nut inset
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+10, translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); ((bottom_height+floorthick)/2)-1]) rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
translate([width-3.5-(2*wallthick)-gap-.6,depth-wallthick-gap-10, if(depth >= 75) {
((bottom_height+floorthick)/2)-1])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); translate([width-3.5-(2*wallthick)-gap-.6,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
else {
translate([width-3.5-(2*wallthick)-gap-.6,wallthick+gap+40,
((bottom_height+floorthick)/2)-1])rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
}
// left side bottom nut inset // left side bottom nut inset
translate([-gap+.6,wallthick+gap+10,((bottom_height+floorthick)/2)-1]) translate([-gap+.6,wallthick+gap+10,((bottom_height+floorthick)/2)-1])
rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6); rotate([90,0,90]) cylinder(d=6.6, h=3.5, $fn=6);
@@ -819,12 +853,52 @@ module case_top(case_design) {
vertical=[c_fillet,c_fillet,c_fillet,c_fillet], vertical=[c_fillet,c_fillet,c_fillet,c_fillet],
top=[0,0,0,0], bottom=[0,0,0,0], $fn=90); top=[0,0,0,0], bottom=[0,0,0,0], $fn=90);
} }
if(case_design == "tray") { if(case_design == "tray" && (case_style == "vu5" || case_style == "vu7" || case_style == "sides")) {
translate([-wallthick-gap+.5,-wallthick-gap,case_z]) translate([-wallthick-gap+.5,-wallthick-gap,case_z])
cube([width-1,depth,floorthick]); cube([width-1,depth,floorthick]);
translate([-wallthick-gap+.5,-wallthick-gap, translate([-wallthick-gap+.5,-wallthick-gap,
case_z-floorthick+adjust]) cube([width-1,wallthick,wallthick]); case_z-floorthick+adjust]) cube([width-1,wallthick,wallthick]);
} }
if(case_design == "tray" && case_style == "none") {
difference() {
translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,case_z/2])
cube_fillet_inside([width+2*wallthick+1,depth,bottom_height+top_height],
vertical=[0,0,0,0], top=[0,fillet,0,fillet,fillet],
bottom=[0,0,0,0], $fn=90);
translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,(case_z/2)-floorthick+.25])
cube_fillet_inside([width+1,depth+(wallthick*2),case_z],
vertical=[c_fillet-1,c_fillet-1,c_fillet-1,c_fillet-1],
top=[0,0,0,0],bottom=[0,0,0,0], $fn=90);
// right side bottom attachment holes
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) {
translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
else {
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
// left side bottom attachment holes
translate([-2*wallthick-gap-2*adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) {
translate([-wallthick-gap-adjust-6,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
else {
translate([-wallthick-gap-adjust-6,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
}
}
for (i=[30:14:len(case_data[c[0]])-1]) { for (i=[30:14:len(case_data[c[0]])-1]) {
class = case_data[c[0]][i]; class = case_data[c[0]][i];
type = case_data[c[0]][i+1]; type = case_data[c[0]][i+1];
@@ -1164,6 +1238,74 @@ module case_side(case_design,case_style,side) {
} }
} }
} }
if(case_design == "tray" && case_style == "sides") {
if(side == "right") {
difference() {
union() {
translate([width-wallthick-gap,-(2*wallthick)-gap,0])
cube([sidethick,depth+2*wallthick,case_z+(2*wallthick)]);
translate([width-gap-wallthick-1+adjust,depth-2*(wallthick+gap)-.5,case_z+(2*wallthick)-2])
cube([1,6,2]);
translate([width-gap-wallthick-1+adjust,-2*(wallthick+gap)+1.5,case_z+(2*wallthick)-2])
cube([1,6,2]);
// top rail
translate([width-6.9-adjust,-gap,case_z-floorthick-.5])
cube([4,depth-2*(wallthick+gap),2]);
}
// right side bottom attachment holes
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) {
translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
else {
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
}
}
if(side == "left") {
difference() {
union() {
translate([-wallthick-gap-sidethick,-(2*wallthick)-gap,0])
cube([sidethick,depth+2*wallthick,case_z+(2*wallthick)]);
translate([-gap-wallthick-adjust,depth-2*(wallthick+gap)-.5,case_z+(2*wallthick)-2])
cube([1,6,2]);
translate([-gap-wallthick-adjust,-2*(wallthick+gap)+1.5,case_z+(2*wallthick)-2])
cube([1,6,2]);
// top rail
translate([-wallthick-gap-adjust,-gap,case_z-floorthick-.5])
cube([4,depth-2*(wallthick+gap),2]);
}
// left side bottom attachment holes
translate([-wallthick-gap-adjust-5,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) {
translate([-wallthick-gap-adjust-6,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
else {
translate([-wallthick-gap-adjust-6,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0])
cylinder(d=3, h=10+sidethick+(2*adjust));
}
}
}
}
if(case_design == "tray" && case_style == "vu5") {
cheight = top_height+bottom_height+90;
vesa = 75;
vu_holder(case_style,side,vesa,cheight);
}
if(case_design == "tray" && case_style == "vu7") {
cheight = top_height+bottom_height+122;
vesa = 100;
vu_holder(case_style,side,vesa,cheight);
}
// additive accessories // additive accessories
for (i=[30:14:len(case_data[c[0]])-1]) { for (i=[30:14:len(case_data[c[0]])-1]) {
class = case_data[c[0]][i]; class = case_data[c[0]][i];
@@ -1186,63 +1328,6 @@ module case_side(case_design,case_style,side) {
} }
} }
} }
if(case_design == "tray" && case_style == "none") {
if(side == "right") {
difference() {
union() {
translate([width-wallthick-gap,-(2*wallthick)-gap,0])
cube([sidethick,depth+2*wallthick,case_z+(2*wallthick)]);
translate([width-gap-wallthick-1+adjust,depth-2*(wallthick+gap)-.5,case_z+(2*wallthick)-2])
cube([1,6,2]);
translate([width-gap-wallthick-1+adjust,-2*(wallthick+gap)+1.5,case_z+(2*wallthick)-2])
cube([1,6,2]);
// top rail
translate([width-6.9-adjust,-gap,case_z-floorthick-.5])
cube([4,depth-2*(wallthick+gap),2]);
}
// right side bottom attachment holes
translate([width-2*(wallthick+gap)-sidethick-adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
translate([width-2*(wallthick+gap)-sidethick-adjust,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
}
}
if(side == "left") {
difference() {
union() {
translate([-wallthick-gap-sidethick,-(2*wallthick)-gap,0])
cube([sidethick,depth+2*wallthick,case_z+(2*wallthick)]);
translate([-gap-wallthick-adjust,depth-2*(wallthick+gap)-.5,case_z+(2*wallthick)-2]) cube([1,6,2]);
translate([-gap-wallthick-adjust,-2*(wallthick+gap)+1.5,case_z+(2*wallthick)-2]) cube([1,6,2]);
// top rail
translate([-wallthick-gap-adjust,-gap,case_z-floorthick-.5])
cube([4,depth-2*(wallthick+gap),2]);
}
// left side bottom attachment holes
translate([-wallthick-gap-adjust-5,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
if(depth >= 75) {
translate([-wallthick-gap-adjust-6,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
}
else {
translate([-wallthick-gap-adjust-6,wallthick+gap+40,
((bottom_height+floorthick)/2)-1]) rotate([0,90,0]) cylinder(d=3, h=10+sidethick+(2*adjust));
}
}
}
}
if(case_design == "tray" && case_style == "vu5") {
cheight = top_height+bottom_height+90;
vesa = 75;
vu_holder(case_style,side,vesa,cheight);
}
if(case_design == "tray" && case_style == "vu7") {
cheight = top_height+bottom_height+122;
vesa = 100;
vu_holder(case_style,side,vesa,cheight);
}
for (i=[30:14:len(case_data[c[0]])-1]) { for (i=[30:14:len(case_data[c[0]])-1]) {
class = case_data[c[0]][i]; class = case_data[c[0]][i];
type = case_data[c[0]][i+1]; type = case_data[c[0]][i+1];

View File

@@ -40,7 +40,8 @@
20220406 version 1.2.2 hk_wb2(), hk_vu7c(gpio_ext, tabs), hdmi_a(), header_f(pins, height), pcb_pad(pads), 20220406 version 1.2.2 hk_wb2(), hk_vu7c(gpio_ext, tabs), hdmi_a(), header_f(pins, height), pcb_pad(pads),
embelished boom_speaker(), changed boom_speaker_holder(style, tolerance), added boom_speaker_strap(), embelished boom_speaker(), changed boom_speaker_holder(style, tolerance), added boom_speaker_strap(),
adjusted access_port(), access_cover(), added @mctom's hk_vu8m(bracket), u_bracket(), spacer() adjusted access_port(), access_cover(), added @mctom's hk_vu8m(bracket), u_bracket(), spacer()
2022xxxx version 1.2.x removed spacer(); added screw(); modified hk_vu8m(); added m1_hdmount(); added hdd35_25holder(length) 20220515 version 1.2.3 removed spacer(); added screw(); modified hk_vu8m(); added m1_hdmount(); added hdd35_25holder(length)
printer friendly punchout(),added remaining mask() entries, standardized mask()
see https://github.com/hominoids/SBC_Case_Builder see https://github.com/hominoids/SBC_Case_Builder
@@ -581,7 +582,7 @@ $fn = 90;
if(style == "recess") { if(style == "recess") {
difference() { difference() {
cylinder(d=8.5, h=.8); cylinder(d=8.5, h=.8);
translate([-1.25,-1.25,-adjust]) cube([2.5,2.5,1]); translate([-1.5,-1.75,-adjust]) cube([2.75,3.5,1]);
translate([-.75,-.75,-adjust]) cube([5,1.25,1.25]); translate([-.75,-.75,-adjust]) cube([5,1.25,1.25]);
} }
} }
@@ -2462,7 +2463,7 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
place(loc_x,loc_y-1,loc_z-pcb_z,15,11.5,rotation,side) hdmi_open(); place(loc_x,loc_y-1,loc_z-pcb_z,15,11.5,rotation,side) hdmi_open();
} }
if(type == "hdmi_a" && side == "top" && rotation == 0) { if(type == "hdmi_a" && side == "top" && rotation == 0) {
place(loc_x-.5,loc_y-1,loc_z,15,11.5,rotation,side) hdmi_open(); place(loc_x-.675,loc_y-1,loc_z+.25,15,11.5,rotation,side) hdmi_open();
} }
if(type == "hdmi_a" && side == "top" && rotation == 90) { if(type == "hdmi_a" && side == "top" && rotation == 90) {
place(loc_x-1,loc_y,loc_z,15,11.5,rotation,side) hdmi_open(); place(loc_x-1,loc_y,loc_z,15,11.5,rotation,side) hdmi_open();
@@ -2474,18 +2475,21 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
place(loc_x+1,loc_y-.5,loc_z,15,11.5,rotation,side) hdmi_open(); place(loc_x+1,loc_y-.5,loc_z,15,11.5,rotation,side) hdmi_open();
} }
// micro usb opening // micro usb opening
if(class == "usb2" && type == "micro" && rotation == 0) { if(class == "usb2" && type == "micro" && rotation == 0 && side == "top") {
place(loc_x,loc_y-3,loc_z,8,3,rotation,side) microusb_open(); place(loc_x,loc_y-3,loc_z,8,3,rotation,side) microusb_open();
} }
if(class == "usb2" && type == "micro" && rotation == 90) { if(class == "usb2" && type == "micro" && rotation == 90 && side == "top") {
place(loc_x-3,loc_y-1,loc_z,8,3,rotation,side) microusb_open(); place(loc_x-3,loc_y-1,loc_z,8,3,rotation,side) microusb_open();
} }
if(class == "usb2" && type == "micro" && rotation == 180) { if(class == "usb2" && type == "micro" && rotation == 180 && side == "top") {
place(loc_x-1,loc_y+4.5,loc_z,8,3,rotation,side) microusb_open(); place(loc_x-1,loc_y+4.5,loc_z,8,3,rotation,side) microusb_open();
} }
if(class == "usb2" && type == "micro" && rotation == 270) { if(class == "usb2" && type == "micro" && rotation == 270 && side == "top") {
place(loc_x+4.5,loc_y,loc_z,8,3,rotation,side) microusb_open(); place(loc_x+4.5,loc_y,loc_z,8,3,rotation,side) microusb_open();
} }
if(class == "usb2" && type == "micro" && rotation == 0 && side == "bottom") {
place(loc_x-1,loc_y-3,loc_z-1.25,8,3,rotation,side) microusb_open();
}
// power plug openings // power plug openings
if(type == "pwr5.5_7.5x11.5" && rotation == 0) { if(type == "pwr5.5_7.5x11.5" && rotation == 0) {
place(loc_x,loc_y,loc_z,7,7,rotation,side) place(loc_x,loc_y,loc_z,7,7,rotation,side)
@@ -2583,7 +2587,7 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
} }
if(type == "sdcard" && side == "top" && rotation == 180) { if(type == "sdcard" && side == "top" && rotation == 180) {
place(loc_x-.5,loc_y+5,loc_z,12,15.5,rotation,side) place(loc_x-.5,loc_y+5,loc_z,12,15.5,rotation,side)
translate([0,0,1.75]) cube([12,15.5,2]); translate([0,0,1.5]) cube([12,15.5,2]);
} }
if(type == "sdcard" && side == "top" && rotation == 270) { if(type == "sdcard" && side == "top" && rotation == 270) {
place(loc_x+5,loc_y,loc_z,12,15.5,rotation,side) place(loc_x+5,loc_y,loc_z,12,15.5,rotation,side)
@@ -2659,19 +2663,19 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
// ir opening // ir opening
if(type == "ir_1" && rotation == 0) { if(type == "ir_1" && rotation == 0) {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([3.5,2,7.5]) rotate([90,0,0]) cylinder(d=6, h=9); translate([3.5,2,7.5]) rotate([90,0,0]) cylinder(d=6, h=12);
} }
if(type == "ir_1" && rotation == 90) { if(type == "ir_1" && rotation == 90) {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([2.5,2,7.5]) rotate([90,0,0]) cylinder(d=6, h=9); translate([2.5,2,7.5]) rotate([90,0,0]) cylinder(d=6, h=12);
} }
if(type == "ir_1" && rotation == 180) { if(type == "ir_1" && rotation == 180) {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([2.5,5,7.5]) rotate([90,0,0]) cylinder(d=6, h=9); translate([2.5,5,6.5]) rotate([90,0,0]) cylinder(d=6, h=12);
} }
if(type == "ir_1" && rotation == 270) { if(type == "ir_1" && rotation == 270) {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([3.375,5,7.5]) rotate([90,0,0]) cylinder(d=6, h=9); translate([3.375,5,7.5]) rotate([90,0,0]) cylinder(d=6, h=12);
} }
// switch opening // switch opening
if(type == "slide_4x9" && rotation == 0) { if(type == "slide_4x9" && rotation == 0) {
@@ -2837,6 +2841,23 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
translate([-.5,-3.75,0]) cube([7,2.5,6.5]); translate([-.5,-3.75,0]) cube([7,2.5,6.5]);
} }
} }
if(type == "audio_micro" && rotation == 0) {
place(loc_x,loc_y,loc_z,7.5,7.5,rotation,side)
translate([0,4,0]) cube([7.5,8,4]);
}
if(type == "m1_oem" && rotation == 0) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
union() {
translate([8.75,7.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([80,7.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([8.75,39.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([80,39.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([8.75,79.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([80,79.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([8.75,111.5,-20]) rotate([0,0,90]) slot(3,3,8);
translate([80,111.5,-20]) rotate([0,0,90]) slot(3,3,8);
}
}
} }
@@ -2852,10 +2873,10 @@ module punchout(width,depth,gap,thick,fillet,shape) {
translate([0,0,0]) slot(depth,width,thick); translate([0,0,0]) slot(depth,width,thick);
translate([0,0,-adjust]) slot(depth-gap,width,thick+(2*adjust)); translate([0,0,-adjust]) slot(depth-gap,width,thick+(2*adjust));
// cross ties // cross ties
translate([2,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]); translate([-1,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]);
translate([(width/2)-1-(width/4)+4,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]); translate([(width/2)-1-(width/4)+4,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]);
translate([(width/2)-1+(width/4)-4,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]); translate([(width/2)-1+(width/4)-4,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]);
translate([width-4,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]); translate([width-1,-(depth/2)-1,-adjust]) cube([2,depth+2,thick+(2*adjust)]);
} }
} }
if(shape == "rectangle") { if(shape == "rectangle") {
@@ -2870,9 +2891,11 @@ module punchout(width,depth,gap,thick,fillet,shape) {
top=[0,0,0,0], bottom=[0,0,0,0], $fn=90); top=[0,0,0,0], bottom=[0,0,0,0], $fn=90);
// cross ties // cross ties
translate([-1,(depth/2)-1,-adjust]) cube([gap+2,2,thick+(2*adjust)]); translate([-1,(depth/2)-1,-adjust]) cube([gap+2,2,thick+(2*adjust)]);
translate([(width/2)-1,depth-gap-1,-adjust]) cube([2,gap+2,thick+(2*adjust)]); translate([width-4,depth-gap-1,-adjust]) cube([2,gap+2,thick+(2*adjust)]);
translate([2,depth-gap-1,-adjust]) cube([2,gap+2,thick+(2*adjust)]);
translate([width-gap-1,(depth/2)-1,-adjust]) cube([gap+2,2,thick+(2*adjust)]); translate([width-gap-1,(depth/2)-1,-adjust]) cube([gap+2,2,thick+(2*adjust)]);
translate([(width/2)-1,-1,-adjust]) cube([2,gap+2,thick+(2*adjust)]); translate([width-4,-1,-adjust]) cube([2,gap+2,thick+(2*adjust)]);
translate([2,-1,-adjust]) cube([2,gap+2,thick+(2*adjust)]);
} }
} }
if(shape == "round") { if(shape == "round") {