added odroid-m1s, added hex vent cooling option and made other changes.

This commit is contained in:
Edward Kisiel
2023-11-15 21:09:42 -05:00
parent 59b894d738
commit 7cec418b69
5 changed files with 566 additions and 14 deletions

View File

@@ -3,7 +3,7 @@
## Introduction
This project is about autonomous SBC case creation. It utilizes the SBC Model Framework project to automatically generate cases based on the data for any of the 61 current SBC contained within the framework. This allows legacy, current and future SBC to have multiple cases available on day one of their inclusion in the framework. There are multiple base case designs(shell, panel, stacked, tray, tray-sides, round, hex, snap, fitted) available and each allows for different styles within the design.
This project is about autonomous SBC case creation. It utilizes the SBC Model Framework project to automatically generate cases based on the data for any of the 62 current SBC contained within the framework. This allows legacy, current and future SBC to have multiple cases available on day one of their inclusion in the framework. There are multiple base case designs(shell, panel, stacked, tray, tray-sides, round, hex, snap, fitted) available and each allows for different styles within the design.
All case openings are created automatically based on SBC data and the dimensions of any case design can be expanded in any axis allowing for the creation of larger cases. If you reposition the SBC in a case, you will see i/o openings created or removed appropriately based on its proximity to the case geometry. These cases might be useful for prototypes or other in house uses to quickly and easily create standard, specialized and custom SBC cases thru different case designs, styles and accessories.
@@ -103,9 +103,9 @@ Template creation and i/o panel layouts in a dxf format can be easily created an
### Case Designs and Styles
The case naming convention for standard cases in the configuration file follow the basic form of “sbc”_”design”_”style” e.g. c4_shell or c4_tray_vu5.
#### Current Case Count 446
#### Current Case Count 454
##### Hardkernel - 182
##### Hardkernel - 191
**Odorid-C1+ cases** - 16 : c1+_shell, c1+_panel, c1+_panel_lcd3.5, c1+_desktop_lcd3.5, c1+_stacked, c1+_tray, c1+_tray_sides, c1+_tray_vu5,
c1+_tray_vu7, c1+_shell_boombox, c1+_panel_boombox, c1+_tray_boombox, c1+_round, c1+_hex, c1+_snap, c1+_fitted
@@ -129,6 +129,8 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo
**Odorid-N2LQ cases** - 9 :n2lq_shell, n2lq_panel, n2lq_stacked, n2lq_tray, n2lq_tray_sides, n2lq_tray_vu5, n2lq_tray_vu7, n2lq_snap, n2lq_fitted
**Odorid-M1S cases** - 9 : m1s_shell, m1s_panel, m1s_stacked, m1s_tray, m1s_tray_vu5, m1s_tray_vu7, m1s_tray_sides, m1s_snap, m1s_fitted
**Odorid-M1 cases** - 12 : m1_panel, m1_tray, m1_tray_drive, m1_tray_sides, m1_tray_vu5, m1_tray_vu7, m1_snap, m1_fitted, m1_fitted_drivebox2.5, m1_fitted_drivebox3.5, m1_fitted_pizzabox, m1_fitted_drivebox3.5v
**Odorid-XU4 cases** - 11 : xu4_shell, xu4_panel, xu4_stacked, xu4_tray, xu4_tray_sides, xu4_tray_vu5, xu4_tray_vu7, xu4_round, xu4_hex, xu4_snap, xu4_fitted

View File

