diff --git a/lib/rack.scad b/lib/rack.scad index 60f1bbf..9d20083 100644 --- a/lib/rack.scad +++ b/lib/rack.scad @@ -33,13 +33,14 @@ */ + module rack_end_bracket(side, size, thick) { depth = size == "1u" ? 44.45 : size == "1u+" ? 59.26 : size == "1u++" ? 74.07 : size == "2u" ? 2*44.45 : size == "3u" ? 3*44.45 : 4*44.45; c_fillet = 2; hole = 3.2; rack_hole = 6; - tab_width = 25; + tab_width = 15.875+thick; b_width = thick; b_depth = depth; b_height = 25; @@ -60,7 +61,7 @@ module rack_end_bracket(side, size, thick) { vertical=[0,0,0,0],top=[c_fillet,0,c_fillet,0],bottom=[0,0,0,0], $fn=90); } for (c=[7.5:15:depth]) { - translate([-15,c,-adjust]) slot(rack_hole,3,thick+(adjust*2)); + translate([(3-thick)-9-(15.875-9)/2,c,-adjust]) slot(rack_hole,3,thick+(adjust*2)); } } } @@ -76,7 +77,7 @@ module rack_end_bracket(side, size, thick) { vertical=[0,0,0,0],top=[c_fillet,0,c_fillet,0],bottom=[0,0,0,0], $fn=90); } for (c=[7.5:15:depth]) { - translate([-15,c,-adjust]) slot(rack_hole,3,thick+(adjust*2)); + translate([(3-thick)-9-(15.875-9)/2,c,-adjust]) slot(rack_hole,3,thick+(adjust*2)); } } } diff --git a/mod/case_rack.scad b/mod/case_rack.scad index 3faa572..e13bb69 100644 --- a/mod/case_rack.scad +++ b/mod/case_rack.scad @@ -47,18 +47,21 @@ if(case_design == "rack" && side == "bottom") { // case floor panel clamp holes translate([150-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5]) panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); - translate([300-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5]) - panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); - + if(rack_width == 19) { + translate([300-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5]) + panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); + } // case upper panel clamp holes translate([150-gap-wallthick,-gap-adj,case_z-13]) panel_clamp("rear", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); - translate([300-gap-wallthick,-gap-adj,case_z-13]) - panel_clamp("rear", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); translate([150-gap-wallthick,depth-gap-(2*wallthick)+adj, case_z-13]) panel_clamp("front", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); - translate([300-gap-wallthick,depth-gap-(2*wallthick)+adj, - case_z-13]) panel_clamp("front", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); + if(rack_width == 19) { + translate([300-gap-wallthick,-gap-adj,case_z-13]) + panel_clamp("rear", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); + translate([300-gap-wallthick,depth-gap-(2*wallthick)+adj, + case_z-13]) panel_clamp("front", "m2", "sloped", 6, 18, 5, [true,10,2,"default"]); + } } // rack mounting tabs @@ -77,47 +80,55 @@ if(case_design == "rack" && side == "bottom") { // case upper panel clamps translate([150-gap-wallthick,-gap-adj,case_z-13]) panel_clamp("rear", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); - translate([300-gap-wallthick,-gap-adj,case_z-13]) - panel_clamp("rear", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); translate([150-gap-wallthick,depth-gap-(2*wallthick)+adj, case_z-13]) panel_clamp("front", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); - translate([300-gap-wallthick,depth-gap-(2*wallthick)+adj, - case_z-13]) panel_clamp("front", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); + if(rack_width == 19) { + translate([300-gap-wallthick,depth-gap-(2*wallthick)+adj, + case_z-13]) panel_clamp("front", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); + translate([300-gap-wallthick,-gap-adj,case_z-13]) + panel_clamp("rear", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); + } // case floor panel clamps translate([150-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5]) panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); - translate([300-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5]) - panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); + if(rack_width == 19) { + translate([300-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5]) + panel_clamp("bottom", "m2", "sloped", 6, 18, 5, [false,10,2,"default"]); + } // case lower assembly blocks // rear left - left side translate([150-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]); - // rear right - left side - translate([300-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj]) - cube([rack_asm_size,rack_asm_size,rack_asm_size]); // rear left - right side translate([150-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]); - // rear right - right - translate([300-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj]) - cube([rack_asm_size,rack_asm_size,rack_asm_size]); + if(rack_width == 19) { + // rear right - right + translate([300-gap-wallthick+rack_asm_gap,-gap-adj,floorthick-adj]) + cube([rack_asm_size,rack_asm_size,rack_asm_size]); + // rear right - left side + translate([300-gap-wallthick-rack_asm_size,-gap-adj,floorthick-adj]) + cube([rack_asm_size,rack_asm_size,rack_asm_size]); + } // front left - left translate([150-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj, floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]); - // front right - left - translate([300-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj, - floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]); // front left - right translate([150-gap-wallthick+rack_asm_gap, depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]); - // front right - right - translate([300-gap-wallthick+rack_asm_gap, - depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj]) - cube([rack_asm_size,rack_asm_size,rack_asm_size]); + if(rack_width == 19) { + // front right - right + translate([300-gap-wallthick+rack_asm_gap, + depth-gap-(2*wallthick)-rack_asm_size+adj,floorthick-adj]) + cube([rack_asm_size,rack_asm_size,rack_asm_size]); + // front right - left + translate([300-gap-wallthick-rack_asm_size,depth-gap-(2*wallthick)-rack_asm_size+adj, + floorthick-adj]) cube([rack_asm_size,rack_asm_size,rack_asm_size]); + } // additive accessories if(accessory_name != "none") { diff --git a/sbc_case_builder.json b/sbc_case_builder.json index e225ba6..06787f0 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -10872,7 +10872,268 @@ "view": "model", "wallthick": "2" }, - "c4_rack_1u": { + "c4_rack10-1u": { + "$fn": "90", + "Rack_Bay1": "c4", + "Rack_Bay2": "c4", + "Rack_Bay3": "c4", + "Rack_Bay4": "empty", + "Rack_Bay5": "empty", + "Rack_Bay6": "empty", + "access_panel_location": "[10, 15]", + "access_panel_orientation": "landscape", + "access_panel_rotation": "0", + "access_panel_size": "[70, 30]", + "accessory_highlight": "false", + "accessory_name": "none", + "adj": "0.01", + "bend_allowance": "1", + "bottom_access_panel_enable": "false", + "bottom_clearence": "3.5", + "bottom_cover_pattern": "solid", + "bottom_front_left_adjust": "0", + "bottom_front_left_enable": "true", + "bottom_front_left_support": "front", + "bottom_front_right_adjust": "0", + "bottom_front_right_enable": "true", + "bottom_front_right_support": "front", + "bottom_rear_left_adjust": "0", + "bottom_rear_left_enable": "true", + "bottom_rear_left_support": "rear", + "bottom_rear_right_adjust": "0", + "bottom_rear_right_enable": "true", + "bottom_rear_right_support": "rear", + "bottom_sidewall_support": "false", + "bottom_standoff_diameter": "5.75", + "bottom_standoff_hole_size": "3.4", + "bottom_standoff_insert": "false", + "bottom_standoff_insert_dia": "4.2", + "bottom_standoff_insert_height": "5.1", + "bottom_standoff_pillar": "hex", + "bottom_standoff_reverse": "false", + "bottom_standoff_size": "m3", + "bottom_standoff_support_height": "4", + "bottom_standoff_support_size": "10", + "bottom_standoff_type": "countersunk", + "case_design": "rack", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "50", + "cooling": "default", + "corner_fillet": "3", + "edge_fillet": "0", + "ext_bottom_front_left_adjust": "0", + "ext_bottom_front_left_enable": "true", + "ext_bottom_front_left_support": "front", + "ext_bottom_front_right_adjust": "0", + "ext_bottom_front_right_enable": "true", + "ext_bottom_front_right_support": "front", + "ext_bottom_rear_left_adjust": "0", + "ext_bottom_rear_left_enable": "true", + "ext_bottom_rear_left_support": "rear", + "ext_bottom_rear_right_adjust": "0", + "ext_bottom_rear_right_enable": "true", + "ext_bottom_rear_right_support": "rear", + "ext_bottom_sidewall_support": "true", + "ext_bottom_standoff_diameter": "5.75", + "ext_bottom_standoff_hole_size": "3.4", + "ext_bottom_standoff_insert": "false", + "ext_bottom_standoff_insert_dia": "4.2", + "ext_bottom_standoff_insert_height": "5.1", + "ext_bottom_standoff_pillar": "hex", + "ext_bottom_standoff_reverse": "false", + "ext_bottom_standoff_size": "m3", + "ext_bottom_standoff_support_height": "4", + "ext_bottom_standoff_support_size": "10", + "ext_bottom_standoff_type": "countersunk", + "ext_bottom_standoffs": "false", + "ext_top_front_left_adjust": "0", + "ext_top_front_left_enable": "true", + "ext_top_front_left_support": "front", + "ext_top_front_right_adjust": "0", + "ext_top_front_right_enable": "true", + "ext_top_front_right_support": "front", + "ext_top_rear_left_adjust": "0", + "ext_top_rear_left_enable": "true", + "ext_top_rear_left_support": "rear", + "ext_top_rear_right_adjust": "0", + "ext_top_rear_right_enable": "true", + "ext_top_rear_right_support": "rear", + "ext_top_sidewall_support": "true", + "ext_top_standoff_diameter": "5.75", + "ext_top_standoff_hole_size": "2.75", + "ext_top_standoff_insert": "false", + "ext_top_standoff_insert_dia": "4.2", + "ext_top_standoff_insert_height": "5.1", + "ext_top_standoff_pillar": "hex", + "ext_top_standoff_reverse": "true", + "ext_top_standoff_size": "m3", + "ext_top_standoff_support_height": "4", + "ext_top_standoff_support_size": "10", + "ext_top_standoff_type": "blind", + "ext_top_standoffs": "false", + "fan_size": "0", + "flat_blank_section": "false", + "floorthick": "3", + "front_cover_pattern": "solid", + "gap": "1", + "gpio_opening": "none", + "hd_bays": "2", + "hd_center": "false", + "hd_reverse": "false", + "hd_space": "10", + "hd_y_position": "25", + "hd_z_position": "40", + "indents": "false", + "individual_part": "bottom", + "lower_bottom": "0", + "material_thickness": "0.5", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "multipcb_bottom_front_left_adjust": "0", + "multipcb_bottom_front_left_enable": "true", + "multipcb_bottom_front_left_support": "front", + "multipcb_bottom_front_right_adjust": "0", + "multipcb_bottom_front_right_enable": "true", + "multipcb_bottom_front_right_support": "front", + "multipcb_bottom_rear_left_adjust": "0", + "multipcb_bottom_rear_left_enable": "true", + "multipcb_bottom_rear_left_support": "rear", + "multipcb_bottom_rear_right_adjust": "0", + "multipcb_bottom_rear_right_enable": "true", + "multipcb_bottom_rear_right_support": "rear", + "multipcb_bottom_sidewall_support": "false", + "multipcb_bottom_standoff_diameter": "5.75", + "multipcb_bottom_standoff_hole_size": "3.4", + "multipcb_bottom_standoff_insert": "false", + "multipcb_bottom_standoff_insert_dia": "4.2", + "multipcb_bottom_standoff_insert_height": "5.1", + "multipcb_bottom_standoff_pillar": "hex", + "multipcb_bottom_standoff_reverse": "false", + "multipcb_bottom_standoff_size": "m2.5", + "multipcb_bottom_standoff_support_height": "4", + "multipcb_bottom_standoff_support_size": "7", + "multipcb_bottom_standoff_type": "countersunk", + "multipcb_bottom_standoffs": "false", + "multipcb_top_front_left_adjust": "0", + "multipcb_top_front_left_enable": "true", + "multipcb_top_front_left_support": "front", + "multipcb_top_front_right_adjust": "0", + "multipcb_top_front_right_enable": "true", + "multipcb_top_front_right_support": "front", + "multipcb_top_rear_left_adjust": "0", + "multipcb_top_rear_left_enable": "true", + "multipcb_top_rear_left_support": "rear", + "multipcb_top_rear_right_adjust": "0", + "multipcb_top_rear_right_enable": "true", + "multipcb_top_rear_right_support": "rear", + "multipcb_top_sidewall_support": "false", + "multipcb_top_standoff_diameter": "5.75", + "multipcb_top_standoff_hole_size": "2.75", + "multipcb_top_standoff_insert": "false", + "multipcb_top_standoff_insert_dia": "4.2", + "multipcb_top_standoff_insert_height": "5.1", + "multipcb_top_standoff_pillar": "hex", + "multipcb_top_standoff_reverse": "true", + "multipcb_top_standoff_size": "m2.5", + "multipcb_top_standoff_support_height": "4", + "multipcb_top_standoff_support_size": "7", + "multipcb_top_standoff_type": "blind", + "multipcb_top_standoffs": "false", + "nas_sbc_location": "top", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "rack_bay1_face": "vent", + "rack_bay1_rear_conduit": "true", + "rack_bay1_rear_fan": "true", + "rack_bay1_rotation": "270", + "rack_bay1_wall": "false", + "rack_bay1_xyz_loc": "[11, 0, 0]", + "rack_bay2_face": "vent", + "rack_bay2_rear_conduit": "true", + "rack_bay2_rear_fan": "true", + "rack_bay2_rotation": "270", + "rack_bay2_wall": "false", + "rack_bay2_xyz_loc": "[84, 0, 0]", + "rack_bay3_face": "vent", + "rack_bay3_rear_conduit": "true", + "rack_bay3_rear_fan": "true", + "rack_bay3_rotation": "270", + "rack_bay3_wall": "false", + "rack_bay3_xyz_loc": "[157, 0, 0]", + "rack_bay4_face": "vent", + "rack_bay4_rear_conduit": "false", + "rack_bay4_rear_fan": "false", + "rack_bay4_rotation": "270", + "rack_bay4_wall": "false", + "rack_bay4_xyz_loc": "[237.5, 0, 0]", + "rack_bay5_face": "vent", + "rack_bay5_rear_conduit": "false", + "rack_bay5_rear_fan": "false", + "rack_bay5_rotation": "270", + "rack_bay5_wall": "false", + "rack_bay5_xyz_loc": "[313, 0, 0]", + "rack_bay6_face": "vent", + "rack_bay6_rear_conduit": "false", + "rack_bay6_rear_fan": "false", + "rack_bay6_rotation": "270", + "rack_bay6_xyz_loc": "[383, 0, 0]", + "rack_size": "1u", + "rack_width": "10", + "raise_top": "0", + "rear_cooling": "fan_1", + "rear_dualfan_spacing": "6", + "rear_fan": "1", + "rear_fan_center": "false", + "rear_fan_position": "0", + "rear_fan_size": "40", + "rear_io_shield": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_information": "false", + "sbc_model": "c4", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "section_part": "false", + "sidethick": "3", + "standard_motherboard_thickness": "0", + "text_color": "Green", + "text_font": "Nimbus Mono PS", + "tol": "0.25", + "top_cover_pattern": "solid", + "top_front_left_adjust": "0", + "top_front_left_enable": "true", + "top_front_left_support": "front", + "top_front_right_adjust": "0", + "top_front_right_enable": "true", + "top_front_right_support": "front", + "top_rear_left_adjust": "0", + "top_rear_left_enable": "true", + "top_rear_left_support": "rear", + "top_rear_right_adjust": "0", + "top_rear_right_enable": "true", + "top_rear_right_support": "rear", + "top_sidewall_support": "false", + "top_standoff_diameter": "5.75", + "top_standoff_hole_size": "2.75", + "top_standoff_insert": "false", + "top_standoff_insert_dia": "4.2", + "top_standoff_insert_height": "5.1", + "top_standoff_pillar": "hex", + "top_standoff_reverse": "true", + "top_standoff_size": "m3", + "top_standoff_support_height": "4", + "top_standoff_support_size": "10", + "top_standoff_type": "blind", + "uart_opening": "none", + "view": "model", + "wallthick": "3" + }, + "c4_rack19-1u": { "$fn": "90", "Rack_Bay1": "c4", "Rack_Bay2": "c4", diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index c5a1a62..2b67a6f 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -439,7 +439,7 @@ pcb_color = sbc_data[s[0]][11][1]; pcb_radius = sbc_data[s[0]][11][0]; pcb_z = sbc_model == "ssi-eeb" || sbc_model == "ssi-ceb" || sbc_model == "atx" || sbc_model == "micro-atx" || sbc_model == "dtx" || sbc_model == "flex-atx" || sbc_model == "mini-dtx" || sbc_model == "mini-itx" || sbc_model == "mini-itx_thin" || sbc_model == "mini-stx" || sbc_model == "mini-stx_thin" || sbc_model == "nano-itx" || sbc_model == "nuc" || sbc_model == "pico-itx" ? pcb_z_orig + standard_motherboard_thickness : pcb_z_orig; -width = case_design == "panel_nas" && pcb_width <= 100 ? pcb_width+2*(sidethick+gap)+case_offset_x+(101.6-pcb_width) : case_design == "panel_nas" && pcb_width > 100 ? pcb_width+2*(sidethick+gap)+case_offset_x : case_design == "rack" ? 450 : pcb_width+(2*(wallthick+gap))+case_offset_x; +width = case_design == "panel_nas" && pcb_width <= 100 ? pcb_width+2*(sidethick+gap)+case_offset_x+(101.6-pcb_width) : case_design == "panel_nas" && pcb_width > 100 ? pcb_width+2*(sidethick+gap)+case_offset_x : case_design == "rack" && rack_width == 19 ? 450 : case_design == "rack" && rack_width == 10 ? 221.5 : pcb_width+(2*(wallthick+gap))+case_offset_x; depth = case_design == "panel_nas" ? pcb_depth+2*(wallthick+gap)+case_offset_y + 147-pcb_depth+hd_y_position : pcb_depth+2*(wallthick+gap)+case_offset_y; top_height = pcb_tmaxz+floorthick+case_offset_tz+pcb_loc_z; bottom_height = (case_design == "tray" || case_design == "tray_vu5" || case_design == "tray_vu7" || case_design == "tray_sides") ? pcb_z+pcb_bmaxz+floorthick+case_offset_bz+4 : pcb_z+pcb_bmaxz+floorthick+case_offset_bz;