OpenSCAD 3D models for use with PD Buddy devices
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

sink_bracket.scad 2.8KB

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