@@ -5073,7 +5073,520 @@
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1_panel": {
"m1s_shell": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 8, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3",
"case_design": "shell",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "none",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "0",
"floorthick": "2",
"gap": "1",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "2",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_panel": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "0",
"case_design": "panel",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "none",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "0",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "1",
"sidewall_support": "false",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_stacked": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3.5",
"case_design": "stacked",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "none",
"cooling": "hex",
"exhaust_vents": "none",
"fillet": "0",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "false",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "1",
"sidewall_support": "false",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_tray": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3",
"case_design": "tray",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "8.5",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "none",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "2",
"floorthick": "2",
"gap": "1",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "2",
"sidewall_support": "false",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_tray_sides": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "0",
"case_design": "tray",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "8.5",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "sides",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "2",
"floorthick": "2",
"gap": "1",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "2",
"sidewall_support": "false",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_tray_vu5": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3.5",
"case_design": "tray",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "8.5",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "vu5",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "2",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "2",
"sidewall_support": "false",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_tray_vu7": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3.5",
"case_design": "tray",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "8.5",
"case_offset_tz": "0",
"case_offset_x": "34",
"case_offset_y": "0",
"case_style": "vu7",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "2",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "34",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "2",
"sidewall_support": "false",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_snap": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3.5",
"case_design": "snap",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "none",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "0",
"floorthick": "2",
"gap": "1",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "1",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1s_fitted": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "none",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3.5",
"case_design": "fitted",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"case_style": "none",
"cooling": "hex",
"exhaust_vents": "vent",
"fillet": "0",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_punchout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "m1s",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"sidethick": "1",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"m1_panel": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "m1_panel",

View File

