Update fan logic to handle larger fan sizes better. Improved positioning and placement of fan parts.

This commit is contained in:
David Long
2022-09-15 16:54:37 -04:00
parent ac3d1b7993
commit 861c2231fc
5 changed files with 157 additions and 109 deletions

View File

@@ -12939,63 +12939,6 @@
"vu_rotation": "[15, 0, 0]", "vu_rotation": "[15, 0, 0]",
"wallthick": "2" "wallthick": "2"
}, },
"rpi4b_shell_geeekpi_poe_hat": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "rpi4b_shell_geeekpi_poe_hat",
"adjust": "0.01",
"bottom_ext_standoff": "[6.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": "[6.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": "15",
"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",
"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": "rpi4b",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "2",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "-11",
"top_front_right": "-11",
"top_rear_left": "-11",
"top_rear_right": "0",
"top_standoff": "[6.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"rpi4b_panel": { "rpi4b_panel": {
"$fn": "90", "$fn": "90",
"accessory_highlight": "false", "accessory_highlight": "false",
@@ -20804,6 +20747,120 @@
"view": "model", "view": "model",
"vu_rotation": "[15, 0, 0]", "vu_rotation": "[15, 0, 0]",
"wallthick": "2" "wallthick": "2"
},
"rpi4b_shell_geeekpi_poe_hat": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "rpi4b_shell_geeekpi_poe_hat",
"adjust": "0.01",
"bottom_ext_standoff": "[6.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": "[6.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": "15",
"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",
"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": "rpi4b",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "2",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "-11",
"top_front_right": "-11",
"top_rear_left": "-11",
"top_rear_right": "0",
"top_standoff": "[6.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
},
"rpi4b_stacked_geeekpi_poe_hat": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "rpi4b_shell_geeekpi_poe_hat",
"adjust": "0.01",
"bottom_ext_standoff": "[6.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": "[6.75, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"c_fillet": "3",
"case_design": "stacked",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "0",
"case_offset_tz": "15",
"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",
"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": "rpi4b",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "2",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "-11",
"top_front_right": "-11",
"top_rear_left": "-11",
"top_rear_right": "0",
"top_standoff": "[6.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2"
} }
}, },
"fileFormatVersion": "1" "fileFormatVersion": "1"

View File

