extrusion-joint.scad 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* [OpenSCAD] */
  2. $fn=60; // [30:6:180]
  3. /* [Profil] */
  4. // Aluprofil (quadratisch)
  5. Raster = 20; // [20,30]
  6. // Gewindebohrung metrisch
  7. Schraube = 5; // [5,6,8]
  8. /* [Verbinder] */
  9. // Winkel der Verbindung
  10. Winkel = 90; // [30:5:180]
  11. // Radius, um die Schrauben zu erreichen
  12. Radius = 0; // [0:1:50]
  13. // Modell für den Slicer auf die Seite legen
  14. Kippen = true;
  15. /* [Hidden] */
  16. // Montageplatte [Länge,Breite,Dicke]
  17. Montageplatte = [Raster*1.0,Raster,3];
  18. Fuehrung = 1.5;
  19. ////////////////////////////////////////////////////////////////////////////////////////
  20. module grundplatte() {
  21. Toleranz=0.2;
  22. translate([ (Montageplatte.x/2+Radius),0,0])
  23. difference() {
  24. // Platte mit Bolzen
  25. union() {
  26. cube( [Montageplatte.x,Montageplatte.y,Montageplatte.z], center=true );
  27. if (Radius==0) { // Seitenplatten innen rund verbinden
  28. translate([-Montageplatte.x/2,0,0]) rotate([90,0,0]) cylinder( d=Montageplatte.z, h=Raster, center=true);
  29. }
  30. // zwei Führungsbolzen vorne und hinten
  31. translate([(Montageplatte.x/2-Montageplatte.z),0,-(Montageplatte.z+Fuehrung)/2]) cube( [Schraube/2, Schraube-Toleranz, Fuehrung], center=true );
  32. translate([-(Montageplatte.x/2-Montageplatte.z),0,-(Montageplatte.z+Fuehrung)/2]) cube( [Schraube/2, Schraube-Toleranz, Fuehrung], center=true );
  33. }
  34. // Langloch für Schraube
  35. hull() {
  36. translate([Montageplatte.z/2,0,0]) cylinder( d=Schraube+Toleranz, h=3*Montageplatte.z, center=true );
  37. translate([-Montageplatte.z/2,0,0]) cylinder( d=Schraube+Toleranz, h=3*Montageplatte.z, center=true );
  38. }
  39. }
  40. }
  41. module seite() {
  42. hull() {
  43. translate([Montageplatte.x/2+Radius,0,0]) cube([Montageplatte.x,Montageplatte.z,Montageplatte.z], center=true );
  44. rotate([0,-Winkel,0]) translate([Montageplatte.x/2+Radius,0,0]) cube([Montageplatte.x,Montageplatte.z,Montageplatte.z], center=true );
  45. }
  46. }
  47. // Auf die Seite legen, dann wird es beim Slicen einfacher
  48. turn90degree=(Kippen==true)?90:0;
  49. rotate([turn90degree,0,0]) union() {
  50. // Montageplatte
  51. color("red") grundplatte();
  52. // innere Verbindung der beiden Grundplatten
  53. color("green") hull() {
  54. translate([ (Radius),0,0]) rotate([90,0,0]) cylinder( d=Montageplatte.z, h=Raster, center=true);
  55. rotate([0,-Winkel,0]) translate([ (Radius),0,0]) rotate([90,0,0]) cylinder( d=Montageplatte.z, h=Raster, center=true);
  56. }
  57. // die andere Montageplatte, gedreht und gespiegelt
  58. color("orange") rotate([0,-Winkel,0]) mirror([0,0,1]) grundplatte();
  59. // beide Seitenteile
  60. color("lightblue") union() {
  61. translate([0,(Montageplatte.y-Montageplatte.z)/2,0]) seite();
  62. translate([0,-(Montageplatte.y-Montageplatte.z)/2,0]) seite();
  63. }
  64. }