@@ -50,6 +50,7 @@
fixed access_port and access_cover 180 rotation in portrait and landscape,
adjusted jack_3.5 and hdmi_a_vertical opening, change radxa rockpi to rock,
changed visionfive2 tray design bottom screw locations, updated sbc model framework.
20231115 Version 2.0.5 added hex vent and new component openings, updated sbc model framework
see https://github.com/hominoids/SBC_Case_Builder
*/
@@ -89,7 +90,7 @@ case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted]
// base case style
case_style = "none"; // ["none","vu5","vu7","sides"]
// single board computer model
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "rpi5_noheatsink", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "atomicpi", "jetsonnano", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b-v1.42", "rock5bq-v1.42", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "licheerv+dock", "visionfive2", "visionfive2q"]
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "m1s", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "rpi5_noheatsink", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "atomicpi", "jetsonnano", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b-v1.42", "rock5bq-v1.42", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "licheerv+dock", "visionfive2", "visionfive2q"]
// sbc location x axis
pcb_loc_x = 0; //[0:.5:300]
// sbc location y axis
@@ -165,7 +166,7 @@ sata_punchout = false;
// gpio openings
gpio_opening = "none"; // [none,vent,open,punchout]
// cooling openings
cooling = "fan"; // [none,vents,fan,custom]
cooling = "fan"; // [none,vents,fan,hex,custom]
// exhaust vents
exhaust_vents = "vent"; // [none,vent]
// case accessory group to load
@@ -2261,10 +2262,14 @@ module open_io() {
}
// top cooling openings
if(side == "top" && cooling == "fan" && class == "heatsink" && type != "h3_oem"
&& type != "h2_oem" && type != "n2_oem" && type != "n2+_oem") {
&& type != "h2_oem" && type != "n2_oem" && type != "n2+_oem"&& type != "m1s_oem") {
translate([loc_x+6,loc_y-28,case_z-(floorthick+adjust)-5])
fan_mask(40,floorthick+(2*adjust)+8,2);
}
if(side == "top" && cooling == "fan" && class == "heatsink" && type == "m1s_oem") {
translate([loc_x,loc_y,case_z-(floorthick+adjust)-5])
fan_mask(40,floorthick+(2*adjust)+8,2);
}
if(side == "top" && cooling == "fan" && class == "heatsink" && (type == "n2_oem" || type == "n2+_oem")) {
translate([loc_x+4,loc_y+5.5,-adjust])
fan_mask(80,floorthick+(2*adjust),2);
@@ -2283,20 +2288,34 @@ module open_io() {
translate([loc_x-5,loc_y-16,case_z-(floorthick+adjust)])
fan_mask(90,floorthick+6,2);
}
if(side == "top" && cooling == "vents" && class == "heatsink") {
for(r=[loc_x+7:4:48+loc_x]) {
if(side == "top" && cooling == "vents" && class == "heatsink" && type != "m1s_oem") {
for(r=[loc_x+7:4:58+loc_x]) {
translate([r,loc_y-20,case_z-(floorthick+adjust)-6])
cube([2,25,floorthick+(adjust*2)+8]);
cube([2,30,floorthick+(adjust*2)+12]);
}
}
if(side == "top" && cooling == "vents" && class == "heatsink" && type == "m1s_oem") {
for(r=[loc_x+7:4:58+loc_x]) {
translate([r-8,loc_y+8,case_z-(floorthick+adjust)-6])
cube([2,30,floorthick+(adjust*2)+12]);
}
}
if(side == "top" && cooling == "hex" && class == "heatsink" && type != "m1s_oem") {
translate([loc_x,loc_y-32,case_z-(floorthick+adjust)-6])
vent_hex(11, 5, floorthick+(adjust*2)+12, 8, 1.5, "horizontal");
}
if(side == "top" && cooling == "hex" && class == "heatsink" && type == "m1s_oem") {
translate([loc_x-8,loc_y,case_z-(floorthick+adjust)-6])
vent_hex(11, 5, floorthick+(adjust*2)+12, 8, 1.5, "horizontal");
}
if(side == "top" && cooling == "custom" && class == "heatsink") {
translate([loc_x+6,loc_y-14,case_z-(floorthick+adjust)])
linear_extrude(height = wallthick+(2*adjust)) import(file = "./dxf/customfan.dxf");
linear_extrude(height = wallthick+(2*adjust)+12) import(file = "./dxf/customfan.dxf");
}
if(side == "top" && exhaust_vents == "vent" && (cooling == "fan" || cooling == "vents"
if(side == "top" && exhaust_vents == "vent" && (cooling == "fan" || cooling == "vents" || cooling == "hex"
|| cooling == "custom") && class == "heatsink" && gpio_opening != "vent" && gpio_opening != "open"
&& gpio_opening != "punchout") {
for(r=[loc_x+7:4:46+loc_x]) {
for(r=[loc_x+7:4:50+loc_x]) {
translate([r,depth-(2*wallthick)-adjust-2,bottom_height+2])
cube([2,wallthick+(2*adjust)+1,top_height-floorthick-6]);
}
@@ -2382,6 +2401,19 @@ module open_io() {
punchout(15,8,1,wallthick+(2*adjust)+12,2,"rectangle");
}
if(side == "bottom" && type == "uart_micro_h" && rotation == 90) {
translate([loc_x-wallthick-gap+8.5,loc_y-1,bottom_height-6]) rotate([90,0,90])
punchout(15,5,1,wallthick+(2*adjust)+10,2,"rectangle");
}
if(side == "bottom" && type == "uart_micro_h" && rotation == -90) {
translate([loc_x+2*(wallthick+gap)+1,loc_y-1,bottom_height+5]) rotate([90,0,90])
punchout(15,5,1,wallthick+(2*adjust)+5,2,"rectangle");
}
if(side == "bottom" && type == "uart_micro_h" && rotation == 270) {
translate([loc_x-2*(wallthick),loc_y-1,bottom_height+5]) rotate([90,0,90])
punchout(15,5,1,wallthick+(2*adjust)+12,2,"rectangle");
}
// sata openings
if(side == "top" && type == "sata_power_vrec" && sata_punchout == true) {
translate([loc_x-3,loc_y+1.75,case_z-adjust-floorthick])

View File

@@ -54,6 +54,7 @@
vent_panel_hex(x, y, thick, cell_size, cell_spacing, border, borders),
added nut_holder(nut, style, dia_x, dia_y, height), fixed access_port and access_cover 180 rotation
in portrait and landscape, added h3_port_extender_holder(part,offset), cableholder_spacer()
20231115 Version 2.0.5 added hex vent and new component openings
see https://github.com/hominoids/SBC_Case_Builder
@@ -3183,6 +3184,10 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
place(loc_x+10.5,loc_y,loc_z,18,17.5,rotation,side)
cube([19,12,27]);
}
if(type == "rj45_low_profile" && rotation == 0) {
place(loc_x,loc_y-6,loc_z-3.5,15,8,rotation,side)
cube([14.75,8,12.25]);
}
// micro usb opening
if(class == "usb2" && type == "micro" && rotation == 0 && side == "top") {
place(loc_x,loc_y-3,loc_z,8,3,rotation,side) microusb_open();