diff --git a/SBC_Model_Framework b/SBC_Model_Framework index 710fba6..7d62e28 160000 --- a/SBC_Model_Framework +++ b/SBC_Model_Framework @@ -1 +1 @@ -Subproject commit 710fba6d200e4e3cf4f649b66c038a967aa68e24 +Subproject commit 7d62e28b188081a26d5eb003a5e7871b2511261c diff --git a/sbc_case_builder.json b/sbc_case_builder.json index 7260156..2447476 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -9352,6 +9352,63 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, + "h3_ultimate": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "h3_ultimate", + "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.5", + "case_design": "shell", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "3", + "case_offset_tz": "26", + "case_offset_x": "25", + "case_offset_y": "10", + "case_style": "none", + "cooling": "none", + "exhaust_vents": "none", + "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": "h3", + "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" + }, "h3_shell_drivebox2.5v": { "$fn": "90", "accessory_highlight": "false", diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index 9af86ee..7c09320 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -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_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"] +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_ultimate", "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); @@ -1159,7 +1159,6 @@ module case_bottom(case_design) { cube([gap+adjust+2,2,bottom_ext_standoff[1]]); } } - } // subtractive accessories if(accessory_name != "none") { @@ -1180,66 +1179,66 @@ module case_bottom(case_design) { data_3 = accessory_data[a[0]][i+13]; data_4 = accessory_data[a[0]][i+14]; - if ((class == "sub" && face == "bottom") || class == "suball") { - if(accessory_highlight == false) { - parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); - } - else { - #parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + if ((class == "sub" && face == "bottom") || class == "suball") { + if(accessory_highlight == false) { + parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, + size_x,size_y,size_z,data_1,data_2,data_3,data_4); + } + else { + #parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, + size_x,size_y,size_z,data_1,data_2,data_3,data_4); + } } - } - // create openings for additive - if (class == "add2" && face == "bottom" && type == "standoff") { - parametric_move_sub("round",loc_x,loc_y,-.1,face,rotation,parametric, - 6.5,size_y,floorthick+1,data_1,data_2,data_3,data_4); - } - if ((class == "add1" || class == "add2") && type == "uart_holder") { - if(accessory_highlight == false) { - parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + // create openings for additive + if (class == "add2" && face == "bottom" && type == "standoff") { + parametric_move_sub("round",loc_x,loc_y,-.1,face,rotation,parametric, + 6.5,size_y,floorthick+1,data_1,data_2,data_3,data_4); } - else { - #parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + if ((class == "add1" || class == "add2") && type == "uart_holder") { + if(accessory_highlight == false) { + parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, + 0,0,0,data_1,data_2,data_3,data_4); + } + else { + #parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, + 0,0,0,data_1,data_2,data_3,data_4); + } } - } - if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") { - parametric_move_sub("rectangle",loc_x+1,loc_y+1.75,loc_z+25.5,face,rotation,parametric, - 26.5,wallthick+gap+4,15,data_1,data_2,data_3,[.1,.1,.1,.1]); - } - if ((class == "add1" || class == "add2") && face == "bottom" && type == "access_port") { - if(data_3 == "landscape") { - parametric_move_sub("rectangle",loc_x+6,loc_y-.5,loc_z-adjust,face,rotation, - parametric,size_x-17,size_y-1,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); - parametric_move_sub("rectangle",loc_x+size_x-12.5,loc_y+(size_y/2)-6,loc_z-adjust,face,rotation, - parametric,5.5,10.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") { + parametric_move_sub("rectangle",loc_x+1,loc_y+1.75,loc_z+25.5,face,rotation,parametric, + 26.5,wallthick+gap+4,15,data_1,data_2,data_3,[.1,.1,.1,.1]); } - else { - parametric_move_sub("rectangle",loc_x+.5,loc_y+5.75,loc_z-adjust,face,rotation, - parametric,size_x-1,size_y-17,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); - parametric_move_sub("rectangle",loc_x+(size_x/2)-5,loc_y+size_y-12.5,loc_z-adjust,face,rotation, - parametric,10.5,5.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + if ((class == "add1" || class == "add2") && face == "bottom" && type == "access_port") { + if(data_3 == "landscape") { + parametric_move_sub("rectangle",loc_x+6,loc_y-.5,loc_z-adjust,face,rotation, + parametric,size_x-17,size_y-1,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric_move_sub("rectangle",loc_x+size_x-12.5,loc_y+(size_y/2)-6,loc_z-adjust,face,rotation, + parametric,5.5,10.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + } + else { + parametric_move_sub("rectangle",loc_x+.5,loc_y+5.75,loc_z-adjust,face,rotation, + parametric,size_x-1,size_y-17,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric_move_sub("rectangle",loc_x+(size_x/2)-5,loc_y+size_y-12.5,loc_z-adjust,face,rotation, + parametric,10.5,5.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + } } - } - if ((class == "model") && face == "bottom" && type == "h2_netcard") { - parametric_move_sub("rectangle",loc_x+25,loc_y-6,loc_z-14,face,rotation, - parametric,68.5,wallthick+3,14.5,data_1,data_2,data_3,[1,1,1,1]); - } - if ((class == "add1" || class == "add2") && face == "bottom" && type == "button") { - if(data_3 == "recess") { - #parametric_move_sub("sphere",loc_x,loc_y,loc_z,face,rotation, - parametric,size_x-1,size_y,size_z,data_1,data_2,data_3,0); + if ((class == "model") && face == "bottom" && type == "h2_netcard") { + parametric_move_sub("rectangle",loc_x+25,loc_y-6,loc_z-14,face,rotation, + parametric,68.5,wallthick+3,14.5,data_1,data_2,data_3,[1,1,1,1]); } - if(data_3 == "cutout") { - parametric_move_sub("rectangle",loc_x+10,loc_y+4,loc_z-adjust,face,rotation, - parametric,size_x+2,size_y+1,size_z+2*adjust,data_1,data_2,data_3,[.1,.1,.1,.1]); + if ((class == "add1" || class == "add2") && face == "bottom" && type == "button") { + if(data_3 == "recess") { + #parametric_move_sub("sphere",loc_x,loc_y,loc_z,face,rotation, + parametric,size_x-1,size_y,size_z,data_1,data_2,data_3,0); + } + if(data_3 == "cutout") { + parametric_move_sub("rectangle",loc_x+10,loc_y+4,loc_z-adjust,face,rotation, + parametric,size_x+2,size_y+1,size_z+2*adjust,data_1,data_2,data_3,[.1,.1,.1,.1]); + } } - } - } - } + } + } // sbc openings if(sbc_highlight == true) { #open_io(); diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index 1de0b93..86c36fd 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -835,7 +835,7 @@ accessory_data = [ "platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top "platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0], // access port cover - ["h3_tallboy-ssd", + ["h3_tallboy-ssd", "sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening "sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening "sub","vent",-3.5,30,28,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening @@ -858,6 +858,34 @@ accessory_data = [ "sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes "model","hd25",98,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,7,0,"",0], // model 2.5 hd + ["h3_ultimate", + "sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening + "sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening + "sub","vent",-3.5,30,19,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening + "sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening + "sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],2,6,4,1,17,"vertical",1, // vent opening + "sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],2,6,4,1,17,"vertical",1, // vent opening + "sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],90,0,6,2,0,"",0, // fan opening + "sub","rectangle",-5,76,33.5,"top",[0,0,0],["sbc",true,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening + "sub","rectangle",-5,85.5,33.5,"top",[0,0,0],["sbc",true,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening + "sub","rectangle",-5,95,33.5,"top",[0,0,0],["sbc",true,true,true],6,8,15,0,0,"vertical",[.25,.25,.25,.25], // usb opening + "sub","round",-5,87,51.5,"top",[0,90,0],["sbc",true,true,true],3,0,6,0,0,"",0, // port extender hole + "add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port + "add2","button",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button + "add2","button",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,53,0,0,"recess",0, // button + "model","button_top",12.34,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top + "model","button_top",23.77,106.43,53,"top",[0,0,0],["sbc-case_z",true,true,true],10,0,58,0,0,"recess",0, // button top + "model","h3_port_extender",1,0,-0.01,"bottom",[0,0,0],["sbc",true,true,false],0,0,0,0,0,"landscape",0, // access port cover + "model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],100,80,2,0,0,"landscape",0, // access port cover + "platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top + "platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],10,0,58,0,0,"recess",0, // button top + "platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],100,80,2,0,0,"landscape",0, // access port cover + "sub","round",111,34,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole + "sub","round",111,110.6,6.07,"bottom",[0,90,0],["case",true,false,false],3,0,3,0,0,"",0, // sub hd side screw hole + "add2","hd_vertleft",98,10,1.99,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // add hd holder + "sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],0,0,0,2.5,3,"portrait",0, // sub hd bottom holes + "model","hd25",98,110,2,"bottom",[90,0,-90],["case",true,true,false],0,0,0,7,0,"",0], // model 2.5 hd + ["h3_shell_drivebox2.5v", "sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],2,12,4,1,17,"vertical",1, // vent opening "sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],2,12,4,1,17,"vertical",1, // vent opening diff --git a/sbc_case_builder_library.scad b/sbc_case_builder_library.scad index 57409bc..1ab19bf 100644 --- a/sbc_case_builder_library.scad +++ b/sbc_case_builder_library.scad @@ -117,6 +117,7 @@ fan_mask(size, thick, style) mask(loc_x,loc_y,rotation,side,class,type,case_z,wallthick,gap,floorthick,pcb_z) punchout(width,depth,gap,thick,fillet,shape) + h3_port_extender() */ @@ -269,6 +270,9 @@ module add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data if(type == "boom_vring") { translate([loc_x,loc_y,loc_z]) rotate(rotation) boom_vring(data_1); } + if(type == "h3_port_extender") { + translate([loc_x,loc_y,loc_z]) rotate(rotation) h3_port_extender(); + } } @@ -3442,3 +3446,8 @@ module vent(width,length,height,gap,rows,columns,orientation) { } } +// odroid-h3 gpio port extender +module h3_port_extender() { + + translate([7,258.5,103]) rotate([90,0,270]) import("stl/h3_port_extender.stl"); +}