diff --git a/README.md b/README.md index c11ce29..6f4bdb1 100644 --- a/README.md +++ b/README.md @@ -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 413 +#### Current Case Count 423 -##### Hardkernel +##### Hardkernel - 182 **Odorid-C1+ cases** - 16 : c1+_shell, c1+_panel, c1+_panel_lcd3.5, c1+_desktop_lcd3.5, c1+_stacked, c1+_tray, c1+_tray_sides, c1+_tray_vu5, c1+_tray_vu7, c1+_shell_boombox, c1+_panel_boombox, c1+_tray_boombox, c1+_round, c1+_hex, c1+_snap, c1+_fitted @@ -129,25 +129,32 @@ 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-M1 cases** - 12 : m1_panel, m1_tray, m1_tray_drive, m1_tray_sides, m1_tray_vu5, m1_tray_vu7, m1_snap, m1_fitted, m1_fitted_drivebox2.5, m1_fitted_drivebox3.5, m1_fitted_pizzabox, m1_fitted_drivebox3.5v + **Odorid-XU4 cases** - 11 : xu4_shell, xu4_panel, xu4_stacked, xu4_tray, xu4_tray_sides, xu4_tray_vu5, xu4_tray_vu7, xu4_round, xu4_hex, xu4_snap, xu4_fitted **Odorid-XU4Q cases** - 11 : xu4q_shell, xu4q_panel, xu4q_stacked, xu4q_tray, xu4q_tray_sides, xu4q_tray_vu5, xu4q_tray_vu7, xu4q_round, xu4q_hex, xu4q_snap, xu4q_fitted -**Odroid-H2 cases** - 17 : h2_shell, h2_lowboy, h2_lowboy_router, h2_shell_router, h2_shell_routerssd, h2_panel, h2_stacked, h2_tray, h2_tray_sides, h2_tray_vu5, h2_tray_vu7, h2_tray_router, h2_router_station, h2_round, h2_hex, h2_snap, h2_fitted +**Odroid-H2 cases** - 17 : h2_shell, h2_lowboy, h2_lowboy_router, h2_shell_router, h2_shell_router-ssd, h2_panel, h2_stacked, h2_tray, h2_tray_sides, h2_tray_vu5, h2_tray_vu7, h2_tray_router, h2_router_station, h2_round, h2_hex, h2_snap, h2_fitted -**Odroid-H3 cases** - 18 : h3_shell, h3_shell-internalfan, h3_lowboy, h3_lowboy_router, h3_shell_router, h3_shell_routerssd, h3_panel, h3_stacked, h3_tray, h3_tray_sides, h3_tray_vu5, h3_tray_vu7, h3_tray_router, h3_router_station, h3_round, h3_hex, h3_snap, h3_fitted +**Odroid-H3 cases** - 18 : h3_shell, h3_shell-internalfan, h3_lowboy, h3_lowboy_router, h3_shell_router, h3_shell_router-ssd, h3_panel, h3_stacked, h3_tray, h3_tray_sides, h3_tray_vu5, h3_tray_vu7, h3_tray_router, h3_router_station, h3_round, h3_hex, h3_snap, h3_fitted **Odroid-Show2** cases - 1 : show2_shell -##### Pine64 +##### Pine64 - 24 **Rock64** - 9 : rockp64_shell, rock64_panel, rock64_stacked, rock64_tray, rock64_tray_sides, rock64_round, rock64_hex, rock64_snap, rock64_fitted **RockPro64** - 9 : rockpro64_shell, rockpro64_panel, rockpro64_stacked, rockpro64_tray, rockpro64_tray_sides, rockpro64_round, rockpro64_hex, rockpro64_snap, rockpro64_fitted +**Quartz64a** - 2 : quartz64a_shell, quartz64a_panel -##### Raspberry PI +**Quartz64b** - 2 : quartz64b_shell, quartz64b_panel + +**h64b** - 2 : h64b_shell, h64b_panel + +##### Raspberry PI - 72 **RPIzero** - 9 : rpizero_shell, rpizero_panel, rpizero_stacked, rpizero_tray, rpizero_tray_sides, rpizero_round, rpizero_hex, rpizero_snap, rpizero_fitted @@ -166,12 +173,12 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo **RPI4b** - 9 : rpi4b_shell, rpi4b_panel, rpi4b_stacked, rpi4b_tray, rpi4b_tray_sides, rpi4b_round, rpi4b_hex, rpi4b_snap, rpi4b_fitted -##### Nivida +##### Nivida - 1 **Jetson Nano** - 9 : jetsonnano_shell, jetsonnano_panel, jetsonnano_stacked, jetsonnano_tray, jetsonnano_tray_sides, jetsonnano_round, jetsonnano_hex, jetsonnano_snap, jetsonnano_fitted -##### Radxa +##### Radxa - 36 **ROCKPi 4b+** - 9 : rockpi4b+_shell, rockpi4b+_panel, rockpi4b+_stacked, rockpi4b+_tray, rockpi4b+_tray_sides, rockpi4b+_round, rockpi4b+_hex, rockpi4b+_snap, rockpi4b+_fitted @@ -182,7 +189,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo **ROCKPi5b** - 9 : rockpi5b_shell, rockpi5b_panel, rockpi5b_stacked, rockpi5b_tray, rockpi5b_tray_sides, rockpi5b_round, rockpi5b_hex, rockpi5b_snap, rockpi5b_fitted -##### Khadas +##### Khadas - 45 **Vim1** - 9 : vim1_shell, vim1_panel, vim1_stacked, vim1_tray, vim1_tray_sides, vim1_round, vim1_hex, vim1_snap, vim1_fitted @@ -195,7 +202,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo **Vim4** - 9 : vim4_shell, vim4_panel, vim4_stacked, vim4_tray, vim4_tray_sides, vim4_round, vim4_hex, vim4_snap, vim4_fitted -##### Asus +##### Asus - 36 **Tinkerboard** - 9 : tinkerboard_shell, tinkerboard_panel, tinkerboard_stacked, tinkerboard_tray, tinkerboard_tray_sides, tinkerboard_round, tinkerboard_hex, tinkerboard_snap, tinkerboard_fitted @@ -206,7 +213,7 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo **Tinkerboard R2/R2S** - 9 : tinkerboard-r2_shell, tinkerboard-r2_panel, tinkerboard-r2_stacked, tinkerboard-r2_tray, tinkerboard-r2_tray_sides, tinkerboard-r2_round, tinkerboard-r2_hex, tinkerboard-r2_snap, tinkerboard-r2_fitted -##### Orange PI +##### Orange PI - 27 **OPI Zero/ZeroPlus** - 9 : opizero_shell, opizero_panel, opizero_stacked, opizero_tray, opizero_tray_sides, opizero_round, opizero_hex, opizero_snap, opizero_fitted diff --git a/SBC_Case_Builder_Cases.gif b/SBC_Case_Builder_Cases.gif index 5c9ff32..0c41b28 100644 Binary files a/SBC_Case_Builder_Cases.gif and b/SBC_Case_Builder_Cases.gif differ diff --git a/sbc_case_builder.json b/sbc_case_builder.json index 27f0b80..7260156 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -5130,10 +5130,10 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, - "m1_tray_drive": { + "m1_tray_ssd": { "$fn": "90", "accessory_highlight": "false", - "accessory_name": "m1_tray_drive", + "accessory_name": "m1_tray_ssd", "adjust": "0.01", "bottom_ext_standoff": "[5.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", "bottom_front_left": "0", @@ -5472,6 +5472,238 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, + "m1_fitted_drivebox2.5": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "m1_fitted_drivebox2.5", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "9", + "case_design": "fitted", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "16", + "case_offset_x": "105", + "case_offset_y": "0", + "case_style": "none", + "cooling": "none", + "exhaust_vents": "none", + "fillet": "0", + "floorthick": "2.5", + "gap": "2", + "gpio_opening": "none", + "indents": "false", + "individual_part": "bottom", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "10", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "false", + "sbc_highlight": "false", + "sbc_model": "m1", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2.5" + }, + "m1_fitted_drivebox3.5": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "m1_fitted_drivebox3.5", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "9", + "case_design": "fitted", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "26", + "case_offset_x": "145", + "case_offset_y": "60", + "case_style": "none", + "cooling": "none", + "exhaust_vents": "none", + "fillet": "0", + "floorthick": "2.5", + "gap": "2", + "gpio_opening": "none", + "indents": "false", + "individual_part": "bottom", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "10", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "false", + "sbc_highlight": "false", + "sbc_model": "m1", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2.5" + }, + "m1_fitted_pizzabox": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "m1_fitted_pizzabox", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "9", + "case_design": "fitted", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "114", + "case_offset_y": "60", + "case_style": "none", + "cooling": "none", + "exhaust_vents": "none", + "fillet": "0", + "floorthick": "2.5", + "gap": "2", + "gpio_opening": "none", + "indents": "false", + "individual_part": "bottom", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "5", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "false", + "sbc_highlight": "false", + "sbc_model": "m1", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2.5" + }, + "m1_fitted_drivebox3.5v": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "m1_fitted_drivebox3.5v", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "9", + "case_design": "fitted", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "72", + "case_offset_x": "55", + "case_offset_y": "60", + "case_style": "none", + "cooling": "none", + "exhaust_vents": "none", + "fillet": "0", + "floorthick": "2.5", + "gap": "2", + "gpio_opening": "none", + "indents": "false", + "individual_part": "bottom", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "10", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "false", + "sbc_highlight": "false", + "sbc_model": "m1", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2.5" + }, "n1_shell": { "$fn": "90", "accessory_highlight": "false", @@ -10089,6 +10321,63 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, + "show2_shell": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "show2_shell", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 7, 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": "fan", + "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": "show2", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "0", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, "jetsonnano_shell": { "$fn": "90", "accessory_highlight": "false", @@ -11628,6 +11917,122 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, + "quartz64a_shell": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 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": "4", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "fan", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "individual_part": "bottom", + "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": "quartz64a", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "2", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "quartz64a_panel": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 8, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3", + "case_design": "panel", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "4", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "fan", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "individual_part": "bottom", + "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": "quartz64a", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, "quartz64b_shell": { "$fn": "90", "accessory_highlight": "false", @@ -11742,34 +12147,35 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, - "show2_shell": { + "h64b_shell": { "$fn": "90", "accessory_highlight": "false", - "accessory_name": "show2_shell", + "accessory_name": "none", "adjust": "0.01", "bottom_ext_standoff": "[5.75, 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": "[5.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_standoff": "[5.75, 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_bz": "4", "case_offset_tz": "0", "case_offset_x": "0", "case_offset_y": "0", "case_style": "none", "cooling": "fan", - "exhaust_vents": "none", + "exhaust_vents": "vent", "fillet": "0", "floorthick": "2", - "gap": "1.5", + "gap": "1", "gpio_opening": "none", - "indents": "false", + "indents": "true", + "individual_part": "bottom", "lip": "5", "lower_bottom": "0", "move_front": "0", @@ -11783,10 +12189,68 @@ "sata_punchout": "false", "sbc_bottom_standoffs": "true", "sbc_highlight": "false", - "sbc_model": "show2", + "sbc_model": "h64b", "sbc_off": "false", "sbc_top_standoffs": "true", - "sidethick": "0", + "sidethick": "2", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[5.75, 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": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "h64b_panel": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[5.75, 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": "[5.75, 8, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3", + "case_design": "panel", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "4", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "fan", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "individual_part": "bottom", + "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": "h64b", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", "sidewall_support": "true", "tol": "0.25", "top_ext_standoff": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index 1b09f49..9af86ee 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -44,7 +44,7 @@ 20221011 Version 2.0.1 adjusted cases and accessories, updated README.md and SBC_Case_Builder_Cases.gif 20221101 Version 2.0.2 updated sbc model framework, h3/h3+ model and rockpi5b adjustments 20221207 Version 2.0.3 added part view to facilitate individual part prints, updated sbc model framework, - added n2l cases + added n2l and m1 cases see https://github.com/hominoids/SBC_Case_Builder */ @@ -84,21 +84,21 @@ case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted] // base case style case_style = "none"; // ["none","vu5","vu7","sides"] // single board computer model -sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "rockpi5b", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "test"] +sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "rockpi5b", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts"] // sbc location x axis -pcb_loc_x = 0; //[0:.5:200] +pcb_loc_x = 0; //[0:.5:300] // sbc location y axis -pcb_loc_y = 0; //[0:.5:200] +pcb_loc_y = 0; //[0:.5:300] // sbc location z axis -pcb_loc_z = 0; //[0:.25:50] +pcb_loc_z = 0; //[0:.25:100] // additional x axis case size -case_offset_x = 0; //[0:.5:200] +case_offset_x = 0; //[0:.5:300] // additional y axis case size -case_offset_y = 0; //[0:.5:200] +case_offset_y = 0; //[0:.5:300] // additional z axis case top size -case_offset_tz = 0; //[0:.5:50] +case_offset_tz = 0; //[0:.5:100] // additional z axis case bottom size -case_offset_bz = 0; //[0:.5:50] +case_offset_bz = 0; //[0:.5:100] // case wall thickness wallthick = 2; //[1:.5:5] // case floor thickness @@ -165,7 +165,7 @@ cooling = "fan"; // [none,vents,fan,custom] exhaust_vents = "vent"; // [none,vent] // case accessory group to load -accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2l_tray", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_drive", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "h3_shell", "h3_lowboy", "h3_lowboy_router", "h3_tallboy", "h3_tallboy-ssd", "h3_shell_drivebox2.5v", "jetsonnano_shell", "jetsonnano_panel", "jetsonnano_stacked", "jetsonnano_tray", "jetsonnano_tray_sides", "jetsonnano_round", "jetsonnano_hex", "jetsonnano_snap", "jetsonnano_fitted", "rock64_shell", "rock64_panel", "rock64_stacked", "rock64_tray", "rock64_tray_sides", "rock64_round", "rock64_hex", "rock64_snap", "rock64_fitted", "rockpro64_shell", "rockpro64_panel", "rockpro64_stacked", "rockpro64_tray", "rockpro64_tray_sides", "rockpro64_round", "rockpro64_hex", "rockpro64_snap", "rockpro64_fitted", "quartz64b_stacked_poe_hat", "show2_shell", "rpi1a+_shell", "rpi1a+_panel", "rpi1a+_stacked", "rpi1a+_tray", "rpi1a+_tray_sides", "rpi1a+_round", "rpi1a+_hex", "rpi1a+_snap", "rpi1a+_fitted", "rpi1b+_shell", "rpi1b+_panel", "rpi1b+_stacked", "rpi1b+_tray", "rpi1b+_tray_sides", "rpi1b+_round", "rpi1b+_hex", "rpi1b+_snap", "rpi1b+_fitted", "rpi3a+_shell", "rpi3a+_panel", "rpi3a+_stacked", "rpi3a+_tray", "rpi3a+_tray_sides", "rpi3a+_round", "rpi3a+_hex", "rpi3a+_snap", "rpi3a+_fitted", "rpi3b_shell", "rpi3b_panel", "rpi3b_stacked", "rpi3b_tray", "rpi3b_tray_sides", "rpi3b_round", "rpi3b_hex", "rpi3b_snap", "rpi3b_fitted", "rpi3b+_shell", "rpi3b+_panel", "rpi3b+_stacked", "rpi3b+_tray", "rpi3b+_tray_sides", "rpi3b+_round", "rpi3b+_hex", "rpi3b+_snap", "rpi3b+_fitted", "rpi4b_shell", "rpi4b_shell_geeekpi_poe_hat", "rpi4b_panel", "rpi4b_stacked", "rpi4b_tray", "rpi4b_tray_sides", "rpi4b_round", "rpi4b_hex", "rpi4b_snap", "rpi4b_fitted", "rockpi4b+_shell", "rockpi4b+_panel", "rockpi4b+_stacked", "rockpi4b+_tray", "rockpi4b+_tray_sides", "rockpi4b+_round", "rockpi4b+_hex", "rockpi4b+_snap", "rockpi4b+_fitted", "rockpi4c_shell", "rockpi4c_panel", "rockpi4c_stacked", "rockpi4c_tray", "rockpi4c_tray_sides", "rockpi4c_round", "rockpi4c_hex", "rockpi4c_snap", "rockpi4c_fitted", "rockpi4c+_shell", "rockpi4c+_panel", "rockpi4c+_stacked", "rockpi4c+_tray", "rockpi4c+_tray_sides", "rockpi4c+_round", "rockpi4c+_hex", "rockpi4c+_snap", "rockpi4c+_fitted", "rockpi5b", "vim1_shell", "vim1_panel", "vim1_stacked", "vim1_tray", "vim1_tray_sides", "vim1_round", "vim1_hex", "vim1_snap", "vim1_fitted", "vim2_shell", "vim2_panel", "vim2_stacked", "vim2_tray", "vim2_tray_sides", "vim2_round", "vim2_hex", "vim2_snap", "vim2_fitted", "vim3l_shell", "vim3l_panel", "vim3l_stacked", "vim3l_tray", "vim3l_tray_sides", "vim3l_round", "vim3l_hex", "vim3l_snap", "vim3l_fitted", "vim3_shell", "vim3_panel", "vim3_stacked", "vim3_tray", "vim3_tray_sides", "vim3_round", "vim3_hex", "vim3_snap", "vim3_fitted", "vim4_shell", "vim4_panel", "vim4_stacked", "vim4_tray", "vim4_tray_sides", "vim4_round", "vim4_hex", "vim4_snap", "vim4_fitted", "tinkerboard_shell", "tinkerboard_panel", "tinkerboard_stacked", "tinkerboard_tray", "tinkerboard_tray_sides", "tinkerboard_round", "tinkerboard_hex", "tinkerboard_snap", "tinkerboard_fitted", "tinkerboard-s_shell", "tinkerboard-s_panel", "tinkerboard-s_stacked", "tinkerboard-s_tray", "tinkerboard-s_tray_sides", "tinkerboard-s_round", "tinkerboard-s_hex", "tinkerboard-s_snap", "tinkerboard-s_fitted", "tinkerboard-2_shell", "tinkerboard-2_panel", "tinkerboard-2_stacked", "tinkerboard-2_tray", "tinkerboard-2_tray_sides", "tinkerboard-2_round", "tinkerboard-2_hex", "tinkerboard-2_snap", "tinkerboard-2_fitted", "tinkerboard-r2_shell", "tinkerboard-r2_panel", "tinkerboard-r2_stacked", "tinkerboard-r2_tray", "tinkerboard-r2_tray_sides", "tinkerboard-r2_round", "tinkerboard-r2_hex", "tinkerboard-r2_snap", "tinkerboard-r2_fitted", "hk_uart"] +accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2l_tray", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_ssd", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "m1_fitted_drivebox2.5", "m1_fitted_drivebox3.5", "m1_fitted_pizzabox", "m1_fitted_drivebox3.5v", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "h3_shell", "h3_lowboy", "h3_lowboy_router", "h3_tallboy", "h3_tallboy-ssd", "h3_shell_drivebox2.5v", "jetsonnano_shell", "jetsonnano_panel", "jetsonnano_stacked", "jetsonnano_tray", "jetsonnano_tray_sides", "jetsonnano_round", "jetsonnano_hex", "jetsonnano_snap", "jetsonnano_fitted", "rock64_shell", "rock64_panel", "rock64_stacked", "rock64_tray", "rock64_tray_sides", "rock64_round", "rock64_hex", "rock64_snap", "rock64_fitted", "rockpro64_shell", "rockpro64_panel", "rockpro64_stacked", "rockpro64_tray", "rockpro64_tray_sides", "rockpro64_round", "rockpro64_hex", "rockpro64_snap", "rockpro64_fitted", "quartz64b_stacked_poe_hat", "show2_shell", "rpi1a+_shell", "rpi1a+_panel", "rpi1a+_stacked", "rpi1a+_tray", "rpi1a+_tray_sides", "rpi1a+_round", "rpi1a+_hex", "rpi1a+_snap", "rpi1a+_fitted", "rpi1b+_shell", "rpi1b+_panel", "rpi1b+_stacked", "rpi1b+_tray", "rpi1b+_tray_sides", "rpi1b+_round", "rpi1b+_hex", "rpi1b+_snap", "rpi1b+_fitted", "rpi3a+_shell", "rpi3a+_panel", "rpi3a+_stacked", "rpi3a+_tray", "rpi3a+_tray_sides", "rpi3a+_round", "rpi3a+_hex", "rpi3a+_snap", "rpi3a+_fitted", "rpi3b_shell", "rpi3b_panel", "rpi3b_stacked", "rpi3b_tray", "rpi3b_tray_sides", "rpi3b_round", "rpi3b_hex", "rpi3b_snap", "rpi3b_fitted", "rpi3b+_shell", "rpi3b+_panel", "rpi3b+_stacked", "rpi3b+_tray", "rpi3b+_tray_sides", "rpi3b+_round", "rpi3b+_hex", "rpi3b+_snap", "rpi3b+_fitted", "rpi4b_shell", "rpi4b_shell_geeekpi_poe_hat", "rpi4b_panel", "rpi4b_stacked", "rpi4b_tray", "rpi4b_tray_sides", "rpi4b_round", "rpi4b_hex", "rpi4b_snap", "rpi4b_fitted", "rockpi4b+_shell", "rockpi4b+_panel", "rockpi4b+_stacked", "rockpi4b+_tray", "rockpi4b+_tray_sides", "rockpi4b+_round", "rockpi4b+_hex", "rockpi4b+_snap", "rockpi4b+_fitted", "rockpi4c_shell", "rockpi4c_panel", "rockpi4c_stacked", "rockpi4c_tray", "rockpi4c_tray_sides", "rockpi4c_round", "rockpi4c_hex", "rockpi4c_snap", "rockpi4c_fitted", "rockpi4c+_shell", "rockpi4c+_panel", "rockpi4c+_stacked", "rockpi4c+_tray", "rockpi4c+_tray_sides", "rockpi4c+_round", "rockpi4c+_hex", "rockpi4c+_snap", "rockpi4c+_fitted", "rockpi5b", "vim1_shell", "vim1_panel", "vim1_stacked", "vim1_tray", "vim1_tray_sides", "vim1_round", "vim1_hex", "vim1_snap", "vim1_fitted", "vim2_shell", "vim2_panel", "vim2_stacked", "vim2_tray", "vim2_tray_sides", "vim2_round", "vim2_hex", "vim2_snap", "vim2_fitted", "vim3l_shell", "vim3l_panel", "vim3l_stacked", "vim3l_tray", "vim3l_tray_sides", "vim3l_round", "vim3l_hex", "vim3l_snap", "vim3l_fitted", "vim3_shell", "vim3_panel", "vim3_stacked", "vim3_tray", "vim3_tray_sides", "vim3_round", "vim3_hex", "vim3_snap", "vim3_fitted", "vim4_shell", "vim4_panel", "vim4_stacked", "vim4_tray", "vim4_tray_sides", "vim4_round", "vim4_hex", "vim4_snap", "vim4_fitted", "tinkerboard_shell", "tinkerboard_panel", "tinkerboard_stacked", "tinkerboard_tray", "tinkerboard_tray_sides", "tinkerboard_round", "tinkerboard_hex", "tinkerboard_snap", "tinkerboard_fitted", "tinkerboard-s_shell", "tinkerboard-s_panel", "tinkerboard-s_stacked", "tinkerboard-s_tray", "tinkerboard-s_tray_sides", "tinkerboard-s_round", "tinkerboard-s_hex", "tinkerboard-s_snap", "tinkerboard-s_fitted", "tinkerboard-2_shell", "tinkerboard-2_panel", "tinkerboard-2_stacked", "tinkerboard-2_tray", "tinkerboard-2_tray_sides", "tinkerboard-2_round", "tinkerboard-2_hex", "tinkerboard-2_snap", "tinkerboard-2_fitted", "tinkerboard-r2_shell", "tinkerboard-r2_panel", "tinkerboard-r2_stacked", "tinkerboard-r2_tray", "tinkerboard-r2_tray_sides", "tinkerboard-r2_round", "tinkerboard-r2_hex", "tinkerboard-r2_snap", "tinkerboard-r2_fitted", "hk_uart"] a = search([accessory_name],accessory_data); s = search([sbc_model],sbc_data); @@ -193,7 +193,6 @@ case_ffn = 90; // circle segments for fillet of lip = 5; vu_rotation = [15,0,0]; - // platter view if (view == "platter") { if(case_design == "shell") { @@ -298,8 +297,8 @@ if (view == "model") { cube([gap+wallthick+1.01,depth+2,case_z+2]); } if(move_rightside < 0) { - translate([width-gap-wallthick-2.01,-gap-wallthick-1,-lower_bottom]) - cube([gap+wallthick+1,depth+2,case_z+2]); + translate([width-gap-(2*wallthick)-adjust,-gap-wallthick-1,-lower_bottom]) + cube([gap+wallthick,depth+2,case_z+2]); } } } @@ -322,8 +321,8 @@ if (view == "model") { cube([gap+wallthick+1.01,depth+2,case_z+2]); } if(move_rightside < 0) { - translate([width-gap-wallthick-2.01,-gap-wallthick-1,raise_top]) - cube([gap+wallthick+1,depth+2,case_z+2]); + translate([width-gap-(2*wallthick)-adjust,-gap-wallthick-1,raise_top]) + cube([gap+wallthick,depth+2,case_z+2]); } } } diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index 5dea66a..1de0b93 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -14,7 +14,7 @@ along with this program. If not, see . Code released under GPLv3: http://www.gnu.org/licenses/gpl.html - SBC Case Builder configuration file + SBC Case Builder accessory configuration file see https://github.com/hominoids/SBC_Case_Builder */ @@ -400,10 +400,10 @@ accessory_data = [ "add2","hc4_oled_holder",20,82,1.99,"bottom",[0,0,0],["case",false,true,false],0,0,2,0,0,"",0, // model hc4 holder "add2","hd_holder",10,-21,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // add hd holder "sub","hd_holes",10,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes - "sub","round",92,-5,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole - "sub","round",92,69.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole - "sub","round",92,-5,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole - "sub","round",92,69.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole + "sub","round",92,-5,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",92,69.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",92,-5,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",92,69.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole "sub","vent",71.85,88,30,"top",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent "suball","fan",39,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan "sub","vent",-3.5,35,34,"top",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening @@ -457,7 +457,7 @@ accessory_data = [ // Odroid-N2L ["n2l_tray", - "sub","rectangle",65,36,-2.5,"bottom",[0,0,0],["case",true,true,true],5,13,15.5,0,0,"vertical",[1,1,1,1]], // sub hdmi opening + "sub","rectangle",65,36,-2.5,"bottom",[0,0,0],["case",true,true,true],5,13,15.5,0,0,"vertical",[1,1,1,1]], // sub hdmi opening // Odroid-N2+ // internal fan @@ -480,7 +480,7 @@ accessory_data = [ "sub","vent",94.5,32,10,"top",[0,0,90],["case",true,false,false],2,15,4,1,17,"vertical",1, // vent opening "sub","vent",-6.5,32,10,"top",[0,0,90],["case",false,false,false],2,15,4,1,17,"vertical",1], // vent opening - ["m1_tray_drive", + ["m1_tray_ssd", "sub","hd_holes",10,22,33,"top",[0,0,0],["sbc-case_z",true,true,true],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes "model","hd25",10,122,25.5,"top",[0,0,-90],["sbc-case_z",true,true,true],0,0,0,7.5,0,"",0, // model 2.5 hd "sub","vent",22,32,33,"top",[0,0,0],["sbc-case_z",true,true,true],2,15,8,2,12,"horizontal",1, // top vent opening @@ -503,6 +503,74 @@ accessory_data = [ "sub","vent",93,32,10,"right",[0,0,90],["case",true,false,false],2,15,6,1,17,"vertical",1, // vent opening "sub","vent",-7,32,10,"left",[0,0,90],["case",false,false,false],2,15,6,1,17,"vertical",1], // vent opening + ["m1_fitted_drivebox2.5", + "add2","hd_holder",10,20,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,0,"portrait",0, // add hd holder + "sub","hd_holes",10,20,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes + "sub","round",92,34,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",92,110.6,5,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",92,34,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",92,110.6,23,"bottom",[0,90,0],["case",true,true,false],3,0,3,0,0,"",0, // sub hd side screws hole + "suball","fan",39,-.1,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan + "sub","vent",-3.75,25,30,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,25,30,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",-3.75,25,9,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,25,9,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "model","hd25",10,120,2,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd + "model","hd25",10,120,20,"bottom",[0,0,-90],["case",true,true,false],0,0,0,15,0,"",0, // model 2.5 hd + "model","fan_cover",39,-4,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan + "platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan + + ["m1_fitted_drivebox3.5", + "add2","hd_holder",-19.4,-27,3,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // add hd holder + "sub","hd_holes",-19.4,-27,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,3,"portrait",0, // sub hd bottom holes + "sub","round",91.6,1.5,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","round",91.6,43.4,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","round",91.6,103.1,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","vent",-3.75,60,40,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,60,40,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",-3.75,60,20,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,60,20,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "suball","vent",29,126,29,"bottom",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent + "suball","fan",5.6,-1.5,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan + "model","hd35",-19.4,120,3,"bottom",[0,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd + "model","hd35",-19.4,120,35,"bottom",[0,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd + "model","fan_cover",5.6,-4,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan + "platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan + + ["m1_fitted_pizzabox", + "sub","hd_holes",-12,-27,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,3,"portrait",0, // sub hd bottom holes + "sub","round",91.6,1.5,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","round",91.6,43.4,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","round",91.6,103.1,9.35,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","vent",-3.75,60,9,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,60,9,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "suball","vent",-89,126,15,"bottom",[0,0,0],["case",true,true,false],2,13,4,1,4,"vertical",1, // sub vent + "suball","fan",-30,60,48,"top",[0,0,0],["case",true,false,false],80,0,3,2,0,"",0, // sub fan + "model","hd35",-12,120,2.5,"bottom",[0,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd +// "model","fan_cover",5.6,-4,7,"bottom",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan + "platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan + + ["m1_fitted_drivebox3.5v", +// "add2","hd_vertright",45.6,-21,2.49,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // sub hd bottom holes +// "sub","hd_vertright_holes",45.6,-21,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,2.5,"portrait",0, // sub hd bottom holes +// "add2","hd_vertleft",0,-27,2.49,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // add hd holder +// "sub","hd_vertleft_holes",0,-27,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // sub hd bottom holes + "add2","hd_vertleft",80,-27,2.49,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // add hd holder + "sub","hd_vertleft_holes",80,-27,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,3.5,0,"portrait",0, // sub hd bottom holes + "sub","round",91.6,14.5,6,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","round",91.6,58.55,6,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","round",91.6,90.1,6,"bottom",[0,90,0],["case",true,true,false],3,0,4,0,0,"",0, // sub hd side screw hole + "sub","vent",-3.75,60,40,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,60,40,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",-3.75,60,20,"bottom",[0,0,90],["case",false,false,false],2,10,4,1,17,"vertical",1, // vent opening + "sub","vent",92,60,20,"bottom",[0,0,90],["case",true,false,false],2,10,4,1,17,"vertical",1, // vent opening + "suball","vent",29,126,29,"bottom",[0,0,0],["case",false,true,false],2,13,4,1,4,"vertical",1, // sub vent + "suball","fan",5.6,-1.5,50,"bottom",[90,0,0],["case",true,false,false],40,0,3,1,0,"",0, // sub fan +// "model","hd35",-19.4,120,104.1,"bottom",[-90,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd + "model","hd35",80,120,2.5,"bottom",[90,0,-90],["case",true,true,false],0,0,0,0,0,"",0, // model 3.5 hd + "model","fan_cover",5.6,-4,50,"bottom",[90,0,0],["case",true,false,false],40,0,3,2,0,"",0, // model fan + "platter","fan_cover",-50,50,0,"bottom",[0,0,0],["case",false,false,false],40,0,3,2,0,"",0], // model fan + // Odroid-H2 ["h2_shell", diff --git a/sbc_case_builder_library.scad b/sbc_case_builder_library.scad index e688b64..57409bc 100644 --- a/sbc_case_builder_library.scad +++ b/sbc_case_builder_library.scad @@ -47,7 +47,7 @@ 20221011 Version 2.0.1 adjusted cases and accessories, updated README.md and SBC_Case_Builder_Cases.gif 20221101 version 2.0.2 added hdmi_a_vertical mask, increased jack_3.5 mask dia.to 6mm, lowered hdmi_a_vertical mask by 2mm, added mask for microsdcard2 - 20221207 version 2.0.3 added double_stacked_usb3-usb2 + 20221207 version 2.0.3 added double_stacked_usb3-usb2, hd35_vtab(side) and supporting code see https://github.com/hominoids/SBC_Case_Builder @@ -76,6 +76,7 @@ hd25_tab(side) hd25_vtab(side) hd35_tab(side) + hd35_vtab(side) hd_bottom_holes(hd,orientation,position,side,thick) hd25(height) hd35() @@ -827,20 +828,46 @@ module hd_mount(hd,orientation,position,side) { } if(hd == 3.5) { if(orientation == "portrait") { - translate([-.5,28.5,0]) hd35_tab("left"); - translate([-.5,69.75,0]) hd35_tab("left"); - translate([-.5,130.1,0]) hd35_tab("left"); - translate([101.6+.5,28.5,0]) hd35_tab("right"); - translate([101.6+.5,69.75,0]) hd35_tab("right"); - translate([101.6+.5,130.1,0]) hd35_tab("right"); + if(position == "vertical") { + if(side == "left") { + translate([0,41.28,0]) rotate([0,0,0]) hd35_vtab("right"); + translate([0,41.28+44.45,0]) rotate([0,0,0]) hd35_vtab("right"); + translate([0,41.28+76.20,0]) rotate([0,0,0]) hd35_vtab("right"); + } + else { // right + translate([0,41.28,0]) rotate([0,0,0]) hd35_vtab("left"); + translate([0,41.28+44.45,0]) rotate([0,0,0]) hd35_vtab("left"); + translate([0,41.28+76.20,0]) rotate([0,0,0]) hd35_vtab("left"); + } + } + else { + translate([-.5,28.5,0]) hd35_tab("left"); + translate([-.5,69.75,0]) hd35_tab("left"); + translate([-.5,130.1,0]) hd35_tab("left"); + translate([101.6+.5,28.5,0]) hd35_tab("right"); + translate([101.6+.5,69.75,0]) hd35_tab("right"); + translate([101.6+.5,130.1,0]) hd35_tab("right"); + } } if(orientation == "landscape") { - translate([16.9,-.5,0]) rotate([0,0,90]) hd35_tab("left"); - translate([76.6,-.5,0]) rotate([0,0,90]) hd35_tab("left"); - translate([118.5,-.5,0]) rotate([0,0,90]) hd35_tab("left"); - translate([16.9,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right"); - translate([76.6,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right"); - translate([118.5,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right"); + if(position == "vertical") { + if(side == "left") { + translate([9.4,0,0]) rotate([0,0,90]) hd35_vtab("right"); + translate([86,0,0]) rotate([0,0,90]) hd35_vtab("right"); + } + else { // right + translate([9.4,0,0]) rotate([0,0,90]) hd35_vtab("left"); + translate([86,0,0]) rotate([0,0,90]) hd35_vtab("left"); + } + } + else { + translate([16.9,-.5,0]) rotate([0,0,90]) hd35_tab("left"); + translate([76.6,-.5,0]) rotate([0,0,90]) hd35_tab("left"); + translate([118.5,-.5,0]) rotate([0,0,90]) hd35_tab("left"); + translate([16.9,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right"); + translate([76.6,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right"); + translate([118.5,101.6-.5,0]) rotate([0,0,90]) hd35_tab("right"); + } } } } @@ -1036,6 +1063,66 @@ module hd35_tab(side) { } } +module hd35_vtab(side) { + + width = 15; + l_width = 16; + depth = 15; + height = 4; + fillet = 2; + hole = 3.6; + length = 3; + + adjust = .01; + $fn = 90; + if(side == "left") { + difference() { + union() { + translate([0,-depth/2,0]) rotate([0,-90,0]) + slab_r([l_width,depth,height], [fillet,fillet,fillet,fillet]); + translate([-height,-depth/2,0]) cube([height,depth,height]); + translate([adjust,-5.5,depth]) + rotate([90,0,0]) + linear_extrude(height = 2) + polygon(points = [ [-height,height-5], + [-depth+4,-depth], + [-height,-depth]]); + translate([adjust,7.5,depth]) + rotate([90,0,0]) + linear_extrude(height = 2) + polygon(points = [ [-height,height-5], + [-depth+4,-depth], + [-height,-depth]]); + } + translate([3,0,-adjust]) rotate([0,0,0]) cylinder(d=hole, h=3); + translate([-height-adjust,1.5+(width/2)-(length/2)-depth/2,5.57]) rotate([90,90,90]) slot(hole,length,height+(2*adjust)); + } + } + if(side == "right") { + difference() { + union() { + translate([height,-depth/2,0]) rotate([0,-90,0]) + slab_r([l_width,depth,height], [fillet,fillet,fillet,fillet]); + translate([0,-depth/2,0]) cube([height,depth,height]); + translate([adjust,-7.5,depth]) + rotate([90,0,180]) + linear_extrude(height = 2) + polygon(points = [ [-height,height-5], + [-depth+4,-depth], + [-height,-depth]]); + translate([adjust,5.5,depth]) + rotate([90,0,180]) + linear_extrude(height = 2) + polygon(points = [ [-height,height-5], + [-depth+4,-depth], + [-height,-depth]]); + } + translate([-3,0,-adjust]) rotate([0,0,0]) cylinder(d=hole, h=3); + translate([-adjust,1.5+(width/2)-(length/2)-depth/2,5.57]) rotate([90,90,90]) slot(hole,length,height+(2*adjust)); + } + } +} + module hd_bottom_holes(hd,orientation,position,side,thick) { @@ -1066,13 +1153,13 @@ module hd_bottom_holes(hd,orientation,position,side,thick) { if(orientation == "landscape") { if(position == "vertical") { if(side == "left") { - translate([9.4,-3,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([86,-3,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([9.4,-3,0]) cylinder(d=3.6,h=thick+5); + translate([86,-3,0]) cylinder(d=3.6,h=thick+5); } else { echo(side); - translate([9.4,3,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([86,3,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([9.4,3,0]) cylinder(d=3.6,h=thick+5); + translate([86,3,0]) cylinder(d=3.6,h=thick+5); } } else { @@ -1086,13 +1173,28 @@ module hd_bottom_holes(hd,orientation,position,side,thick) { } if(hd == 3.5) { if(orientation == "portrait") { - // portrait 3.5" bottom screw holes - translate([3.18,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([3.18,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([3.18,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([98.43,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([98.43,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2)); - translate([98.43,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2)); + if(position == "vertical") { + if(side == "left") { + translate([-6,28.5,0]) cylinder(d=3.6,h=thick+5); + translate([-6,70.5,0]) cylinder(d=3.6,h=thick+5); + translate([-6,28.5+101.6,0]) cylinder(d=3.6,h=thick+5); + } + else { + // portrait 3.5" bottom screw holes + translate([6,28.5,0]) cylinder(d=3.6,h=thick+5); + translate([6,70.5,0]) cylinder(d=3.6,h=thick+5); + translate([6,28.5+101.6,0]) cylinder(d=3.6,h=thick+5); + } + } + else { + // portrait 3.5" bottom screw holes + translate([3.18,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([3.18,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([3.18,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([98.43,41.28,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([98.43,85.73,0]) cylinder(d=3.6,h=thick+(adjust*2)); + translate([98.43,117.48,0]) cylinder(d=3.6,h=thick+(adjust*2)); + } } if(orientation == "landscape") { // landscape 3.5" bottom screw holes