Advertisement
wariat

openscad elbow generating script

Nov 27th, 2022
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. // Elbow fitting O/O ver 2.0
  2. // wariat 06.2020 - 11.2022
  3.  
  4.  
  5. // CONFIG
  6. wall_thickness=3; // wall thickness
  7.  
  8. // FIRST CONNECTOR
  9. F_diameter = 40; // First connector Outer diameter
  10. F_length = 50; // First connector length
  11. F_outerRing_h = 2; // First connector outer ring height
  12. F_innerRing_h = 0; // First connector inner ring height
  13.  
  14. // SECOND CONNECTOR
  15. S_diameter = 50; // Second connector Outer diameter
  16. S_length = 60; // Second connector length
  17. S_outerRing_h = 2; // Second connector outer ring height
  18. S_innerRing_h = 0; // Second connector inner ring height
  19.  
  20. angle = 60; // angle
  21. radius = 10; // elbow radius
  22.  
  23. reduction_angle = 45; // diameter reduction angle std 30 - 45
  24.  
  25. // Setup,
  26. $fn = 200;
  27.  
  28. // calc
  29. reduction_h = tan( 90 - reduction_angle ) * abs( F_diameter - S_diameter ) / 2;
  30.  
  31. echo ( reduction_h );
  32.  
  33. // go
  34.  
  35. //projection(cut=true) // for testing
  36. rotate( [90,0,90] )
  37. union()
  38. {
  39. translate( [-F_diameter / 2 - radius,0,0] )
  40. rotate( [0,angle,0] )
  41. translate( [F_diameter / 2 + radius,0,0] )
  42. rotate( [180, 0, 0] )
  43. color( "red" )
  44. connector_O( F_diameter, F_length, wall_thickness, F_outerRing_h, F_innerRing_h );
  45.  
  46. color( "blue" )
  47. elbow( F_diameter, wall_thickness, angle, radius );
  48.  
  49. color( "violet" )
  50. reducer( F_diameter, S_diameter, reduction_h, wall_thickness );
  51.  
  52. translate( [0,0,reduction_h] )
  53. color( "green" )
  54. connector_O( S_diameter, S_length, wall_thickness, S_outerRing_h, S_innerRing_h );
  55. }
  56.  
  57.  
  58. // *** MODULES ***
  59.  
  60. module connector_O( diameter, length, thickness, outerRing_h, innerRing_h )
  61. {
  62. // connector
  63. l = max( outerRing_h, innerRing_h );
  64.  
  65. union()
  66. {
  67. // connector
  68. translate( [ 0, 0, -0.1 ] )
  69. difference()
  70. {
  71. cylinder( h = length + l + 0.1, d = diameter ); // connector outer diameter
  72.  
  73. translate( [0,0,-0.1] )
  74. cylinder( h = length + l + 0.3, d = diameter - thickness * 2 ); //connector inner diameter
  75. }
  76.  
  77. // Outer and inner ring
  78. translate( [0, 0, l ] )
  79. difference()
  80. {
  81. cylinder( h = 2, d = diameter + outerRing_h * 2 );
  82.  
  83. translate( [ 0, 0, -0.1 ] )
  84. cylinder( h = 2.2, d = diameter - thickness * 2 - innerRing_h * 2 );
  85. }
  86.  
  87. // Outer ring skew
  88. translate( [0, 0, l - outerRing_h] )
  89. difference()
  90. {
  91. cylinder( h = outerRing_h, d1 = diameter, d2 = diameter + outerRing_h * 2 );
  92.  
  93. translate( [0, 0, -0.1] )
  94. cylinder(h = outerRing_h + 0.2, d = diameter - thickness * 2 );
  95. }
  96.  
  97. // Inner Ring Skew
  98. translate ( [ 0, 0, l - innerRing_h ] )
  99. difference()
  100. {
  101. cylinder ( h = innerRing_h, d = diameter - thickness * 2 );
  102.  
  103. translate( [ 0, 0, -0.1 ] )
  104. cylinder ( h = innerRing_h + 0.2, d1 = diameter - thickness * 2, d2 = diameter - thickness * 2 - innerRing_h * 2 );
  105. }
  106. }
  107. }
  108.  
  109.  
  110. module elbow( diameter, thickness, angle, radius )
  111. {
  112. translate( [-diameter / 2 - radius, 0, 0] )
  113. rotate( [90,angle,0] )
  114. rotate_extrude( angle=angle )
  115. translate( [diameter / 2 + radius, 0, 0] )
  116. difference()
  117. {
  118. circle( d = diameter );
  119. circle( d = diameter - thickness * 2 );
  120. }
  121. }
  122.  
  123.  
  124. module reducer ( from_diameter, to_diameter, h, thickness )
  125. {
  126. difference()
  127. {
  128. cylinder( h = h, d1 = from_diameter, d2 = to_diameter );
  129. //translate( [0,0,-0.1] )
  130. cylinder( h = h , d1 = from_diameter - thickness * 2, d2 = to_diameter - thickness * 2 );
  131. }
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement