// Alle Längen in Millimeter! d_0 = 10.0; // Durchmesser Knopf unten d_1 = 9.65; // Durchmesser Knopf oben 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.0; // Länge, unten l_1 = 31.5; // Länge, oben l_2 = 13.0; // Länge der Fahne t_b = 5.0; // Tiefe des Bohrlochs d_b = 4.0; // Durchmesser des Bohrlochs // Auflösung: $fa = 0.1; $fs = 0.1; 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() { difference() { 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); translate([-b_0/2, 0, h_0]) cube([b_0, l_1-l_2-(h_1-h_0), h_1-h_0]); } } cylinder(h=t_b, r1=d_b/2, r2=d_b/2); }