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,7 +49,8 @@
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,
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
place(x,y,size_x,size_y,rotation,side,type,pcbsize_z)
@@ -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("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

View File

@@ -22,12 +22,13 @@
Updated Odroid h2 sbc data
Added Odroid-C4 as "c4"
Added Odroid-XU4Q as "xu4q"
20200725 Version 1.03 Added Odroid-N2+ as "n2+"
20201021 Version 1.04 Added Odroid-HC4 as "hc4"
20220202 Version 1.05 Added HK Show2
20200725 Version 1.0.3 Added Odroid-N2+ as "n2+"
20201021 Version 1.0.4 Added Odroid-HC4 as "hc4"
20220202 Version 1.0.5 Added HK Show2
Updated Odroid-HC4 sbc data
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
@@ -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
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
36,0,0,"top","usb2","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
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
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
.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
@@ -460,7 +461,7 @@ sbc_data = [
.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
["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
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
@@ -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,"", // soc3 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
];

View File

@@ -27,6 +27,7 @@
20201021 Version 1.0.4 Added HK Odroid-HC4 as "hc4"
20220202 Version 1.0.5 Added HK Show2 as "show2"
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

View File

@@ -26,6 +26,9 @@
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
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.
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:
"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,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
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
@@ -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,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
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
@@ -665,6 +688,16 @@ case_data = [
["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,
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
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
@@ -757,7 +790,17 @@ case_data = [
["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,
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
[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
@@ -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,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
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
@@ -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,
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
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
@@ -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,
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,"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,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
@@ -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,
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
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,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
@@ -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,
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
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
@@ -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,
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
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
@@ -920,7 +983,17 @@ case_data = [
["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,
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,"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
@@ -961,7 +1034,17 @@ case_data = [
["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,
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,"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
@@ -1003,7 +1086,93 @@ case_data = [
"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
["h2_shell","h2","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,
@@ -1035,6 +1204,16 @@ case_data = [
["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,
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
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
@@ -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,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
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
@@ -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
"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
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
@@ -1461,7 +1661,7 @@ case_data = [
["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,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
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
@@ -1471,7 +1671,35 @@ case_data = [
"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
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
["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
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,2,[3.5,3], // wallthick,floorthick,sidethick,gap,fillet

View File

@@ -31,7 +31,9 @@
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
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
*/
@@ -41,7 +43,7 @@ use <./lib/fillets.scad>;
include <./lib/sbc_models.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"
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_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"
// "xu4","xu4q","mc1","hc1","n1","n2","n2+","h2"
@@ -176,10 +177,12 @@ if (view == "platter") {
if(case_design == "tray") {
case_bottom(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])
case_side(case_design,case_style,"right");
translate([width+15,0,2*sidethick]) rotate([0,-90,-90])
case_side(case_design,case_style,"left");
if(case_style == "vu5" || case_style == "vu7" || case_style == "sides") {
translate([3*width,0,width]) rotate([0,90,90])
case_side(case_design,case_style,"right");
translate([width+15,0,2*sidethick]) rotate([0,-90,-90])
case_side(case_design,case_style,"left");
}
}
// platter accessories
for (i=[30:14:len(case_data[c[0]])-1]) {
@@ -267,11 +270,13 @@ if (view == "model") {
if(raise_top >= 0) {
color("grey",1) translate([0,0,raise_top]) case_top(case_design);
}
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(case_style == "sides" || case_style == "vu5" || case_style == "vu7") {
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(case_style == "vu5") {
color("darkgrey",.5) translate([width+((127.5-width)/2)-6.5-wallthick-gap,
@@ -344,12 +349,12 @@ if(case_design == "tray") {
else {
echo(width=width,depth=depth,top=top_height,bottom=bottom_height);
}
//}
// debug
if (view == "debug") {
// case_top(case_design);
case_bottom(case_design);
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");
@@ -413,9 +418,19 @@ module case_bottom(case_design) {
translate([width-wallthick-gap-wallthick-4+adjust,wallthick+gap+10,
((bottom_height+floorthick)/2)-1]) rotate([90,0,90])
cylinder(d=10, h=4, $fn=6);
translate([width-wallthick-gap-wallthick-4+adjust,depth-wallthick-gap-10,
((bottom_height+floorthick)/2)-1]) rotate([90,0,90])
cylinder(d=10, h=4, $fn=6);
if(depth >= 75) {
translate([width-wallthick-gap-wallthick-4+adjust,depth-wallthick-gap-10,
((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
translate([-adjust-gap,wallthick+gap+10,((bottom_height+floorthick)/2)-1])
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])
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
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])
cube([width,wallthick,top_height-floorthick]);
@@ -462,8 +483,15 @@ module case_bottom(case_design) {
// 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(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([-wallthick-gap-adjust,wallthick+gap+10,
((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
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);
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);
if(depth >= 75) {
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
translate([-gap+.6,wallthick+gap+10,((bottom_height+floorthick)/2)-1])
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],
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])
cube([width-1,depth,floorthick]);
translate([-wallthick-gap+.5,-wallthick-gap,
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]) {
class = case_data[c[0]][i];
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
for (i=[30:14:len(case_data[c[0]])-1]) {
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]) {
class = case_data[c[0]][i];
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),
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()
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
@@ -581,7 +582,7 @@ $fn = 90;
if(style == "recess") {
difference() {
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]);
}
}
@@ -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();
}
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) {
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();
}
// 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();
}
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();
}
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();
}
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();
}
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
if(type == "pwr5.5_7.5x11.5" && rotation == 0) {
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) {
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) {
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
if(type == "ir_1" && rotation == 0) {
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) {
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) {
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) {
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
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]);
}
}
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,-adjust]) slot(depth-gap,width,thick+(2*adjust));
// 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-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") {
@@ -2870,9 +2891,11 @@ module punchout(width,depth,gap,thick,fillet,shape) {
top=[0,0,0,0], bottom=[0,0,0,0], $fn=90);
// cross ties
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/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") {