Erstelle OpenSCAD-Text mit text() und linear_extrude(): Schrift ausrichten, erhaben aufsetzen oder gravieren. Mit parametrischem Namensschild.
Voraussetzungen
Du brauchst OpenSCAD und die Grundlagen aus Teil 15. 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
OpenSCAD kann nicht nur technische Geometrien erzeugen, sondern auch Text direkt in ein Modell integrieren.
Dafür steht der Befehl:
text();
zur Verfügung.
Da text() zunächst eine zweidimensionale Geometrie erzeugt, lässt sich die Schrift anschließend mit:
linear_extrude();
in ein dreidimensionales Objekt umwandeln.
Damit lassen sich unter anderem erzeugen:
-
Namensschilder
-
Typenschilder
-
Beschriftungen
-
Gravuren
-
Skalen
-
Markierungen
-
Logos aus Schrift
-
Kennzeichnungen für technische Bauteile
Lernziel:
Nach dieser Lektion kannst du Text erzeugen, ausrichten und extrudieren sowie erhabene Beschriftungen und Gravuren in 3D-Modelle integrieren.
Der erste Text
Die einfachste Schreibweise lautet:
text("OpenSCAD");
Der Text selbst steht in Anführungszeichen.
Das Ergebnis ist zunächst eine zweidimensionale Kontur.
Textgröße einstellen
Mit:
size
wird die Schriftgröße beeinflusst.
Beispiel:
text(
"OpenSCAD",
size=20
);
Text ausrichten
Für die Positionierung sind besonders zwei Parameter interessant:
halign
valign
Beispiel:
text(
"OpenSCAD",
size=20,
halign="center",
valign="center"
);
Horizontale Ausrichtung
Typische Werte für halign sind:
| Wert | Bedeutung |
|---|---|
"left" |
linksbündig |
"center" |
zentriert |
"right" |
rechtsbündig |
Vertikale Ausrichtung
Typische Werte für valign sind beispielsweise:
| Wert | Bedeutung |
|---|---|
"baseline" |
an der Schriftgrundlinie |
"center" |
zentriert |
"top" |
obere Kante |
"bottom" |
untere Kante |
Für technische Beschriftungen ist:
halign="center",
valign="center"
häufig besonders praktisch.
Text verschieben
Da text() eine normale 2D-Geometrie erzeugt, kann sie mit den bekannten Transformationen bearbeitet werden.
translate([
40,
20
])
text(
"OpenSCAD",
size=12,
halign="center",
valign="center"
);
Text drehen
rotate(90)
text(
"OpenSCAD",
size=12
);
Damit lassen sich beispielsweise seitliche Beschriftungen erzeugen.
Aus 2D-Text wird 3D-Text
Mit:
linear_extrude()
bekommt der Text eine Höhe.
linear_extrude(
height=2
)
text(
"OpenSCAD",
size=15,
halign="center"
);
Erhabene Beschriftung
Nehmen wir eine einfache Grundplatte:
breite = 80;
tiefe = 30;
dicke = 3;
cube([
breite,
tiefe,
dicke
]);
Darauf setzen wir extrudierten Text:
schrift_h = 1.2;
textgroesse = 12;
translate([
breite / 2,
tiefe / 2,
dicke
])
linear_extrude(
height=schrift_h
)
text(
"OpenSCAD",
size=textgroesse,
halign="center",
valign="center"
);
Grundplatte und Text vereinigen
Wenn beide Geometrien bewusst gemeinsam behandelt werden sollen:
union() {
cube([
breite,
tiefe,
dicke
]);
translate([
breite / 2,
tiefe / 2,
dicke
])
linear_extrude(
height=schrift_h
)
text(
"OpenSCAD",
size=textgroesse,
halign="center",
valign="center"
);
}
Text gravieren
Für eine Gravur verwenden wir die Schrift als Schneidkörper:
gravur_tiefe = 1;
difference() {
cube([
breite,
tiefe,
dicke
]);
translate([
breite / 2,
tiefe / 2,
dicke - gravur_tiefe
])
linear_extrude(
height=gravur_tiefe + 0.5
)
text(
"OpenSCAD",
size=textgroesse,
halign="center",
valign="center"
);
}
Warum etwas tiefer schneiden?
Wie bereits bei Bohrungen sollten Schneidkörper möglichst nicht exakt an einer Oberfläche enden.
Deshalb verwenden wir beispielsweise:
height=gravur_tiefe + 0.5
Der Schriftkörper reicht damit etwas über die Oberseite hinaus.
Das sorgt für eine robuste boolesche Operation.
Text parametrisch definieren
Auch der eigentliche Text kann in einer Variablen gespeichert werden:
beschriftung =
"Know-How-Schmiede";
Dann:
text(
beschriftung,
size=12
);
Damit lassen sich verschiedene Namensschilder mit demselben Modell erzeugen.
Schriftart auswählen
Eine bestimmte Schrift kann mit:
font
angegeben werden.
Beispiel:
text(
beschriftung,
size=12,
font="Liberation Sans",
halign="center",
valign="center"
);
Welche Schriften verfügbar sind, hängt vom verwendeten Betriebssystem und den dort installierten Fonts ab.
Schriftarten und Austauschbarkeit
Wird eine .scad-Datei auf einem anderen Computer geöffnet, ist die verwendete Schrift möglicherweise nicht vorhanden.
Für Modelle, die verteilt oder veröffentlicht werden sollen, sind verbreitete Schriftarten deshalb meist die bessere Wahl.
Hinweise für den 3D-Druck
Bei kleinen Beschriftungen sollte darauf geachtet werden, dass die einzelnen Linien der Schrift nicht zu fein werden.
Wichtig sind unter anderem:
-
ausreichende Schriftgröße
-
gut druckbare Schriftart
-
ausreichende Linienbreite
-
genügend Gravurtiefe
-
genügend Höhe bei erhabener Schrift
Eine sehr filigrane Schrift sieht auf dem Bildschirm möglicherweise gut aus, kann aber beim FDM-Druck teilweise verschwinden.
Gravur oder erhabene Schrift?
Gravur
Vorteile:
-
geschützt vor Abrieb
-
keine zusätzliche Bauhöhe
-
technisch zurückhaltend
Erhabene Schrift
Vorteile:
-
besonders gut sichtbar
-
kann bei Farbwechseln zweifarbig gedruckt werden
-
eignet sich gut für Logos und Typenschilder
Praxisprojekt: parametrisches Namensschild
Wir erstellen ein einfaches Namensschild mit Gravur und optionaler Befestigungsbohrung.
Parameter
breite = 90;
tiefe = 30;
dicke = 3;
beschriftung = "OpenSCAD";
textgroesse = 12;
gravur_tiefe = 1;
mit_loch = true;
loch_d = 5;
rand = 8;
Vollständiges Modell
difference() {
// Grundplatte
cube([
breite,
tiefe,
dicke
]);
// Gravur
translate([
breite / 2,
tiefe / 2,
dicke - gravur_tiefe
])
linear_extrude(
height=gravur_tiefe + 0.5
)
text(
beschriftung,
size=textgroesse,
halign="center",
valign="center"
);
// optionale Befestigungsbohrung
if (mit_loch)
translate([
rand,
tiefe / 2,
-1
])
cylinder(
h=dicke + 2,
d=loch_d,
$fn=64
);
}
Variante ohne Befestigungsbohrung
Es reicht:
mit_loch = false;
und die Bohrung wird nicht erzeugt.
Damit kombinieren wir erneut mehrere bereits gelernte Techniken:
text()
+
linear_extrude()
+
difference()
+
if()
Mitmach-Aufgabe
Erstelle ein parametrisches Namensschild.
Vorgaben
| Parameter | Wert |
|---|---|
| Breite | 100 mm |
| Tiefe | 35 mm |
| Dicke | 3 mm |
| Text | Maker |
| Textgröße | 14 |
| Gravurtiefe | 1 mm |
| Bohrungsdurchmesser | 5 mm |
| Randabstand | 10 mm |
Die Befestigungsbohrung soll optional über:
mit_loch
ein- und ausgeschaltet werden können.
Musterlösung
breite = 100;
tiefe = 35;
dicke = 3;
beschriftung = "Maker";
textgroesse = 14;
gravur_tiefe = 1;
mit_loch = true;
loch_d = 5;
rand = 10;
difference() {
cube([
breite,
tiefe,
dicke
]);
// Gravur
translate([
breite / 2,
tiefe / 2,
dicke - gravur_tiefe
])
linear_extrude(
height=gravur_tiefe + 0.5
)
text(
beschriftung,
size=textgroesse,
halign="center",
valign="center"
);
// optionale Bohrung
if (mit_loch)
translate([
rand,
tiefe / 2,
-1
])
cylinder(
h=dicke + 2,
d=loch_d,
$fn=64
);
}
Was haben wir gelernt?
Mit:
text()
können wir Text als 2D-Geometrie erzeugen.
Wir können:
-
Textgröße einstellen
-
Text horizontal und vertikal ausrichten
-
Text verschieben und drehen
-
Schriftarten auswählen
-
Text mit
linear_extrude()dreidimensional machen -
erhabene Schrift mit einem Grundkörper verbinden
-
Gravuren mit
difference()erzeugen -
Beschriftungen parametrisch definieren
Damit können OpenSCAD-Modelle nun nicht nur geometrisch, sondern auch funktional beschriftet werden.
Im nächsten Teil
Im nächsten Teil beschäftigen wir uns genauer mit der Qualität runder Geometrien.
Dafür schauen wir uns an:
$fn
$fa
$fs
Wir klären:
-
warum hohe Auflösung nicht immer besser ist
-
wie sich Rundungen auf die Renderzeit auswirken
-
welche Einstellungen für 3D-Druck sinnvoll sein können
-
wie sich Vorschau und endgültiges Modell unterschiedlich behandeln lassen
Weiterlernen
- Teil 15: vorherige Lektion
- Teil 17: Qualität und Rundungen mit $fn, $fa und $fs
- OpenSCAD-Kurs und Cheatsheets
- Schleifen, Bedingungen und Module
Referenz
Die OpenSCAD-Sprachreferenz verlinkt die Dokumentation der verwendeten Befehle.
