Dual-Hebel/3d-model.scad

69 lines
1.9 KiB
OpenSCAD
Raw Normal View History

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
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);
}