Mit square(), circle() und polygon() erstellst du in OpenSCAD zweidimensionale Formen. In diesem Tutorial lernst du ihre Abmessungen und Positionen kennen und konstruierst daraus eine flache Montagekontur mit vier Befestigungslöchern.
Voraussetzungen
Du brauchst OpenSCAD und die Grundlagen aus Teil 13: Eigene Funktionen. Für das Praxisprojekt verwenden wir außerdem difference(), translate() und for aus den bisherigen Lektionen.
Von 3D-Körpern zu 2D-Konturen
Bisher haben wir mit Quadern, Zylindern und Kugeln gearbeitet. Jetzt beschreiben wir zunächst nur eine Fläche in der XY-Ebene. Ihre Punkte haben eine X- und eine Y-Koordinate; eine Bauteilhöhe gibt es noch nicht.
Diese Konturen bilden die Grundlage für Profile, Platten und andere Bauteile, denen wir später durch Extrusion eine dritte Dimension geben.
Lernziel: Nach dieser Lektion kannst du Rechtecke, Kreise und eigene Polygone erzeugen, ihre Positionen gezielt bestimmen und 2D-Formen mit booleschen Operationen kombinieren.
Rechtecke und Quadrate mit square()
Ein Quadrat mit 30 Modelleinheiten Seitenlänge entsteht so:
square(30);
Für technische Beispiele behandeln wir eine Modelleinheit wie bisher als einen Millimeter. OpenSCAD selbst legt keine physikalische Einheit fest.
Ein Rechteck benötigt zwei Abmessungen:
square([60, 40]);
Der erste Wert beschreibt die Breite entlang der X-Achse, der zweite die Tiefe entlang der Y-Achse. Ohne weitere Angabe liegt die linke untere Ecke im Ursprung. Das Rechteck reicht hier von X = 0 bis 60 und von Y = 0 bis 40.
Ein Rechteck am Ursprung zentrieren
square([60, 40], center=true);
Mit center=true liegt der Mittelpunkt im Ursprung. Die Grenzen sind jetzt X = −30 bis 30 und Y = −20 bis 20.
Das ist besonders hilfreich bei symmetrischen Konturen. Entscheide bewusst, ob du von einer Ecke oder vom Mittelpunkt aus konstruierst, und leite davon die weiteren Positionen ab.
Kreise mit circle()
Ein Kreis wird am Ursprung zentriert erzeugt:
circle(d=20, $fn=64);
Der Durchmesser beträgt 20. Alternativ kannst du den Radius angeben:
circle(r=10, $fn=64);
Beide Beispiele ergeben dieselbe Kontur. Benenne den Parameter ausdrücklich: circle(10) verwendet einen Radius von 10 und ergibt damit einen Durchmesser von 20.
$fn bestimmt die Anzahl der Segmente. Mit 64 Segmenten ist der Kreis für unsere Beispiele ausreichend fein aufgelöst. Auch ein fein aufgelöster Kreis besteht in OpenSCAD aus geraden Segmenten.
Einen Kreis verschieben
translate([30, 20, 0])
circle(d=10, $fn=64);
Der Kreismittelpunkt liegt jetzt bei X = 30 und Y = 20. Die Z-Koordinate bleibt 0, damit die Kontur in der XY-Ebene liegt.
Eigene Konturen mit polygon()
Mit polygon() definierst du eine geschlossene Fläche über ihre Eckpunkte:
polygon(points=[
[0, 0],
[50, 0],
[25, 30]
]);
Damit entsteht ein Dreieck. OpenSCAD verbindet die Punkte in der angegebenen Reihenfolge und schließt die Kontur vom letzten zum ersten Punkt automatisch.
Du musst den ersten Punkt am Ende der Liste nicht wiederholen.
Die Reihenfolge der Punkte
Gehe beim Auflisten einmal entlang des Randes, beispielsweise gegen den Uhrzeigersinn. Springe nicht zwischen gegenüberliegenden Ecken hin und her: Sich selbst kreuzende Kanten beschreiben keine einfache, eindeutige Fläche.
Eine Kontur mit abgeschrägten oberen Ecken könnte so aussehen:
breite = 80;
tiefe = 50;
fase = 10;
polygon(points=[
[0, 0],
[breite, 0],
[breite, tiefe - fase],
[breite - fase, tiefe],
[fase, tiefe],
[0, tiefe - fase]
]);
Die Schräge wird über fase gesteuert. Wähle hier einen positiven Wert, der kleiner als die Tiefe und kleiner als die halbe Breite ist, damit die Kontur ihre vorgesehene Form behält.
2D-Formen mit difference() kombinieren
Die booleschen Operationen aus den bisherigen Lektionen funktionieren auch mit flachen Formen:
| Operation | Wirkung bei 2D-Formen |
|---|---|
union() |
Flächen vereinigen |
difference() |
Flächen vom ersten Objekt abziehen |
intersection() |
Nur die gemeinsame Fläche behalten |
Beispiel für ein Rechteck mit einem kreisförmigen Ausschnitt:
difference() {
square([60, 40]);
translate([30, 20, 0])
circle(d=12, $fn=64);
}
Im Gegensatz zur 3D-Bohrung brauchst du hier keinen Überstand in Z-Richtung. Beide Formen sind zweidimensional und liegen in derselben Ebene.
Mische in einer solchen Operation keine 2D-Flächen und 3D-Körper. Verwende beispielsweise einen Kreis als Schneidfläche für ein Rechteck. Eine Bohrung durch einen Quader benötigt dagegen einen dreidimensionalen Schneidkörper, etwa einen Zylinder.
Praxisprojekt: parametrische 2D-Montageplatte
Wir kombinieren eine polygonale Außenkontur mit vier kreisförmigen Befestigungslöchern. Die Platte ist zunächst eine Fläche; ihre Dicke ergänzen wir später.
Parameter und berechnete Positionen
Die Außenkontur ist 100 mm breit und 60 mm tief. Die beiden oberen Ecken erhalten eine Schräge von 8 mm. Die Lochmittelpunkte liegen jeweils 12 mm von den zugehörigen Außenkanten entfernt.
Die Position auf der gegenüberliegenden Seite berechnen wir aus breite - rand beziehungsweise tiefe - rand. So bleibt der Randabstand bei Größenänderungen erhalten.
Vollständiges Beispiel
// Parameter
breite = 100;
tiefe = 60;
fase = 8;
rand = 12;
bohrung_d = 6;
// Berechnungen
x_pos = [rand, breite - rand];
y_pos = [rand, tiefe - rand];
// 2D-Modell
difference() {
polygon(points=[
[0, 0],
[breite, 0],
[breite, tiefe - fase],
[breite - fase, tiefe],
[fase, tiefe],
[0, tiefe - fase]
]);
for (x = x_pos)
for (y = y_pos)
translate([x, y, 0])
circle(d=bohrung_d, $fn=64);
}
Kopiere den vollständigen Code in eine neue OpenSCAD-Datei und öffne die Vorschau mit F5. Wähle die Ansicht von oben, um Außenkontur und Lochpositionen gut zu erkennen.
Teste anschließend breite = 120; oder tiefe = 80;. Die Lochpositionen passen sich an. Prüfe bei anderen Parameterkombinationen auch die schrägen Ecken: Ein fester Randabstand zu X- und Y-Kanten garantiert nicht für jede beliebige Schräge genügend Material um die oberen Löcher.
Mitmach-Aufgabe
Erstelle eine rechteckige 2D-Platte mit vier Löchern.
| Parameter | Wert |
|---|---|
| Breite | 80 mm |
| Tiefe | 50 mm |
| Randabstand der Lochmittelpunkte | 10 mm |
| Lochdurchmesser | 5 mm |
Verwende square(), circle(), difference() und zwei verschachtelte for-Schleifen. Berechne die Positionen aus den Abmessungen, statt alle Koordinaten fest einzutragen.
Musterlösung
breite = 80;
tiefe = 50;
rand = 10;
bohrung_d = 5;
difference() {
square([breite, tiefe]);
for (x = [rand, breite - rand])
for (y = [rand, tiefe - rand])
translate([x, y, 0])
circle(d=bohrung_d, $fn=64);
}
Ändere die Breite auf 100 mm. Die rechten Lochmittelpunkte wandern von X = 70 auf X = 90; der Randabstand bleibt bei 10 mm.
Was haben wir gelernt?
square()erzeugt Quadrate und Rechtecke.center=truezentriert ein Rechteck am Ursprung.circle()erzeugt einen Kreis mit Radius oder Durchmesser.polygon()beschreibt eigene Konturen über geordnete Eckpunkte.- Boolesche Operationen verbinden oder beschneiden auch 2D-Flächen.
- Parameter und Schleifen machen Lochmuster anpassbar.
Häufige Fragen
Warum sieht eine 2D-Form in der Vorschau wie eine dünne Platte aus?
OpenSCAD stellt 2D-Flächen mit einer kleinen sichtbaren Dicke dar. Diese Darstellung macht aus der Kontur noch keinen Körper mit einer konstruierten Bauteilhöhe. Entscheidend ist, dass dein Modell bisher ausschließlich 2D-Geometrie enthält. Die Darstellungsweise beschreibt auch das OpenSCAD-Handbuch zu 2D-Grundformen.
Kann ich die 2D-Kontur direkt als STL für den 3D-Druck exportieren?
Für einen druckbaren Körper brauchst du eine Höhe. Mit linear_extrude() kannst du die 2D-Kontur zu einem dreidimensionalen Bauteil extrudieren. Das ist der nächste Schritt im Kurs.
Warum ist mein Polygon fehlerhaft?
Prüfe die Reihenfolge der Eckpunkte, sich kreuzende Kanten und doppelte Punkte. Die Eckpunkte sollen den Rand der Fläche nacheinander beschreiben. Prüfe bei parametrischen Konturen außerdem, ob die gewählten Maße noch eine gültige Form ergeben.
Im nächsten Teil
Als Nächstes geben wir unseren flachen Konturen mit linear_extrude() eine Höhe. So entsteht aus der 2D-Montagekontur eine Platte mit einer definierten Materialstärke.
Weiter geht es mit Teil 15: Lineare Extrusion und Rotationskörper.
Passendes Cheatsheet
Im Cheatsheet „Grundbefehle und Syntax“ findest du einen kompakten Überblick über Grundformen und den Einstieg in die Extrusion. Du kannst das Cheatsheet direkt als PDF herunterladen.
