tough_belt_clip.scad 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // Tough Belt Clip
  2. // Design by Marius Gheorghescu, December 2013
  3. // how many teeth on each side
  4. teeth = 5;
  5. // width of the belt in mm incl clearance (use 6.25 for typical GT2 belt)
  6. belt_width = 6.5;
  7. // thickness of the belt in mm (use 1.5 for GT2 belt)
  8. belt_thickness = 1.5;
  9. // belt pitch in mm (use 2.0 for GT2 belt)
  10. pitch = 2.0;
  11. // this controls the strength of the bracket
  12. shell = 1.5;
  13. /* [Hidden] */
  14. cutout_width = 6 + belt_thickness + shell;
  15. len = 2*teeth*pitch + cutout_width;
  16. round_corner_epsilon = 1;
  17. epsilon = 0.01;
  18. module belt()
  19. {
  20. // reinforcement
  21. //cube([len, 2, h], center=true);
  22. for(i=[pitch/4:pitch:len]) {
  23. translate([i-len/2, 1.25, 0])
  24. cube([pitch - round_corner_epsilon, belt_thickness + round_corner_epsilon, belt_width], center=true);
  25. }
  26. }
  27. module clip() {
  28. difference() {
  29. union() {
  30. // general shape of the clip
  31. linear_extrude(belt_width + 2*shell, center=true) {
  32. polygon(points=[
  33. [len/2,0],
  34. [3,-2.5],
  35. [-3,-2.5],
  36. [-len/2,0],
  37. [-len/2, shell + belt_thickness],
  38. [len/2, shell + belt_thickness]
  39. ]);
  40. }
  41. }
  42. // left belt turn
  43. rotate([0,0,-45])
  44. translate([-3.2/2 - shell - belt_thickness/2,0,0])
  45. cube([belt_thickness, 20 + 2*shell, belt_width], center=true);
  46. // right belt turn
  47. rotate([0,0,45])
  48. //+ belt_thicknes/2 + shell
  49. translate([3.2/2 + shell + belt_thickness/2,0,0])
  50. cube([belt_thickness, 20 + 2*shell, belt_width], center=true);
  51. // cutouts
  52. translate([len/2 - teeth*pitch, shell + belt_thickness/2, 0])
  53. cube([pitch + epsilon, belt_thickness + epsilon, belt_width], center=true);
  54. translate([-len/2 + teeth*pitch, shell + belt_thickness/2, 0])
  55. cube([pitch + epsilon, belt_thickness + epsilon, belt_width], center=true);
  56. // m3 hole
  57. rotate([90,0,0])
  58. cylinder(d=3.3, h=10 + 2*shell, center=true, $fn=60);
  59. // hex nut
  60. translate([0, -3.8, 0])
  61. rotate([90,90,0])
  62. cylinder(r=3.35, h=4, center=true, $fn=6);
  63. // belt teeth
  64. for(i=[1:1:teeth]) {
  65. // left side
  66. color([1,0, 0])
  67. translate([len/2 + pitch/4 - i*pitch, shell + belt_thickness/2, 0])
  68. cube([pitch/2, belt_thickness + epsilon, belt_width], center=true);
  69. // right side
  70. color([1,0, 0])
  71. translate([-len/2 - pitch/4 + i*pitch, shell + belt_thickness/2, 0])
  72. cube([pitch/2, belt_thickness + epsilon, belt_width], center=true);
  73. }
  74. }
  75. }
  76. module clip_set()
  77. {
  78. for(i=[0:10:50]) {
  79. translate([0,i,0])
  80. clip();
  81. }
  82. }
  83. //clip_set();
  84. clip();