@@ -77,7 +77,7 @@ case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted]
// base case style // base case style
case_style = "none"; // ["none","vu5","vu7","sides"] case_style = "none"; // ["none","vu5","vu7","sides"]
// single board computer model // single board computer model
sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "m1", "m1_noheatsink", "h2", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "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", "m1", "m1_noheatsink", "h2", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "atomicpi", "jetsonnano", "rockpi4b+", "rockpi4c", "rockpi4c+", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "test"]
// sbc location x axis // sbc location x axis
pcb_loc_x = 0; //[0:.5:200] pcb_loc_x = 0; //[0:.5:200]
// sbc location y axis // sbc location y axis
@@ -158,7 +158,7 @@ cooling = "fan"; // [none,vents,fan,custom]
exhaust_vents = "vent"; // [none,vent] exhaust_vents = "vent"; // [none,vent]
// case accessory group to load // case accessory group to load
accessory_name = "none"; // ["none", "c1+_shell_boombox", "c1+_panel_boombox", "c1+_panel_lcd3.5", "c1+_desktop_lcd3.5", "c1+_deskboom_lcd3.5", "c1+_tray_boombox", "c1+_round", "c1+_hex", "c2_shell_boombox", "c2_panel_boombox", "c2_panel_lcd3.5", "c2_desktop_lcd3.5", "c2_deskboom_lcd3.5", "c2_tray_boombox", "c2_round", "c2_hex", "c4_shell_boombox", "c4_panel_lcd3.5", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_tray_boombox", "c4_round", "c4_hex", "hc4_tray_drivebox2.5", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "n1_round", "n1_hex", "n2+_tray_vu7_fan", "m1_panel", "m1_tray", "m1_tray_drive", "m1_tray_sides", "m1_tray_vu5", "m1_tray_vu7", "h2_shell", "h2_shell_router", "h2_shell_router-ssd", "h2_lowboy", "h2_lowboy_router", "h2_tray", "h2_tray_sides", "h2_tray_router", "h2_router_station", "h2_round", "h2_hex", "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", "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_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", "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", "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", "jetsonnano_shell", "jetsonnano_panel", "jetsonnano_stacked", "jetsonnano_tray", "jetsonnano_tray_sides", "jetsonnano_round", "jetsonnano_hex", "jetsonnano_snap", "jetsonnano_fitted", "rock64_shell", "rock64_panel", "rock64_stacked", "rock64_tray", "rock64_tray_sides", "rock64_round", "rock64_hex", "rock64_snap", "rock64_fitted", "rockpro64_shell", "rockpro64_panel", "rockpro64_stacked", "rockpro64_tray", "rockpro64_tray_sides", "rockpro64_round", "rockpro64_hex", "rockpro64_snap", "rockpro64_fitted", "quartz64b_stacked_poe_hat", "show2_shell", "rpi1a+_shell", "rpi1a+_panel", "rpi1a+_stacked", "rpi1a+_tray", "rpi1a+_tray_sides", "rpi1a+_round", "rpi1a+_hex", "rpi1a+_snap", "rpi1a+_fitted", "rpi1b+_shell", "rpi1b+_panel", "rpi1b+_stacked", "rpi1b+_tray", "rpi1b+_tray_sides", "rpi1b+_round", "rpi1b+_hex", "rpi1b+_snap", "rpi1b+_fitted", "rpi3a+_shell", "rpi3a+_panel", "rpi3a+_stacked", "rpi3a+_tray", "rpi3a+_tray_sides", "rpi3a+_round", "rpi3a+_hex", "rpi3a+_snap", "rpi3a+_fitted", "rpi3b_shell", "rpi3b_panel", "rpi3b_stacked", "rpi3b_tray", "rpi3b_tray_sides", "rpi3b_round", "rpi3b_hex", "rpi3b_snap", "rpi3b_fitted", "rpi3b+_shell", "rpi3b+_panel", "rpi3b+_stacked", "rpi3b+_tray", "rpi3b+_tray_sides", "rpi3b+_round", "rpi3b+_hex", "rpi3b+_snap", "rpi3b+_fitted", "rpi4b_shell", "rpi4b_shell_geeekpi_poe_hat", "rpi4b_panel", "rpi4b_stacked", "rpi4b_stacked_geeekpi_poe_hat", "rpi4b_tray", "rpi4b_tray_sides", "rpi4b_round", "rpi4b_hex", "rpi4b_snap", "rpi4b_fitted", "rockpi4b+_shell", "rockpi4b+_panel", "rockpi4b+_stacked", "rockpi4b+_tray", "rockpi4b+_tray_sides", "rockpi4b+_round", "rockpi4b+_hex", "rockpi4b+_snap", "rockpi4b+_fitted", "rockpi4c_shell", "rockpi4c_panel", "rockpi4c_stacked", "rockpi4c_tray", "rockpi4c_tray_sides", "rockpi4c_round", "rockpi4c_hex", "rockpi4c_snap", "rockpi4c_fitted", "rockpi4c+_shell", "rockpi4c+_panel", "rockpi4c+_stacked", "rockpi4c+_tray", "rockpi4c+_tray_sides", "rockpi4c+_round", "rockpi4c+_hex", "rockpi4c+_snap", "rockpi4c+_fitted", "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); a = search([accessory_name],accessory_data);
s = search([sbc_model],sbc_data); s = search([sbc_model],sbc_data);

View File

@@ -818,6 +818,9 @@ accessory_data = [
"sub","fan",43,28,28,"top",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0, // sub fan opening "sub","fan",43,28,28,"top",[0,0,0],["sbc",true,true,true],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,28,"top",[0,0,0],["sbc",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening "sub","rectangle",43,0,28,"top",[0,0,0],["sbc",true,true,true],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["quartz64b_stacked_poe_hat",
"sub","fan",20,0,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["show2_shell", ["show2_shell",
"model","hk_wb2",6.25,24.675,16,"top",[0,0,180],["sbc",true,true,true],0,0,0,0,0,"",0, // hk weatherboard2 "model","hk_wb2",6.25,24.675,16,"top",[0,0,180],["sbc",true,true,true],0,0,0,0,0,"",0, // hk weatherboard2
"suball","round",48.75,0,6,"top",[90,0,0],["sbc",true,true,true],4,0,4,0,0,"",0, // sub button access hole "suball","round",48.75,0,6,"top",[90,0,0],["sbc",true,true,true],4,0,4,0,0,"",0, // sub button access hole
@@ -979,13 +982,16 @@ accessory_data = [
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_shell_geeekpi_poe_hat", ["rpi4b_shell_geeekpi_poe_hat",
"sub","fan",12,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening "sub","fan",12,10,24.5,"top",[0,0,0],["case",true,true,true],30,0,6,2,0,"",0], // sub fan opening
["rpi4b_panel", ["rpi4b_panel",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_stacked", ["rpi4b_stacked",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening
["rpi4b_stacked_geeekpi_poe_hat",
"sub","fan",12,10,24.5,"top",[0,0,0],["case",true,true,true],30,0,6,2,0,"",0], // sub fan opening
["rpi4b_tray", ["rpi4b_tray",
"sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening "sub","fan",10,10,24.5,"top",[0,0,0],["case",true,true,true],40,0,6,2,0,"",0], // sub fan opening

View File

@@ -2421,61 +2421,40 @@ module fan_mask(size, thick, style) {
size == 70 ? 61.9 : size == 70 ? 61.9 :
size == 80 ? 71.5 : size == 80 ? 71.5 :
size * 0.8; // Use 80% as default size * 0.8; // Use 80% as default
bar_width = size < 40 ? 2 : 3;
ring_width = size <= 40 ? 3 : 8;
screw_offset = (size - inner) / 2; rings = size <= 40 ? 4 : 6;
translate_xy = size * 0.5; bar_size = size <= 40 ? 2 : 3;
rings = 5;
base_ring_size = (size * 0.9) / rings;
ring_height = thick + 2;
ring_diff_height = ring_height + 2;
translate([0, 0, -1]) difference() { screw_offset = inner / 2;
center_point = size * 0.5;
base_ring_size = size * 0.9;
rings_spacing = size / rings;
translate([size/2, size/2, -1])
union() {
translate([screw_offset, screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
translate([-screw_offset, screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
translate([screw_offset, -screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
translate([-screw_offset, -screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true);
difference() {
union() { union() {
// screw holes for(i=[inner:-rings_spacing:0]) {
translate([screw_offset, screw_offset, 0]) cylinder(d=3, h=thick+2);
translate([size-screw_offset, screw_offset, 0]) cylinder(d=3, h=thick+2);
translate([screw_offset, size-screw_offset, 0]) cylinder(d=3, h=thick+2);
translate([size-screw_offset, size-screw_offset, 0]) cylinder(d=3, h=thick+2);
// fan grates;
for(i=[0:rings]) {
difference() {
translate([translate_xy, translate_xy, 0]) cylinder(d=base_ring_size * i, h=ring_height);
translate([translate_xy, translate_xy, -1]) cylinder(d=base_ring_size * i - ring_width, h=ring_diff_height);
}
}
difference() { difference() {
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-10); echo("Ring", base_ring_size - i);
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-14); echo("Ring Cut", base_ring_size - i - (rings_spacing/2));
cylinder(d=base_ring_size - i, h=thick+2);
translate([0, 0, -1]) cylinder(d=base_ring_size - i - (rings_spacing/2), h=thick+4);
} }
difference() {
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-18);
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-22);
} }
difference() {
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-26);
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-30);
}
difference() {
translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-34);
translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-38);
}
// translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-34);
// mount holes
translate ([size-4,size-4,-1]) cylinder(h=thick+2, d=3);
translate ([size-4,4,-1]) cylinder(h=thick+2, d=3);
translate ([4,size-4,-1]) cylinder(h=thick+2, d=3);
translate ([4,4,-1]) cylinder(h=thick+2, d=3);
} }
// cross bars translate([0, 0, -1]) union() {
// NOTE: The math could be better here to figure out the bar's offset, but it works cylinder(d=bar_size*2+0.1, thick+6); // Add a circle to prevent any tiny holes around cross bar
// okay until you get up to a bar width of 6mm. rotate([0, 0, 45]) cube([size, bar_size, 12], center=true);
bar_offset = inner / 7; rotate([0, 0, 45]) cube([bar_size, size, 12], center=true);
translate([sqrt((bar_width*bar_width)/2) + bar_offset, bar_offset, -1]) rotate([0, 0, 45]) cube([size, bar_width, 12]); }
translate([bar_offset, -sqrt((bar_width*bar_width)/2)+size - bar_offset, -1]) rotate([0, 0, -45]) cube([size, bar_width, 12]); }
} }
} }
} }

View File

@@ -1,9 +1,11 @@
use <../sbc_case_builder_library.scad>; use <../sbc_case_builder_library.scad>;
// 30mm Mask Solid // 30mm Mask Solid
echo("30mm Mask Solid");
fan_mask(30, 2, 2); fan_mask(30, 2, 2);
// 30mm Mask Punchout // 30mm Mask Punchout
echo("30mm Mask Punchout");
translate([0, 40, 0]) translate([0, 40, 0])
difference() { difference() {
cube([30, 30, 2]); cube([30, 30, 2]);
@@ -11,10 +13,12 @@ translate([0, 40, 0])
} }
// 40mm Mask Solid // 40mm Mask Solid
echo("40mm Mask Solid");
translate([40, 0, 0]) translate([40, 0, 0])
fan_mask(40, 2, 2); fan_mask(40, 2, 2);
// // 40mm Mask Punchout // 40mm Mask Punchout
echo("40mm Mask Punchout");
translate([40, 50, 0]) translate([40, 50, 0])
difference() { difference() {
cube([40, 40, 2]); cube([40, 40, 2]);
@@ -22,10 +26,12 @@ translate([40, 50, 0])
} }
// 80mm Mask Solid // 80mm Mask Solid
echo("80mm Mask Solid");
translate([90, 0, 0]) translate([90, 0, 0])
fan_mask(80, 2, 2); fan_mask(80, 2, 2);
// 80mm Mask Punchout // 80mm Mask Punchout
echo("80mm Mask Punchout");
translate([90, 90, 0]) translate([90, 90, 0])
difference() { difference() {
cube([80, 80, 2]); cube([80, 80, 2]);