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_arm.scad 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Inspired by the "TinyBoy / Fabrikator mini Cam holder"
  3. * by "andy_a":
  4. * http://www.thingiverse.com/thing:1434698
  5. *
  6. * Created by:
  7. * Thomas Buck <xythobuz@xythobuz.de> in April 2016
  8. *
  9. * Licensed under the Creative Commons - Attribution - Share alike license.
  10. */
  11. height = 10.2;
  12. wallSize = 3;
  13. screwInner = 2.8;
  14. screwOuter = 6.5;
  15. length = 60;
  16. $fn = 20;
  17. // -----------------------------------------------------------
  18. module half_circle(d, h) {
  19. difference() {
  20. cylinder(d = d, h = h);
  21. translate([0, -(d / 2) - 1, -1])
  22. cube([(d / 2) + 1, d + 2, h + 2]);
  23. }
  24. }
  25. module screw() {
  26. difference() {
  27. cylinder(d = screwOuter, h = height);
  28. translate([0, 0, -1])
  29. cylinder(d = screwInner, h = height + 2);
  30. }
  31. }
  32. module arm() {
  33. translate([0, screwOuter / 2, 0])
  34. cube([wallSize, length - screwOuter, screwOuter]);
  35. translate([0, screwOuter / 2, screwOuter / 2])
  36. rotate([90, 0, 90])
  37. half_circle(screwOuter, wallSize);
  38. translate([wallSize, length - (screwOuter / 2), screwOuter / 2])
  39. rotate([90, 0, 270])
  40. half_circle(screwOuter, wallSize);
  41. }
  42. %translate([wallSize, length - (screwOuter / 2), screwOuter / 2])
  43. rotate([0, 90, 0])
  44. screw();
  45. %translate([wallSize, screwOuter / 2, screwOuter / 2])
  46. rotate([0, 90, 0])
  47. screw();
  48. // -----------------------------------------------------------
  49. difference() {
  50. union() {
  51. arm();
  52. translate([height + wallSize, 0, 0])
  53. arm();
  54. translate([wallSize, length / 3, screwOuter / 2])
  55. rotate([0, 90, 0])
  56. cylinder(d = screwOuter, h = height);
  57. translate([wallSize, length * 2 / 3, screwOuter / 2])
  58. rotate([0, 90, 0])
  59. cylinder(d = screwOuter, h = height);
  60. }
  61. translate([-1, screwOuter / 2, screwOuter / 2])
  62. rotate([0, 90, 0])
  63. cylinder(d = screwInner, h = height + (2 * wallSize) + 2);
  64. translate([-1, length - (screwOuter / 2), screwOuter / 2])
  65. rotate([0, 90, 0])
  66. cylinder(d = screwInner, h = height + (2 * wallSize) + 2);
  67. }