81 lines
1.7 KiB
OpenSCAD
81 lines
1.7 KiB
OpenSCAD
include <BOSL/constants.scad>
|
|
use <BOSL/shapes.scad>
|
|
use <BOSL/masks.scad>
|
|
use <BOSL/transforms.scad>
|
|
|
|
// 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);
|
|
} |