- // 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);
- }