PopufareHousingFrontBottom.scad 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // License: CC0
  2. //
  3. // To the extent possible under law, Clementine Computing LLC has waived
  4. // all copyright and related or neighboring rights to this file.
  5. //
  6. // This work is published from: United States.
  7. //
  8. include <PopufareHousingCommon.scad>
  9. module PopufareHousingFrontBottomPlate() {
  10. w = POPUFARE_HOUSING_WIDTH;
  11. h = POPUFARE_FRONT_HEIGHT;
  12. bx = POPUFARE_BRACKET_CX;
  13. br = POPUFARE_BRACKET_D/2.0;
  14. de = POPUFARE_BRACKET_DE;
  15. frontlip = POPUFARE_HOUSING_FRONT_LIP_HEIGHT;
  16. mt = _MATERIAL_THICKNESS;
  17. lip = _MATERIAL_THICKNESS;
  18. lip_top = _MATERIAL_THICKNESS * sqrt(2.0);
  19. h_tot = h - lip_top + lip;
  20. fudge = 10;
  21. difference() {
  22. union() {
  23. square([w,h], center=true);
  24. // left/right overhang
  25. //
  26. translate([-w/2-lip, -h/2 ]) square([lip,h_tot]);
  27. translate([ w/2, -h/2 ]) square([lip,h_tot]);
  28. };
  29. // legacy housing fron lip
  30. //
  31. translate([0, -(h/2 - frontlip/2)]) square([w + 2*lip,frontlip], center=true);
  32. // get rid of ghost edges
  33. //
  34. translate([0, -(h/2 - frontlip/2)]) square([w + 2*lip + 1,frontlip], center=true);
  35. translate([0, -(h/2)]) square([w + 2*lip + 1,frontlip/2], center=true);
  36. // shave off top front panel to accomodate angle plate.
  37. // fudge to guard against stray geometry
  38. //
  39. translate([0, (h/2 - 0.4999*lip_top)]) square([2*w, lip_top + 0.15], center=true);
  40. // side plate bracket attachment
  41. //
  42. translate([ -(w/2 - bx), 0]) circle(br);
  43. translate([ (w/2 - bx), 0]) circle(br);
  44. // bottom lip attachment
  45. //
  46. translate([ -(w/2 - 8*mt), -(h/2 - bx)]) circle(br);
  47. translate([ (w/2 - 8*mt), -(h/2 - bx)]) circle(br);
  48. }
  49. }
  50. //PopufareHousingFrontBottomPlate();