PopufareHousingCommon.scad 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. $fs = 1.0/64.0;
  9. // ...
  10. //
  11. _MATERIAL_THICKNESS = 1.0/8.0;
  12. _M2 = 2.0;
  13. _M2r = 2.0/2;
  14. _M3 = 3.0;
  15. _M3r = 3.0/2;
  16. _M4 = 4.0;
  17. _M4r = 4.0/2;
  18. _M5 = 5.0;
  19. _M5r = 5.0/2;
  20. // in mm
  21. //
  22. POPUFARE_HOUSING_WIDTH = 190;
  23. POPUFARE_HOUSING_DEPTH = 165;
  24. POPUFARE_HOUSING_HEIGHT = 135;
  25. POPUFARE_GLAND_DIAMETER = 37;
  26. POPUFARE_SCREEN_WIDTH = 118 + 1;
  27. POPUFARE_SCREEN_OUTER_WIDTH = 122;
  28. POPUFARE_SCREEN_HEIGHT = 70 + 1;
  29. POPUFARE_SCREEN_OUTER_HEIGHT = 78;
  30. POPUFARE_FRONT_HEIGHT = 60;
  31. POPUFARE_FIXTURE_DX = 65;
  32. POPUFARE_FIXTURE_DY = 65;
  33. POPUFARE_FIXTURE_SCREW_D = 7.5;
  34. // bracket
  35. //
  36. POPUFARE_BRACKET_CX = 20;
  37. POPUFARE_BRACKET_D = 5;
  38. POPUFARE_BRACKET_DS = 100;
  39. POPUFARE_BRACKET_DE = 40;
  40. POPUFARE_BRACKET_DE_SHORT = 20;
  41. // inner plates
  42. //
  43. POPUFARE_INNER_PLATE_WIDTH = 90;
  44. POPUFARE_INNER_PLATE_HEIGHT = 70;
  45. POPUFARE_INNER_PLATE_HOLE_WIDTH = POPUFARE_SCREEN_OUTER_WIDTH + 0;
  46. POPUFARE_INNER_PLATE_HOLE_HEIGHT = POPUFARE_SCREEN_OUTER_HEIGHT + 20;
  47. // hinge
  48. //
  49. POPUFARE_HINGE_TOP_HOLE_WIDTH = 32;
  50. POPUFARE_HINGE_TOP_HOLE_DE = 36;
  51. POPUFARE_HINGE_BACK_HOLE_WIDTH = 45;
  52. POPUFARE_HINGE_BACK_HOLE_DE = 28;
  53. POPUFARE_HINGE_D = _M4;
  54. // Raspberry Pi measurements
  55. //
  56. _RASPBERRY_PI_B_HOLE_DX = 58;
  57. _RASPBERRY_PI_B_HOLE_DY = 48;
  58. _SCREEN_HOLE_DX = 93;
  59. _SCREEN_HOLE_DY = 69;
  60. // Center for raspberry pi from screen
  61. // that sits on top of it.
  62. //
  63. _SCREEN_OUTER_CENTER = [ POPUFARE_SCREEN_OUTER_WIDTH/2, POPUFARE_SCREEN_OUTER_HEIGHT/2 ];
  64. // offset of left screen m2 screws
  65. // as seen from the back, front ribbon down
  66. //
  67. _SCREEN_LL_M2_C = [ 5,5 ];
  68. _SCREEN_UL_M2_C = [ 5, POPUFARE_SCREEN_OUTER_HEIGHT - 4 ];
  69. _SCREEN_CX = _SCREEN_HOLE_DX/2 + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  70. _SCREEN_CY = _SCREEN_HOLE_DY/2 + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  71. _RASPBERRY_PI_B_CX = (_SCREEN_HOLE_DX - _RASPBERRY_PI_B_HOLE_DX/2) + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  72. _RASPBERRY_PI_B_CY = (_SCREEN_HOLE_DY - _RASPBERRY_PI_B_HOLE_DY/2) + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  73. // Bounding box width of rouned rect is w and h,
  74. // so this function compensates for the rounded corner
  75. // radius.
  76. //
  77. // w - width or rectangle
  78. // h - height of rectangle
  79. // r - corner radius
  80. //
  81. // rounded rectangle has center of mass (center) at (0,0)
  82. //
  83. module rounded_rect(w,h,r) {
  84. _w = w-2*r;
  85. _h = h-2*r;
  86. x2 = _w/2;
  87. y2 = _h/2;
  88. hull() {
  89. translate([-x2, y2]) circle(r);
  90. translate([ x2, y2]) circle(r);
  91. translate([ x2,-y2]) circle(r);
  92. translate([-x2,-y2]) circle(r);
  93. }
  94. }