// Trichter $fn = 64; // Parameter top_r = 40; // Radius oben cone_h = 50; // Höhe des Kegelabschnitts spout_r = 6; // Radius des Rohrs spout_h = 25; // Länge des geraden Rohrs wall = 2; // Wandstärke ext_h = 20; // Länge der abgewinkelten Verlängerung angle = 135; // Winkel der Verlängerung in Grad spout_h2 = 25; // Länge des zweiten Ausgussrohrs angle2 = 45; // Winkel von Knie 2 difference() { // --- Außenhülle --- union() { // Kegelabschnitt cylinder(h=cone_h, r1=spout_r, r2=top_r); // Gerades Ausgussrohr translate([0, 0, -spout_h]) cylinder(h=spout_h, r=spout_r); // Knie 1 hull() { translate([0, 0, -spout_h]) cylinder(h=0.01, r=spout_r); translate([0, 0, -spout_h]) rotate([angle, 0, 0]) cylinder(h=0.01, r=spout_r); } // Abgewinkelte Verlängerung translate([0, 0, -spout_h]) rotate([angle, 0, 0]) cylinder(h=ext_h, r=spout_r); // Knie 2 + zweites Ausgussrohr translate([0, 0, -spout_h]) rotate([angle, 0, 0]) translate([0, 0, ext_h]) { hull() { cylinder(h=0.01, r=spout_r); rotate([angle2, 0, 0]) cylinder(h=0.01, r=spout_r); } rotate([angle2, 0, 0]) cylinder(h=spout_h2, r=spout_r); } } // --- Innenkanal --- union() { // Kegel innen translate([0, 0, wall]) cylinder(h=cone_h, r1=spout_r - wall, r2=top_r - wall); // Gerades Rohr innen translate([0, 0, -(spout_h + 1)]) cylinder(h=spout_h + 1 + wall, r=spout_r - wall); // Knie 1 innen hull() { translate([0, 0, -spout_h]) cylinder(h=0.01, r=spout_r - wall); translate([0, 0, -spout_h]) rotate([angle, 0, 0]) cylinder(h=0.01, r=spout_r - wall); } // Verlängerung innen translate([0, 0, -spout_h]) rotate([angle, 0, 0]) translate([0, 0, -1]) cylinder(h=ext_h + 2, r=spout_r - wall); // Knie 2 innen + zweites Rohr innen translate([0, 0, -spout_h]) rotate([angle, 0, 0]) translate([0, 0, ext_h]) { hull() { cylinder(h=0.01, r=spout_r - wall); rotate([angle2, 0, 0]) cylinder(h=0.01, r=spout_r - wall); } rotate([angle2, 0, 0]) translate([0, 0, -1]) cylinder(h=spout_h2 + 2, r=spout_r - wall); } } }