Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Elbow fitting O/O ver 2.0
- // wariat 06.2020 - 11.2022
- // CONFIG
- wall_thickness=3; // wall thickness
- // FIRST CONNECTOR
- F_diameter = 40; // First connector Outer diameter
- F_length = 50; // First connector length
- F_outerRing_h = 2; // First connector outer ring height
- F_innerRing_h = 0; // First connector inner ring height
- // SECOND CONNECTOR
- S_diameter = 50; // Second connector Outer diameter
- S_length = 60; // Second connector length
- S_outerRing_h = 2; // Second connector outer ring height
- S_innerRing_h = 0; // Second connector inner ring height
- angle = 60; // angle
- radius = 10; // elbow radius
- reduction_angle = 45; // diameter reduction angle std 30 - 45
- // Setup,
- $fn = 200;
- // calc
- reduction_h = tan( 90 - reduction_angle ) * abs( F_diameter - S_diameter ) / 2;
- echo ( reduction_h );
- // go
- //projection(cut=true) // for testing
- rotate( [90,0,90] )
- union()
- {
- translate( [-F_diameter / 2 - radius,0,0] )
- rotate( [0,angle,0] )
- translate( [F_diameter / 2 + radius,0,0] )
- rotate( [180, 0, 0] )
- color( "red" )
- connector_O( F_diameter, F_length, wall_thickness, F_outerRing_h, F_innerRing_h );
- color( "blue" )
- elbow( F_diameter, wall_thickness, angle, radius );
- color( "violet" )
- reducer( F_diameter, S_diameter, reduction_h, wall_thickness );
- translate( [0,0,reduction_h] )
- color( "green" )
- connector_O( S_diameter, S_length, wall_thickness, S_outerRing_h, S_innerRing_h );
- }
- // *** MODULES ***
- module connector_O( diameter, length, thickness, outerRing_h, innerRing_h )
- {
- // connector
- l = max( outerRing_h, innerRing_h );
- union()
- {
- // connector
- translate( [ 0, 0, -0.1 ] )
- difference()
- {
- cylinder( h = length + l + 0.1, d = diameter ); // connector outer diameter
- translate( [0,0,-0.1] )
- cylinder( h = length + l + 0.3, d = diameter - thickness * 2 ); //connector inner diameter
- }
- // Outer and inner ring
- translate( [0, 0, l ] )
- difference()
- {
- cylinder( h = 2, d = diameter + outerRing_h * 2 );
- translate( [ 0, 0, -0.1 ] )
- cylinder( h = 2.2, d = diameter - thickness * 2 - innerRing_h * 2 );
- }
- // Outer ring skew
- translate( [0, 0, l - outerRing_h] )
- difference()
- {
- cylinder( h = outerRing_h, d1 = diameter, d2 = diameter + outerRing_h * 2 );
- translate( [0, 0, -0.1] )
- cylinder(h = outerRing_h + 0.2, d = diameter - thickness * 2 );
- }
- // Inner Ring Skew
- translate ( [ 0, 0, l - innerRing_h ] )
- difference()
- {
- cylinder ( h = innerRing_h, d = diameter - thickness * 2 );
- translate( [ 0, 0, -0.1 ] )
- cylinder ( h = innerRing_h + 0.2, d1 = diameter - thickness * 2, d2 = diameter - thickness * 2 - innerRing_h * 2 );
- }
- }
- }
- module elbow( diameter, thickness, angle, radius )
- {
- translate( [-diameter / 2 - radius, 0, 0] )
- rotate( [90,angle,0] )
- rotate_extrude( angle=angle )
- translate( [diameter / 2 + radius, 0, 0] )
- difference()
- {
- circle( d = diameter );
- circle( d = diameter - thickness * 2 );
- }
- }
- module reducer ( from_diameter, to_diameter, h, thickness )
- {
- difference()
- {
- cylinder( h = h, d1 = from_diameter, d2 = to_diameter );
- //translate( [0,0,-0.1] )
- cylinder( h = h , d1 = from_diameter - thickness * 2, d2 = to_diameter - thickness * 2 );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement