schraubstock.scad 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /* [Teil] */
  2. Teil = 1; // [1:Überblick, 2:Basisblock, 3:Klemmblock_fest, 4:Klemmblock_Rippen, 5:Klemmblock_Variabel]
  3. Klemmblock_Position = 150; // [150:1:280]
  4. Klemmblock_Hoehe = 70; // [50:1:90]
  5. /* [Hidden] */
  6. $fn = 45;
  7. Delta = 0.005;
  8. Block = [300,120,23];
  9. Rippe = [3,120,2]; // x,y,z
  10. Rippen = [44, 6];
  11. Raster = 80;
  12. Nutenstein = [8, 16]; // 8mm wegen der Hammer-Muttern.
  13. Schraube = [6.5, 20, 3]; // Schaft, Kopf, Tiefe
  14. Schulter=5;
  15. Langloch = [40,260];
  16. Steigung=5;
  17. module Basisblock() {
  18. difference() {
  19. // Block mit Rippen
  20. union() {
  21. cube([Block.x, Block.y, Block.z]);
  22. color("Red") translate([0,0,Block.z]) {
  23. for (i=[1:1:Rippen[0]]) translate([Block.x-(2*i-1)*Rippe.x, 0, 0]) cube(Rippe);
  24. // Rippe
  25. translate([10,0,0]) cube([5,Block.y,Rippe.z]);
  26. }
  27. }
  28. // Bohrungen und Langlöcher
  29. for (i=[(Block.y-Raster)/2, (Block.y+Raster)/2]) translate([0,i,-Delta]) union() {
  30. union() {
  31. // M6 Gewinde
  32. color("Blue") translate([10+5,0,0]) cylinder(d=5, h=Block.z+Rippe.z+1);
  33. // Am Ende je ein einzelnes Loch für Verankerung
  34. color("Orange") translate([285,0,0]) {
  35. cylinder(d=Schraube[0], h=Block.z+5);
  36. translate([0,0,Block.z-Schraube[2]]) cylinder(d=Schraube[1], h=Schraube[2]+1+Rippe.z);
  37. }
  38. color("Orange") {
  39. // Innen für M6 Schraube
  40. hull() { for (i=Langloch) translate([i,0,0]) cylinder(d=Schraube[0], h=Block.z+5); }
  41. // 8mm unten Schulter vom Nutenstein
  42. hull() { for (i=[Langloch[0]-Nutenstein[1]/2, Langloch[1]+Nutenstein[1]/2]) translate([i,0,0]) cylinder(d=Nutenstein[0], h=7); }
  43. // 16mm unten Nutenstein Breite
  44. hull() { for (i=[Langloch[0]-Nutenstein[1]/2, Langloch[1]+Nutenstein[1]/2]) translate([i,0,0]) cylinder(d=Nutenstein[1], h=5); }
  45. // Oben für Schraubenkopf
  46. translate([0,0,Block.z-Schraube[2]]) hull() { for (i=Langloch) translate([i,0,0]) cylinder(d=Schraube[1], h=Schraube[2]+1+Rippe.z); }
  47. }
  48. }
  49. }
  50. }
  51. }
  52. module Klemmblock_Variabel_Rippen() {
  53. Breite_unten = Rippe.x*2*Rippen[1];
  54. difference() {
  55. union() {
  56. hull() {
  57. translate([0,0,Block.z-1]) cube([Breite_unten, Block.y, 1]);
  58. translate([Steigung,0,0]) cube([Breite_unten-2*Steigung, Block.y, Delta]);
  59. }
  60. color("Red") translate([0,0,Block.z]) for (i=[1:1:Rippen[1]]) translate([Breite_unten-(2*i-1)*Rippe.x, 0, 0]) cube(Rippe);
  61. }
  62. color("Blue") for (i=[(Block.y-Raster)/2, (Block.y+Raster)/2]) translate([0,i,-Delta]) union() {
  63. translate([Breite_unten/2,0,0]) union() {
  64. cylinder(d=Schraube[0], h=Block.z+Rippe.z+1);
  65. cylinder(d=Schraube[1], h=5);
  66. }
  67. }
  68. }
  69. }
  70. module Klemmblock_Variabel() {
  71. Breite_unten = 30;
  72. difference() {
  73. union() {
  74. hull() {
  75. translate([0,0,Block.z]) cube([Breite_unten-Steigung, Block.y, Delta]);
  76. cube([Breite_unten, Block.y, 1]);
  77. }
  78. }
  79. color("Blue") for (i=[(Block.y-Raster)/2, (Block.y+Raster)/2]) translate([0,i,-Delta]) union() {
  80. translate([25/2,0,0]) union() {
  81. cylinder(d=Schraube[0], h=Block.z+Rippe.z+1);
  82. cylinder(d=Schraube[1], h=5);
  83. }
  84. }
  85. translate([0,Block.y/2,-Delta]) cylinder(d=2*Schulter, h=Block.z+Rippe.z+Delta, $fn=4);
  86. }
  87. }
  88. module Klemmblock_Fest() {
  89. difference() {
  90. cube([35, Block.y, Block.z+Rippe.z]);
  91. color("Red") translate([10,-Delta,Block.z]) cube([5,Block.y+2*Delta,Rippe.z+Delta]);
  92. color("Blue") for (i=[(Block.y-Raster)/2, (Block.y+Raster)/2]) translate([0,i,-Delta]) union() {
  93. translate([10+5,0,0]) union() {
  94. cylinder(d=Schraube[0], h=Block.z+Rippe.z+1);
  95. cylinder(d=Schraube[1], h=5);
  96. }
  97. }
  98. color("Orange") translate([35-Schulter+Delta,-Delta,-Delta]) cube([Schulter,Block.y+2*Delta,3+Delta]);
  99. translate([35,Block.y/2,0]) cylinder(d=2*Schulter, h=Block.z+Rippe.z+Delta, $fn=4);
  100. }
  101. }
  102. // Datei öffnen und Customizer anzeigen, dann Teil auswählen, F6 und STL Export:
  103. if (Teil == 1) {
  104. Basisblock();
  105. translate([Klemmblock_Position,0,55]) rotate([0,180,0]) Klemmblock_Variabel_Rippen();
  106. translate([90,120,Klemmblock_Hoehe]) rotate([180,0,0]) Klemmblock_Variabel();
  107. translate([0,120,55]) rotate([180,0,0]) Klemmblock_Fest();
  108. }
  109. if (Teil == 2) Basisblock();
  110. if (Teil == 3) Klemmblock_Fest();
  111. if (Teil == 4) Klemmblock_Variabel_Rippen();
  112. if (Teil == 5) Klemmblock_Variabel();