My self-made 3D-printable designs, mainly in OpenSCAD
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.

cam-holder.scad 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //import("/Users/thomas/Downloads/y-corner.stl");
  2. // holder
  3. edge = 20;
  4. height = 40;
  5. hole_off = 10;
  6. hole_size = 8.0;
  7. hole_wiggle = 0.75;
  8. // adaptor
  9. length = 50;
  10. forw_height = 20;
  11. // cam
  12. cam_width = 27.0;
  13. cam_height = 5.0;
  14. cam_wall = 3.0;
  15. cam_holes = 3.2;
  16. cam_hole_off = 3.3;
  17. cam_hole_dist = 20.0;
  18. cam_mount_height = 15.0;
  19. cam_mount_dist = 10.0;
  20. mock_pole_height = 60.0 + 40;
  21. mock_pole_off = 10.0;
  22. $fn = 20;
  23. module prism(l, w, h) {
  24. polyhedron(
  25. points = [[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
  26. faces = [[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
  27. );
  28. }
  29. module holder() {
  30. difference() {
  31. translate([-edge / 2, -edge / 2, 0])
  32. cube([edge, edge, height]);
  33. translate([-edge / 2 - 1, 0, hole_off])
  34. rotate([0, 90, 0])
  35. cylinder(d = hole_size + hole_wiggle, h = edge + 2);
  36. translate([-edge / 2 - 1, 0, height - hole_off])
  37. rotate([0, 90, 0])
  38. cylinder(d = hole_size + hole_wiggle, h = edge + 2);
  39. }
  40. }
  41. module adaptor() {
  42. translate([-edge / 2, -edge / 2 - length, height - forw_height])
  43. difference() {
  44. cube([edge, length, forw_height]);
  45. translate([edge / 2, hole_off, -1])
  46. cylinder(d = hole_size + hole_wiggle, h = forw_height + 2);
  47. }
  48. }
  49. module cam_plate() {
  50. difference() {
  51. cube([cam_width, cam_wall, cam_mount_height]);
  52. translate([cam_hole_off, cam_wall + 1, cam_mount_height - cam_height])
  53. rotate([90, 0, 0])
  54. cylinder(d = cam_holes, h = cam_wall + 2);
  55. translate([cam_hole_off + cam_hole_dist, cam_wall + 1, cam_mount_height - cam_height])
  56. rotate([90, 0, 0])
  57. cylinder(d = cam_holes, h = cam_wall + 2);
  58. }
  59. }
  60. module cam_mount() {
  61. translate([0, -edge / 2 - length + hole_off, height - forw_height + mock_pole_height - mock_pole_off * 2 - 40])
  62. difference() {
  63. union() {
  64. cylinder(d = hole_size + hole_wiggle + cam_wall * 2, h = cam_height);
  65. translate([-cam_width / 2, cam_mount_dist, 0])
  66. cam_plate();
  67. translate([-cam_width / 2 + cam_width / 2 - ((hole_size + hole_wiggle) / 2 + cam_wall), 0, 0])
  68. cube([cam_width - 2 * (cam_width / 2 - ((hole_size + hole_wiggle) / 2 + cam_wall)), cam_mount_dist + ((hole_size + hole_wiggle) / 2) - 2, cam_height]);
  69. translate([-(hole_size + hole_wiggle) / 2 - cam_wall, 0, 0])
  70. rotate([0, -90, 0])
  71. prism(cam_height, cam_mount_dist, cam_width / 2 - ((hole_size + hole_wiggle) / 2 + cam_wall));
  72. translate([(hole_size + hole_wiggle) / 2 + cam_wall, 0, cam_height])
  73. rotate([0, 90, 0])
  74. prism(cam_height, cam_mount_dist, cam_width / 2 - ((hole_size + hole_wiggle) / 2 + cam_wall));
  75. }
  76. translate([0, 0, -1])
  77. cylinder(d = hole_size + hole_wiggle, h = cam_height + 2);
  78. }
  79. }
  80. module cam_holder_mount() {
  81. holder(); adaptor();
  82. %translate([0, -edge / 2 - length + hole_off, height - forw_height - mock_pole_off])
  83. cylinder(d = hole_size, h = mock_pole_height);
  84. cam_mount();
  85. }
  86. //cam_holder_mount();