2023-09-02 18:31:40 +00:00
|
|
|
// Alle Längen in Millimeter!
|
|
|
|
|
2023-09-02 18:51:00 +00:00
|
|
|
d_0 = 10.0; // Durchmesser Knopf unten
|
|
|
|
d_1 = 9.65; // Durchmesser Knopf oben
|
2023-09-02 18:31:40 +00:00
|
|
|
h_0 = 6.0; // Höhe, Hauptteil
|
|
|
|
h_1 = 11.0; // Höhe, vorne
|
2023-09-02 10:55:18 +00:00
|
|
|
b_0 = 4.8; // unten, am Zylinderansatz
|
|
|
|
b_1 = 3.8; // unten, vorne
|
2023-09-02 18:31:40 +00:00
|
|
|
b_2 = 4.0*(h_0/h_1); // oben, am Zylinderansatz
|
|
|
|
b_3 = 3.0*(h_0/h_1); // oben (mittlere Höhe), vorne
|
2023-09-02 18:51:00 +00:00
|
|
|
l_0 = 32.0; // Länge, unten
|
2023-09-02 10:55:18 +00:00
|
|
|
l_1 = 31.5; // Länge, oben
|
2023-09-02 18:51:00 +00:00
|
|
|
l_2 = 13.0; // Länge der Fahne
|
|
|
|
t_b = 5.0; // Tiefe des Bohrlochs
|
|
|
|
d_b = 4.0; // Durchmesser des Bohrlochs
|
2023-09-02 10:55:18 +00:00
|
|
|
|
2023-09-02 18:57:05 +00:00
|
|
|
// Auflösung:
|
|
|
|
$fa = 0.1;
|
|
|
|
$fs = 0.1;
|
|
|
|
|
2023-09-02 10:55:18 +00:00
|
|
|
CubePoints = [
|
2023-09-02 18:31:40 +00:00
|
|
|
[-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
|
|
|
|
];
|
2023-09-02 10:55:18 +00:00
|
|
|
|
|
|
|
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
|
2023-09-02 18:31:40 +00:00
|
|
|
];
|
2023-09-02 10:55:18 +00:00
|
|
|
|
2023-09-02 18:31:40 +00:00
|
|
|
// 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!
|
2023-09-02 10:55:18 +00:00
|
|
|
|
2023-09-02 18:31:40 +00:00
|
|
|
difference()
|
2023-09-02 10:55:18 +00:00
|
|
|
{
|
2023-09-02 18:51:00 +00:00
|
|
|
difference()
|
2023-09-02 18:31:40 +00:00
|
|
|
{
|
2023-09-02 18:51:00 +00:00
|
|
|
union()
|
|
|
|
{
|
|
|
|
cylinder(h=h_0, r1=d_0/2, r2=d_1/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);
|
2023-09-02 10:55:18 +00:00
|
|
|
|
2023-09-02 18:51:00 +00:00
|
|
|
translate([-b_0/2, 0, h_0])
|
|
|
|
cube([b_0, l_1-l_2-(h_1-h_0), h_1-h_0]);
|
|
|
|
}
|
2023-09-02 18:31:40 +00:00
|
|
|
}
|
2023-09-02 18:51:00 +00:00
|
|
|
cylinder(h=t_b, r1=d_b/2, r2=d_b/2);
|
|
|
|
}
|