include use use use // Höhe Rohr h = 35; // [10:60] // Innendurchmesser Rohr rd = 25.4; // Neigungswinkel zu Senkrechten angel= 20; // [0:90] // Wandstärke wall = 4; // [1:5] // Form Grundplatte form = "r"; // [r:rund, q=:Quadrat] // Höhe Grundplatte hg = 5; // [1:10] // Durchmesser Grundplatte d = 60; // [10:100] // Kehle Zwischen Rohr und Grundplatte kehle = 8; //[1:20] // Riffel an der Unterseite radius = 2; //[0:5] /* [Hidden] */ $fa = 1; $fs = 0.4; // Rundung fillet = 2; // [0:5] difference() { union() { rotate([0, -angel, 0]) { // Rohr gefast difference() { tube(h=2*h, id=rd, wall=wall, center=true); translate([0, 0, h]) fillet_cylinder_mask(r=rd/2 + wall, fillet=fillet); } // Füllung für Rohr cylinder(h=tan(angel)*rd + sin(angel)*hg + hg , d=rd, center=true); } // Grundplatte if(form == "r") { cyl(l=hg, d=d, fillet=fillet); } else { cuboid([d, d, hg], fillet=fillet); } } // unteren Überstand entfernen translate([0, 0, -(hg + h/2)]) cylinder(d=d + tan(angel)*h , h=h+hg, center=true); } // kehle zwischen Rohr und Grundplatte skew_xy(xa=-angel, ya=0) scale([1/cos(angel), 1, 1]) translate([0, 0, hg/2]) rotate([180, 0, 0]) fillet_hole_mask(d=rd + 2*wall, fillet=kehle, overage=0); // Riffel an der Unterseite difference() { for (i=[1:d/radius/4]){ translate([4*i*radius - d/2 - radius, d/2, -hg/2]) rotate([90,0,0]) cylinder(h=d, r=radius); } translate([0, 0, -hg/2 - radius]) tube(h=2*radius, id2=d, id1=d-4*fillet, od=2*d); }