Extrudiere 2D-Konturen in OpenSCAD: Platten mit linear_extrude(), Ringe und Drehknöpfe mit rotate_extrude(). Mit Codebeispielen und Übung.
Voraussetzungen
Du brauchst OpenSCAD und die Grundlagen aus Teil 14. Die Beispiele verwenden die klassische OpenSCAD-Syntax; eine Ausführung mit einer konkreten Softwareversion wurde hier nicht geprüft. Wir behandeln eine Modelleinheit als einen Millimeter.
Kapitel 4 – Von 2D zu 3D
Im vorherigen Teil haben wir die wichtigsten 2D-Grundformen von OpenSCAD kennengelernt:
square();
circle();
polygon();
Diese Formen besitzen zunächst keine Höhe und liegen nur in der XY-Ebene.
Jetzt machen wir aus diesen Konturen dreidimensionale Bauteile.
Dafür stehen zwei besonders wichtige Befehle zur Verfügung:
linear_extrude();
rotate_extrude();
Lernziel:
Nach dieser Lektion kannst du 2D-Konturen linear extrudieren und um eine Achse rotieren. Damit lassen sich Platten, Profile, Ringe, Knöpfe und viele weitere Bauteile erzeugen.
Was bedeutet Extrusion?
Bei einer Extrusion wird eine zweidimensionale Kontur in eine dritte Dimension erweitert.
Zum Beispiel:
Rechteck → Quader
Kreis → Zylinder
freie Kontur → individueller 3D-Körper
Lineare Extrusion mit linear_extrude()
Ein einfaches Beispiel:
linear_extrude(height=10)
square([40, 30]);
Das 2D-Rechteck wird 10 mm in Z-Richtung extrudiert.
Das Ergebnis besitzt:
| Richtung | Größe |
|---|---|
| X | 40 mm |
| Y | 30 mm |
| Z | 10 mm |
Parametrische lineare Extrusion
breite = 60;
tiefe = 40;
dicke = 5;
linear_extrude(
height=dicke
)
square([
breite,
tiefe
]);
Auch Extrusionen können also vollständig parametrisch aufgebaut werden.
Komplexe 2D-Konturen extrudieren
Es muss nicht nur eine einzelne Grundform extrudiert werden.
Beispiel:
linear_extrude(height=5)
difference() {
square([
60,
40
]);
translate([
30,
20
])
circle(
d=20,
$fn=64
);
}
Zuerst wird in 2D ein Kreis aus dem Rechteck ausgeschnitten.
Anschließend wird die komplette Kontur extrudiert.
Verschachtelung verstehen
Der Aufbau:
linear_extrude()
difference() {
square();
circle();
}
wird von innen nach außen verarbeitet:
1. square()
2. circle()
3. difference()
4. linear_extrude()
Man kann sich den Aufbau als Baum vorstellen:
linear_extrude
└── difference
├── square
└── circle
Montageplatte aus Teil 14 extrudieren
Unsere bekannte 2D-Montageplatte lässt sich direkt in ein 3D-Bauteil überführen:
breite = 120;
tiefe = 70;
dicke = 5;
bohrung_d = 6;
rand_x = 12;
rand_y = 12;
x_pos = [
rand_x,
breite - rand_x
];
y_pos = [
rand_y,
tiefe - rand_y
];
linear_extrude(
height=dicke
)
difference() {
square([
breite,
tiefe
]);
for (x = x_pos)
for (y = y_pos)
translate([
x,
y
])
circle(
d=bohrung_d,
$fn=64
);
}
Zentrierte Extrusion
Auch linear_extrude() besitzt einen center-Parameter:
linear_extrude(
height=10,
center=true
)
square(
[40, 30],
center=true
);
Bei:
center=true
wird die Geometrie zur Hälfte in positive und zur Hälfte in negative Z-Richtung extrudiert.
Kontur während der Extrusion verdrehen
Mit twist kann eine Kontur während der Extrusion gedreht werden.
linear_extrude(
height=40,
twist=90
)
square(
[20, 20],
center=true
);
Feinheit mit slices
Bei verdrehten Geometrien kann die Anzahl der Zwischenschritte mit slices beeinflusst werden:
linear_extrude(
height=40,
twist=180,
slices=60
)
square(
[20, 20],
center=true
);
Ein höherer Wert erzeugt mehr Zwischenstufen.
Skalierung während der Extrusion
Auch eine Größenänderung während der Extrusion ist möglich:
linear_extrude(
height=30,
scale=0.5
)
square(
[30, 30],
center=true
);
Die obere Kontur besitzt nur noch die halbe Größe.
Damit lassen sich beispielsweise konische oder pyramidenähnliche Formen erzeugen.
Rotationskörper mit rotate_extrude()
Die zweite wichtige Extrusionsart lautet:
rotate_extrude();
Hier wird eine zweidimensionale Kontur um die Y-Achse der 2D-Ebene beziehungsweise um die Z-Achse des entstehenden 3D-Körpers rotiert.
Ein einfaches Beispiel:
rotate_extrude($fn=96)
translate([
20,
0
])
square([
5,
10
]);
Das Ergebnis ist ein ringförmiger Körper.
Abstand zur Rotationsachse
Die Position der 2D-Kontur ist entscheidend.
translate([
20,
0
])
verschiebt die Kontur 20 mm von der Rotationsachse weg.
Je größer dieser Wert, desto größer wird der Radius des entstehenden Bauteils.
Parametrischer Ring
innenradius = 20;
wand = 5;
hoehe = 10;
rotate_extrude($fn=96)
translate([
innenradius,
0
])
square([
wand,
hoehe
]);
Damit lässt sich ein Ring vollständig parametrisch steuern.
Freie Profile mit polygon()
Für komplexere Rotationskörper eignet sich besonders polygon().
Beispiel:
profil = [
[20, 0],
[30, 0],
[28, 10],
[22, 10]
];
rotate_extrude($fn=96)
polygon(
profil
);
Die Punkteliste beschreibt den Querschnitt des späteren Bauteils.
Typische Anwendungen für rotate_extrude()
Damit lassen sich unter anderem erzeugen:
-
Ringe
-
Buchsen
-
Rollen
-
Knöpfe
-
Räder
-
Scheiben
-
Drehteile
-
rotationssymmetrische Gehäuse
-
einfache Behälter
Praxisprojekt: einfacher Drehknopf
Wir erzeugen einen einfachen konischen Drehknopf.
Parameter
radius_unten = 15;
radius_oben = 13;
hoehe = 12;
achsen_d = 6;
ueberstand = 1;
Profil
profil = [
[0, 0],
[radius_unten, 0],
[radius_oben, hoehe],
[0, hoehe]
];
Rotationskörper erzeugen
rotate_extrude($fn=96)
polygon(
profil
);
Achsbohrung ergänzen
difference() {
rotate_extrude($fn=96)
polygon(
profil
);
translate([
0,
0,
-ueberstand
])
cylinder(
h=hoehe + 2 * ueberstand,
d=achsen_d,
$fn=64
);
}
Damit erhält der Drehknopf eine zentrale Bohrung.
linear_extrude() oder rotate_extrude()?
Eine einfache Faustregel:
| Befehl | Typische Verwendung |
|---|---|
linear_extrude() |
Platten, Schilder, Profile, Flansche |
rotate_extrude() |
Ringe, Rollen, Knöpfe, Buchsen, Drehteile |
Mitmach-Aufgabe
Erstelle einen parametrischen Ring.
Vorgaben
| Parameter | Wert |
|---|---|
| Innenradius | 20 mm |
| Wandstärke | 4 mm |
| Höhe | 8 mm |
Verwende:
square()
translate()
rotate_extrude()
Musterlösung
innenradius = 20;
wand = 4;
hoehe = 8;
rotate_extrude($fn=96)
translate([
innenradius,
0
])
square([
wand,
hoehe
]);
Teste anschließend beispielsweise:
innenradius = 30;
oder:
wand = 8;
Das Modell sollte sich automatisch anpassen.
Was haben wir gelernt?
Wir kennen jetzt zwei wichtige Möglichkeiten, aus 2D-Konturen dreidimensionale Modelle zu erzeugen:
linear_extrude()
rotate_extrude()
Mit linear_extrude() können wir:
-
Konturen eine Höhe geben
-
komplette 2D-Konstruktionen extrudieren
-
Geometrien zentrieren
-
Konturen während der Extrusion verdrehen
-
Konturen skalieren
Mit rotate_extrude() können wir:
-
2D-Profile rotieren
-
rotationssymmetrische Körper erzeugen
-
freie Profile mit
polygon()verwenden -
technische Drehteile parametrisch modellieren
Damit erweitert sich die Anzahl möglicher OpenSCAD-Konstruktionen erheblich.
Im nächsten Teil
Im nächsten Teil beschäftigen wir uns mit Text.
OpenSCAD besitzt dafür:
text()
In Kombination mit:
linear_extrude()
difference()
können wir daraus:
-
erhabene Beschriftungen
-
Gravuren
-
Namensschilder
-
Typenschilder
-
Markierungen
erzeugen.
Weiterlernen
- Teil 14: vorherige Lektion
- Teil 16: Text, Beschriftungen und Gravuren
- OpenSCAD-Kurs und Cheatsheets
- Schleifen, Bedingungen und Module
Referenz
Die OpenSCAD-Sprachreferenz verlinkt die Dokumentation der verwendeten Befehle.
