PopufareHousingCommon.scad 2.5 KB

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