My self-made 3D-printable designs, mainly in OpenSCAD
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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();