Dual-Hebel/3d-model.scad
2023-09-02 20:31:40 +02:00

62 lines
1.6 KiB
OpenSCAD

// Alle Längen in Millimeter!
h_0 = 6.0; // Höhe, Hauptteil
h_1 = 11.0; // Höhe, vorne
b_0 = 4.8; // unten, am Zylinderansatz
b_1 = 3.8; // unten, vorne
b_2 = 4.0*(h_0/h_1); // oben, am Zylinderansatz
b_3 = 3.0*(h_0/h_1); // oben (mittlere Höhe), vorne
l_0 = 32; // Länge, unten
l_1 = 31.5; // Länge, oben
l_2 = 13; // Länge der Fahne
CubePoints = [
[-b_0/2,0,0], // 0
[-b_1/2,l_0,0], // 1
[b_1/2,l_0,0], // 2
[b_0/2,0,0], // 3
[-b_2/2,0,h_1], // 4
[-b_3/2,l_1,h_1], // 5
[b_3/2,l_1,h_1], // 6
[b_2/2,0,h_1] // 7
];
CubeFaces = [
[0,3,2,1], // bottom
[0,1,5,4], // right
[2,3,7,6], // left
[0,4,7,3], // back
[6,5,1,2], // front
[6,7,4,5] // top
];
// Die Punkte der Flächen müssen von außen
// betrachtet gegen den Uhrzeigersinn gelistet werden!
// Siehe https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids
// insb.: https://en.wikibooks.org/wiki/File:Cube_numbers.jpg
// Debugging: Ansicht auf "Kombinierte Anzeige F12" (engl. "Thrown Together F12") stellen
// Dann: "Vorschau F5" --> Die seite der Fläche, die außen sein sollte
// ist gelb, die die innen sein sollte ist magenta.
// Wenn das Polyhedron nicht ordentlich erstellt ist, wird es zwar
// einzeln angezeigt, die Union() schlägt aber fehl!
difference()
{
union()
{
cylinder(h=6, r1=10/2, r2=9.65/2);
polyhedron(points=CubePoints, faces=CubeFaces);
};
union()
{
translate([-b_0/2,l_1-l_2-(h_1-h_0),h_1])
rotate([90,0,90])
cylinder(h=b_0, r1=h_1-h_0, r2=h_1-h_0);
translate([-b_0/2, 0, h_0])
cube([b_0, l_1-l_2-(h_1-h_0), h_1-h_0]);
}
}