// Parametric 3x 120mm Fan Wall Pressure Shroud (Left Half) // For 6U Open-Source Storage Array // Standard Units: Millimeters (mm) $fn = 64; shroud_w = 198.0; // Half-width (split down center) shroud_h = 220.0; shroud_depth = 25.0; wall_t = 3.5; fillet_r = 5.0; // Standard 120mm Fan dimensions fan_bore_d = 118.0; fan_hole_spacing = 105.0; insert_m4_d = 5.6; insert_m4_h = 6.5; module fan_aperture_with_fillet() { // Main Bore with 5mm Intake Radiused Fillet cylinder(d=fan_bore_d, h=shroud_depth + 2); // Front Radiused Inlet (Cone approximation / Torus cutout) translate([0, 0, -0.1]) cylinder(d1=fan_bore_d + 2*fillet_r, d2=fan_bore_d, h=fillet_r); // 4x Fan Mounting Holes (105mm square pitch) for (dx = [-fan_hole_spacing/2, fan_hole_spacing/2]) { for (dy = [-fan_hole_spacing/2, fan_hole_spacing/2]) { translate([dx, dy, -1]) { cylinder(d=4.5, h=shroud_depth + 2); // Rear M4 Heat-Set Brass Insert Pocket translate([0, 0, shroud_depth - insert_m4_h + 1]) cylinder(d=insert_m4_d, h=insert_m4_h + 1); } } } } module fan_wall_left() { difference() { // Main Solid Shroud Block cube([shroud_w, shroud_h, shroud_depth]); // Fan 0 Aperture (Left: X=66.0, Y=110.0) translate([66.0, 110.0, 0]) fan_aperture_with_fillet(); // Fan 1 Aperture (Center-Split: X=198.0, Y=110.0) translate([198.0, 110.0, 0]) fan_aperture_with_fillet(); // MCIO Twinaxial Cable Pass-Through Slot (Lower Left) translate([15.0, 15.0, -1]) cube([45.0, 15.0, shroud_depth + 2]); // Perimeter Extrusion Mounting Holes (Ø4.5mm with countersink) // Top Edge translate([20.0, shroud_h - 10.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); translate([100.0, shroud_h - 10.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); translate([180.0, shroud_h - 10.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); // Bottom Edge translate([20.0, 10.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); translate([100.0, 10.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); translate([180.0, 10.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); // Left Frame Flange translate([10.0, 60.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); translate([10.0, 160.0, -1]) cylinder(d=4.5, h=shroud_depth + 2); // Center Split Interlocking Lap Joint / Dovetail (Right Edge) translate([shroud_w - 5.0, 0, -1]) cube([6.0, shroud_h/2, shroud_depth/2 + 1]); translate([shroud_w - 5.0, shroud_h/2, shroud_depth/2]) cube([6.0, shroud_h/2 + 1, shroud_depth/2 + 1]); } } fan_wall_left();