enclosure.scad (3934B)
1 // 19-inch rack chassis details 2 // =========================================================================== 3 // faceplate width: 482.6mm +/- 0.4mm 4 // chassis width: 430mm +/- 1mm 5 // 6 // heights: +/- 0.4mm 7 // units | height (mm) | h1 (mm) | h2 (mm) | h3 (mm) 8 // ------+-------------+---------+---------+-------- 9 // 1U | 44.45 | 43.65 | - | 21.83 10 // "" | "" | "" | 31.75 | 5.95 11 // 2U | 88.90 | 88.10 | 44.45 | 21.83 12 // "" | "" | "" | 76.20 | 5.95 13 // 3U | 133.35 | 132.55 | 57.15 | 37.70 14 // 4U | 177.80 | 177.00 | 101.60 | "" 15 // 5U | 222.25 | 221.45 | 146.06 | "" 16 // 6U | 266.70 | 265.90 | 190.50 | "" 17 // ------+-------------+---------+---------+------- 18 // - height : total height in mm of given rack units (including padding) 19 // - h1 : total height of front panel (excluding padding) 20 // - h2 : distance between mounting hole centres 21 // - h3 : distance between lower mounting hole centre and bottom of front panel 22 // 23 // depths: 800/1000/1200 mm 24 // 25 // faceplate mounting hole styles: 26 // castellated: 27 // width: 14.7mm +/- 1.2mm 28 // height: 6.8mm +/- 0.5mm 29 // regular: 30 // total width: 13.5mm +/- 0.4mm 31 // oval width: 10.3mm +/- 0.4mm 32 // height: 6.8mm +/- 0.5mm 33 // 34 // overall chassis: 4U, faceplate, body, spacer, lid 35 // faceplate: 36 // - mesh front, 85% porosity 37 // - dust filter 38 // - rack handles 39 // - castellated faceplate 4U mounting holes 40 // rearplate: 41 // - two-chamber design 42 // chamber separator wall: 43 // - w/d (mm): 483/800 44 // body (bottom + sides + rear): 45 // - w/h/d (mm): 483/178/800 46 // - external rack rails 47 // - 1x3 + 2x2 140mm fans, w/h/d (mm): 141/141/30 48 // - 6x12 3.5" disk caddy slots, w/h/d (mm): 112/27/157 49 // disk retainer wall: 50 // - w/d (mm): 483/800 51 // lid: 52 // - tool-free (ptfe rollers and groove) 53 // 54 // fastners: 55 // - m5 flush stud 56 // - m5 flush nut 57 58 $fn = 64; 59 60 include <constants.scad> 61 62 use <fasteners.scad> 63 use <faceplate.scad> 64 use <rearplate.scad> 65 use <separator.scad> 66 use <shell.scad> 67 68 use <viz.scad> 69 70 // =========================================================================== 71 72 viz_disks = true; 73 viz_fans = true; 74 viz_psus = true; 75 viz_pcbs = true; 76 viz_io = true; 77 78 // =========================================================================== 79 80 cover_offset = [0, 0, chassis_height]; 81 82 separator_offset = [ 83 disk_row_width(), 84 faceplate_thickness + fan_wall_depth, 85 0, 86 ]; 87 88 faceplate_offset = [ 89 -(faceplate_width - chassis_width) / 2, // center on shell 90 -(faceplate_thickness / 2), // account for faceplate thickness 91 0, 92 ]; 93 94 rearplate_offset = [0, 0, 0]; 95 96 disk_offset = [ 97 chassis_thickness, 98 chassis_thickness + fan_wall_depth, 99 chassis_thickness / 2 + disk_pad_height + 20, 100 ]; 101 102 fan_offset = [ 103 chassis_thickness, 104 chassis_thickness + fan_wall_thickness, 105 chassis_thickness / 2 + fan_pad_height, 106 ]; 107 108 psu_offset = [ 109 chassis_width - chassis_thickness - psu_width, 110 chassis_depth - chassis_thickness - psu_depth, 111 chassis_thickness / 2 + psu_pad_height, 112 ]; 113 114 io_offset = [ 115 chassis_width - chassis_thickness - io_width, 116 chassis_depth - chassis_thickness - io_depth, 117 chassis_thickness / 2 + psu_group_height(), 118 ]; 119 120 module viz_guts(disks = true, fans = true, psus = true, io = true, pcbs = true) { 121 } 122 123 shell(); 124 125 //translate(cover_offset) cover(); 126 translate(faceplate_offset) rotate([90,0,0]) faceplate(); 127 translate(rearplate_offset) rotate([90,0,0]) rearplate(); 128 129 if (viz_disks) { 130 translate(disk_offset) 131 for (i = [0:disk_blocks-1]) { 132 translate([0, i * (fan_wall_depth + disk_block_depth()), 0]) 133 disk_block(); 134 disk_separator(); 135 } 136 } 137 138 if (viz_fans) { 139 translate(fan_offset) 140 for (i = [0:fan_groups-1]) { 141 translate([0, i * (fan_wall_depth + disk_block_depth()), 0]) 142 if (i == 0) 143 fan_group(fans=3); 144 else 145 fan_group(fans=2); 146 } 147 } 148 149 if (viz_psus) { 150 translate(psu_offset) psu_group(); 151 } 152 153 if (viz_pcbs) { 154 155 } 156 157 if (viz_io) { 158 translate(io_offset) expander_io_group(); 159 }