OpenSCAD 3D models for use with PD Buddy devices
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sink_bracket.scad 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. include <MCAD/polyholes.scad>;
  2. include <MCAD/units.scad>;
  3. include <truncated_teardrop.scad>;
  4. /*
  5. * A general-purpose mount for the PD Buddy Sink
  6. */
  7. module sink_mount(layer_thickness=0.25*mm, height=8*mm, nut_depth=4*mm,
  8. cutout=0.5*mm, bolt_tolerance=0.3*mm, nut_tolerance=0.05*mm) {
  9. /* Width of the PD Buddy Sink */
  10. sink_width = 26*mm;
  11. difference() {
  12. /* Body of the mount */
  13. cube([8*mm, sink_width, height]);
  14. /* Bolt hole bottom height. Leave one layer_thickness as a bridge. */
  15. bhbot = nut_depth + layer_thickness;
  16. /* Bolt holes */
  17. translate([4*mm, 4*mm, bhbot])
  18. polyhole(d=3*mm + bolt_tolerance, h=height - bhbot + epsilon);
  19. translate([4*mm, sink_width-4*mm, bhbot])
  20. polyhole(d=3*mm + bolt_tolerance, h=height - bhbot + epsilon);
  21. /* Nut holes */
  22. translate([4*mm, 4*mm, -epsilon])
  23. rotate([0, 0, 30])
  24. cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6);
  25. translate([4*mm, sink_width - 4*mm, -epsilon])
  26. rotate([0, 0, 30])
  27. cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6);
  28. /* Small cutout to clear any solder bulges under the USB connector */
  29. translate([-epsilon, 8*mm, height - cutout])
  30. cube([8*mm + 2*epsilon, sink_width - 2*8*mm, cutout + epsilon]);
  31. }
  32. }
  33. /*
  34. * A bracket for mounting the PD Buddy Sink on a panel
  35. */
  36. module sink_bracket(layer_thickness=0.25*mm, height=8*mm, nut_depth=4*mm,
  37. cutout=0.5*mm, bolt_tolerance=0.3*mm, nut_tolerance=0.05*mm) {
  38. sink_width = 26*mm;
  39. halfend_width = 8*mm;
  40. bracket_width = sink_width + 2*halfend_width;
  41. mount_distance = 5*mm;
  42. difference() {
  43. union() {
  44. cube([8*mm, halfend_width, height]);
  45. translate([0, halfend_width, 0])
  46. sink_mount(layer_thickness=layer_thickness, height=height,
  47. nut_depth=nut_depth, cutout=cutout,
  48. bolt_tolerance=bolt_tolerance,
  49. nut_tolerance=nut_tolerance);
  50. translate([0, halfend_width + sink_width, 0])
  51. cube([8*mm, halfend_width, height]);
  52. }
  53. /* Bolt holes */
  54. translate([-epsilon, mount_distance, height/2])
  55. truncated_teardrop(radius=(3*mm + bolt_tolerance)/2,
  56. length=8*mm + 2*epsilon);
  57. translate([-epsilon, bracket_width - mount_distance, height/2])
  58. truncated_teardrop(radius=(3*mm + bolt_tolerance)/2,
  59. length=8*mm + 2*epsilon);
  60. /* Nut holes */
  61. translate([4*mm, mount_distance, height/2])
  62. rotate([0, 90, 0])
  63. rotate([0, 0, 30])
  64. cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6);
  65. translate([4*mm, bracket_width - mount_distance, height/2])
  66. rotate([0, 90, 0])
  67. rotate([0, 0, 30])
  68. cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6);
  69. }
  70. }
  71. sink_bracket(layer_thickness=0.25);