2D-Formen: square, circle, polygon
Begriffe vorab
- 2D-Objekt: Flache Form in der xy-Ebene, die erst durch Extrusion zum Körper wird.
- Polygon: Vieleck aus Punkten und Pfaden.
- Pfad (path): Reihenfolge der Punkte, die einen Umriss bilden.
- Konvexität: Maximale Zahl von Vorderseiten, die ein Strahl durchdringen kann.
- Reguläres Vieleck: Vieleck mit gleichen Seiten, z. B. per circle mit kleinem $fn.
Warum 2D?
Viele Bauteile sind Profile mit Tiefe. Man zeichnet erst die Form in 2D und extrudiert sie dann zum Körper (siehe Extrusionslektion). 2D-Objekte liegen in der xy-Ebene und lassen sich wie 3D-Körper transformieren und mit union, difference und intersection verknüpfen.
square()
square(size, center): size ist eine Zahl (Quadrat) oder [x, y] (Rechteck), Standard [1, 1]. Das Quadrat liegt im ersten Quadranten; center = true zentriert es im Ursprung.
circle()
circle(r) oder circle(d = …) (d ist nach Angabe der Doku nach Version 2014.03 verfügbar). Standard: r = 1. Die Glätte steuern $fn, $fa und $fs. Ellipsen entstehen mit scale() oder resize(), reguläre Vielecke mit circle(r = 1, $fn = N), wobei N die Seitenzahl ist.
polygon()
polygon(points, paths, convexity): points ist eine Liste von [x, y] (Index ab 0), paths legt die Reihenfolge fest. Löcher entstehen, indem man weitere Pfade angibt: Die Doku sagt, sekundäre Formen werden von der primären abgezogen wie bei difference(). Ohne paths werden alle Punkte in Reihenfolge verbunden.
// Profil mit gerundeter und eckiger Hälfte
module profil() {
union() {
square([20, 10]);
translate([20, 5]) circle(d = 10, $fn = 48);
}
}
linear_extrude(5) profil();
// Dreieck als polygon
translate([0, 30, 0])
linear_extrude(3)
polygon(points = [[0, 0], [20, 0], [10, 17]]);
// Rahmen: Quadrat mit Loch über zwei Pfade
translate([30, 30, 0])
linear_extrude(3)
polygon(
points = [[0,0],[20,0],[20,20],[0,20], [5,5],[15,5],[15,15],[5,15]],
paths = [[0,1,2,3], [4,5,6,7]]
);
// Sechseck über circle
translate([60, 0, 0])
linear_extrude(3) circle(r = 10, $fn = 6);
Der Rahmen nutzt zwei Pfade: Der erste ist der Außenumriss, der zweite das Loch. Ein reguläres Sechseck entsteht mit $fn = 6 – der Kreis wird dann aus sechs Segmenten angenähert.
Ein Kreis mit $fn = 3, 4, 5, 6 … ist die schnellste Art, ein regelmäßiges Vieleck zu zeichnen.
Zum Selbermachen
- Zeichne ein Achteck per circle und ein Stern-Polygon per Punktliste.
- Baue einen Rahmen mit rundem Loch (Kreis abziehen).
Verwandte Themen
OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.
Prüfstatus: Belegt (Stand 1. Oktober 2026): Signaturen und Standardwerte von square, circle und polygon, die Loch-Regel über Pfade, Ellipsen via scale/resize und reguläre Vielecke über $fn wurden gegen die Seite „2D Primitives“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.
Quellen
- OpenSCAD User Manual – 2D Primitives (en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_Primitives)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)
Text im Modell: text() und Schriften
Begriffe vorab
- text(): Erzeugt 2D-Text aus einer Zeichenkette.
- Baseline: Grundlinie, an der Buchstaben stehen.
- halign / valign: Horizontale und vertikale Ausrichtung.
- Schriftname: Name mit optionalem Stil, z. B. „Liberation Sans:style=Bold“.
- Extrusion: Gibt dem 2D-Text eine Höhe.
text() erzeugt 2D
text() liefert 2D-Geometrie. Für gedruckte Beschriftung wird er wie jede 2D-Form extrudiert: linear_extrude(4) text("Text");.
Parameter
- text: die Zeichenkette.
- size: Höhe, Standard 10. In westlicher Schrift sind Großbuchstaben ungefähr so hoch (die tatsächliche Höhe hängt von der Schrift ab).
- font: logischer Schriftname, Standard „Liberation Sans“. Stil mit Doppelpunkt:
"Liberation Sans:style=Bold Italic".
- halign:
"left" (Standard), "center", "right".
- valign:
"top", "center", "baseline" (Standard), "bottom".
- spacing: Zeichenabstand, Standard 1.
- direction:
"ltr" (Standard), "rtl", "ttb", "btt".
- language, script: Lokalisierung.
- $fn, $fs, $fa: Kurvenunterteilung.
Ausrichtung
Mit valign = "baseline" sitzen verschiedene Texte wie auf liniertem Papier auf derselben Grundlinie; die anderen Optionen richten sich nach der Begrenzungsbox. Horizontal bezieht sich die Ausrichtung auf die linke, mittlere oder rechte Kante des Textes.
Schriften und Portabilität
Mitgeliefert und deshalb empfehlenswert für portable Modelle sind Liberation Mono, Liberation Sans und Liberation Serif. Welche Schriften dein System kennt, zeigt die Schriftenliste im Menü „Window“. Wer ein Modell weitergibt, sollte mitgelieferte Schriften verwenden, sonst sieht es auf anderen Rechnern anders aus.
// Namensschild: Platte mit erhabener Beschriftung
cube([60, 20, 3]);
translate([30, 10, 3])
linear_extrude(2)
text("OpenSCAD", size = 8, halign = "center", valign = "center",
font = "Liberation Sans:style=Bold");
Die Platte ist 60 × 20 × 3, der Text sitzt mittig auf der Oberseite und ragt 2 Einheiten heraus. halign und valign auf „center“ machen die Positionierung leicht: Der Mittelpunkt des Textes liegt genau am verschobenen Punkt.
Die Doku merkt an, dass size auf einer historisch ungenauen Berechnung beruht: Die tatsächliche Höhe von Großbuchstaben kann je nach Schrift etwas kleiner ausfallen. Miss nach, wenn es auf Millimeter ankommt.
Zentriere Beschriftungen mit halign und valign auf „center“, statt Positionen auszuprobieren.
Zum Selbermachen
- Beschrifte eine Platte mit deinem Namen und probiere drei Schriftstile.
- Prüfe die tatsächliche Höhe eines Großbuchstabens mit der Messfunktion der Vorschau.
Verwandte Themen
OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.
Prüfstatus: Belegt (Stand 1. Oktober 2026): Parameter, Standardwerte, Schriftnamen-Syntax, die drei mitgelieferten Schriften, das Verhalten von baseline sowie die Extrusion mit linear_extrude wurden gegen die Seite „Text“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.
Quellen
- OpenSCAD User Manual – Text (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Text)
- OpenSCAD User Manual – 2D to 3D Extrusion (en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_to_3D_Extrusion)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)
Zwischen 2D und 3D: Extrusion und Projektion
Begriffe vorab
- linear_extrude: Zieht eine 2D-Form entlang der Z-Achse zu einem Körper.
- rotate_extrude: Dreht eine 2D-Form um die Z-Achse zu einem Rotationskörper.
- twist: Verdrehung während der Extrusion in Grad.
- slices: Zwischenschritte entlang der Extrusion.
- projection: Wandelt einen 3D-Körper in eine 2D-Form um.
linear_extrude()
Parameter: height (positiv), center (zentriert um Z = 0), twist (Verdrehung in Grad), scale (Skalierung über die Höhe, Zahl oder Vektor), slices (Zwischenebenen), convexity (Renderhinweis) und $fn. Wichtig: Die Doku verlangt benannte Parameter wegen einer Abwärtskompatibilität. Bei einem Vektor als scale können die Seitenwände unebene Flächen bekommen; empfohlen wird twist = 0 mit passender slices-Zahl.
rotate_extrude()
Parameter: angle (Standard 360, Rechte-Hand-Regel), convexity und die Auflösungsvariablen. Die Doku nennt außerdem start (Startwinkel), aber nur für Entwicklungs-Snapshots. Zwingende Regel: Die 2D-Form muss vollständig auf einer Seite der Y-Achse liegen (empfohlen: rechts, also x ≥ 0). Berührt sie die Achse, muss das eine Linie sein, kein Punkt. Schrauben oder Gewinde sind damit nicht zuverlässig herstellbar.
// Verdrehter Stab
linear_extrude(height = 30, twist = 90, slices = 40, convexity = 5)
translate([4, 0]) square([8, 3], center = true);
// Rotationskörper: Vase aus einem Halbprofil
translate([40, 0, 0])
rotate_extrude($fn = 64)
polygon([[0,0],[10,0],[12,15],[8,30],[9,32],[0,32]]);
// Ring mit 270 Grad
translate([80, 0, 0])
rotate_extrude(angle = 270, $fn = 48)
translate([8, 0]) circle(r = 3, $fn = 24);
Die Vase ist ein Halbprofil, das nur auf der rechten Seite der Y-Achse liegt. Beim Ring wird ein kleiner Kreis um 8 Einheiten nach rechts verschoben (x ≥ 0) und dann um 270° gedreht.
projection()
projection(cut = false) erzeugt aus einem 3D-Körper eine 2D-Zeichnung in der xy-Ebene bei z = 0. Mit cut = true werden nur Punkte bei z = 0 betrachtet – ein Schnitt, der eine Scheibe liefert. Mit cut = false (Standard) werden auch Punkte darüber und darunter einbezogen – ein echter Schattenwurf. Für Seitenansichten dreht man das Modell vorher und verschiebt es aus der Ebene. Das Ergebnis lässt sich als DXF exportieren.
// Schnitt (cut = true) und Silhouette (cut = false) einer Kugel
module koerper() { translate([0, 0, 4]) sphere(r = 10, $fn = 48); }
projection(cut = true) koerper(); // Kreis mit Radius ~9,2
translate([30, 0, 0]) projection(cut = false) koerper(); // Kreis mit Radius 10
Im Beispiel liegt der Kugelmittelpunkt über der Ebene z = 0: Der Schnitt ist kleiner als die volle Silhouette. Das Ergebnis ist 2D: Exportiere es als SVG oder DXF, nicht als STL (ein reines 2D-Ergebnis lässt sich nicht als STL ausgeben).
Rotationskörper brauchen immer ein halbes Profil – denke von der Drehachse nach außen.
Zum Selbermachen
- Zeichne das Profil einer Schachfigur und drehe es per rotate_extrude.
- Wandle ein beliebiges 3D-Modell per projection(cut = true) in einen Schnitt um.
Verwandte Themen
OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.
Prüfstatus: Belegt (Stand 1. Oktober 2026): Parameter von linear_extrude (inkl. benannter Parameter und scale-Warnung), rotate_extrude (angle, Seitenregel zur Y-Achse, Linie statt Punkt, Hinweis zu Gewinden, start nur in Snapshots) und projection (cut true/false) wurden gegen die Seiten „2D to 3D Extrusion“ und „3D to 2D Projection“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Kreisradien im Kommentar des Projektionsbeispiels (rechnerische Näherung, nicht ausgemessen). Außerdem nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.
Quellen
- OpenSCAD User Manual – 2D to 3D Extrusion (en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_to_3D_Extrusion)
- OpenSCAD User Manual – 3D to 2D Projection (en.wikibooks.org/wiki/OpenSCAD_User_Manual/3D_to_2D_Projection)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)