/* ******************************************* Objekt Info: Waschbecken Schmutzfaenger ******************************************* Version: 30.04.2022 khf ******************************************* */ //*************** Auswahl ************* // keine //***************************************** //*************** Libraries ************ // keine //***************************************** //*************** Parameter ************* $fn=160; // Der Durchmesser der Innenseite inner_diamter = 66; // Der Durchmesser der Aussenseite outer_diameter = 71; // Der Durchmesser des Kopfflansches head_diameter = 79; // Die Hoehe des Hauptrohrs einschliesslich Bodenschmutzfaenger main_cylinder_height = 15; // Die Steigungslaenge zwischen Kopf und Hauptrohr gradient_height = 4; // Die Hoehe des oberen Rand head_cylinder_height = 1.2; // Die Dicke des Bodenfilters filter_height = 2.4; // Abstand zwischen den Filterschlitzen filter_periodic_length = 4; // Der oeffnungen im unteren Filterbereich filter_opening_ratio = 0.5; // Die Breite der Stege im Fliterbereich filter_beam_aspect_ratio = 2; // Die Breite der Seitenfilterschlitze side_slit_periodic_length = 4; // Die Breite der oefnnungen im seitlichen Filterbereich side_slit_opening_ratio = 0.5; // Die durchgaengige Wandhoehe ueber dem Seitenfilter side_slit_top_margin = 2.4; // Die durchgaengige Wandhoehe unter dem Seitenfilter side_slit_bottom_margin = 1.2; handle_height = 16; handle_lower_diameter = 10; handle_upper_diameter = 16; //***************************************** //************** Programm ************** //echo(version()); //echo(PI); module filter() { // Kopt difference(){ translate([0,0,main_cylinder_height+gradient_height]) cylinder(h=head_cylinder_height, r=head_diameter/2); translate([0,0,main_cylinder_height+gradient_height-1]) cylinder(h=head_cylinder_height+2, r=inner_diamter/2); } // Steigung unter dem Kopf difference(){ translate([0,0,main_cylinder_height]) cylinder(h=gradient_height, r1=outer_diameter/2, r2=head_diameter/2); translate([0,0,main_cylinder_height-1]) cylinder(h=main_cylinder_height+2, r=inner_diamter/2); } // Hauptrohr mit seitlichem Schlitzmuster slit_angles = floor((inner_diamter*PI/2)/side_slit_periodic_length); slit_angle_step = 180/slit_angles; difference(){ cylinder(h=main_cylinder_height, r=outer_diameter/2); translate([0,0,-1]) cylinder(h=main_cylinder_height+2, r=inner_diamter/2); translate([0,0,filter_height+side_slit_bottom_margin+(main_cylinder_height-side_slit_top_margin-filter_height-side_slit_bottom_margin)/2]) for(i=[0 : slit_angle_step : 180]){ rotate(i,[0,0,1]) cube([outer_diameter+1,side_slit_periodic_length*side_slit_opening_ratio,(main_cylinder_height-filter_height-side_slit_bottom_margin-side_slit_top_margin)],center=true); } } // Unteres Filtermuster final_ring = floor((outer_diameter/2)/filter_periodic_length)-1; for(i=[0:final_ring]){ difference(){ cylinder(h=filter_height, r=(i+1)*filter_periodic_length); translate([0,0,-1]) cylinder( h=filter_height+2, r=(i+filter_opening_ratio)*filter_periodic_length); } } // Unterer Filterstrahl translate([0,0,filter_height/2]){ cube([ (outer_diameter+inner_diamter)/2, filter_height*filter_beam_aspect_ratio, filter_height], center=true); cube([ filter_height*filter_beam_aspect_ratio, (outer_diameter+inner_diamter)/2, filter_height], center=true); } // Mittlerer Griff cylinder(r=handle_lower_diameter/2,h=filter_height); translate([0,0,filter_height]) cylinder(r1=handle_lower_diameter/2, r2=handle_upper_diameter/2, h=handle_height); } filter();