// Grandstream HT801 LED-blocking shroud // Top + left + right, open back + bottom // Designed as a slide-on sleeve from the front ////////////////////// // Parameters ////////////////////// ht_len = 116; // HT801 body length (front to back) ht_wid = 90; // HT801 body width (left to right) ht_hei = 26; // HT801 body height (bottom to top) clearance = 1.5; // extra space on each side wall_th = 2.4; // wall thickness front_lip_h = 7; // how far the front lip hangs down front_oh = 4; // top overhang past front face // Ethernet port rough position on right side eth_from_front = 20; // distance from front to start of port eth_width = 16; // port opening width eth_height = 14; // port opening height eth_center_h = ht_hei/2; // centered vertically eth_lip_depth = 3; // inward blackout lip depth ////////////////////// // Derived dims ////////////////////// inner_len = ht_len + clearance*2; inner_wid = ht_wid + clearance*2; inner_hei = ht_hei + clearance; outer_len = inner_len + wall_th*2; outer_wid = inner_wid + wall_th*2; outer_hei = inner_hei + wall_th; ////////////////////// // Main ////////////////////// difference() { // Outer shell: top + left + right + front lip union() { // Top slab translate([0, 0, 0]) cube([outer_len, outer_wid, wall_th], center=false); // Left wall translate([0, 0, 0]) cube([outer_len, wall_th, inner_hei + wall_th], center=false); // Right wall translate([0, outer_wid - wall_th, 0]) cube([outer_len, wall_th, inner_hei + wall_th], center=false); // Front lip (downward) translate([-front_oh, 0, 0]) cube([front_oh + wall_th, outer_wid, front_lip_h], center=false); } // Inner cavity (where the HT801 sits) translate([wall_th, wall_th, wall_th]) cube([inner_len, inner_wid, inner_hei], center=false); // Open the back fully (just in case) translate([wall_th + ht_len/2, wall_th, wall_th]) cube([ht_len + 20, inner_wid, inner_hei + 20], center=true); // Ethernet port opening + blackout lip on right wall // Cut the main opening translate([ wall_th + clearance + eth_from_front, outer_wid - wall_th - 0.1, // right wall wall_th + (eth_center_h - eth_height/2) ]) cube([eth_width, wall_th + 1, eth_height], center=false); // Carve out behind the port for the inward lip translate([ wall_th + clearance + eth_from_front - eth_lip_depth, outer_wid - wall_th - 0.2, wall_th + (eth_center_h - eth_height/2) - 0.2 ]) cube([eth_width + eth_lip_depth + 0.4, wall_th + 2, eth_height + 0.4], center=false); }