Importiere STL- und SVG-Dateien in OpenSCAD, positioniere Modelle und extrudiere Logos. Mit Beispielen für Adapter, Schilder und typische Importfehler.
Voraussetzungen
Du brauchst OpenSCAD und die Grundlagen aus Teil 18. 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
Bislang haben wir unsere Geometrien vollständig innerhalb von OpenSCAD erzeugt.
In vielen Projekten existieren jedoch bereits:
-
STL-Dateien
-
SVG-Grafiken
-
DXF-Konturen
-
andere 3D-Modelle
OpenSCAD kann solche Dateien über:
import();
in ein Modell einbinden.
Die aktuelle OpenSCAD-Referenz führt import() sowohl für 2D- als auch für 3D-Geometrien auf. Für 2D werden unter anderem SVG und DXF genannt; bei 3D unter anderem STL, OFF, AMF und 3MF.
Lernziel:
Nach dieser Lektion kannst du STL- und SVG-Dateien importieren, transformieren und mit eigenen parametrischen Geometrien kombinieren.
Warum externe Geometrien importieren?
Nicht jedes Modell muss vollständig neu konstruiert werden.
Typische Anwendungsfälle sind:
-
vorhandenes STL erweitern
-
Adapter für ein bestehendes Bauteil erstellen
-
Logo aus SVG verwenden
-
technische Kontur importieren
-
bestehendes Modell mit neuen Bohrungen versehen
-
vorhandene Form als Referenz verwenden
STL-Datei importieren
Der einfachste Import:
import(
"beispiel.stl"
);
OpenSCAD erkennt den Dateityp über die Dateiendung; STL wird als 3D-Geometrie importiert.
Dateien im Projektordner organisieren
Eine sinnvolle Struktur könnte so aussehen:
projekt/
│
├── main.scad
└── modelle/
└── halter.stl
Import:
import(
"modelle/halter.stl"
);
OpenSCAD unterstützt relative Importpfade; aktuelle OpenSCAD-Hinweise erwähnen ausdrücklich, dass Imports relativ zum importierenden Skript behandelt werden.
Importierte Modelle verschieben
translate([
30,
0,
0
])
import(
"beispiel.stl"
);
Importierte Modelle können wie andere OpenSCAD-Geometrien transformiert werden.
Importiertes Modell drehen
rotate([
0,
90,
0
])
import(
"beispiel.stl"
);
Das ist beispielsweise hilfreich, wenn die Orientierung aus dem ursprünglichen CAD-System nicht zu unserem OpenSCAD-Projekt passt.
Importiertes Modell skalieren
scale([
1.2,
1.2,
1.2
])
import(
"beispiel.stl"
);
Bei technischen Bauteilen sollte scale() vorsichtig verwendet werden, da alle Maße verändert werden.
STL mit eigener Geometrie kombinieren
Ein importiertes Modell kann innerhalb boolescher Operationen verwendet werden.
Beispiel:
union() {
import(
"beispiel.stl"
);
cube([
80,
60,
5
]);
}
Damit können vorhandene Bauteile beispielsweise durch:
-
Grundplatten
-
Halter
-
Adapter
-
Verstärkungen
ergänzt werden.
Eine Bohrung in ein importiertes Modell schneiden
difference() {
import(
"beispiel.stl"
);
translate([
20,
20,
-1
])
cylinder(
h=50,
d=6,
$fn=64
);
}
Mögliche Probleme mit STL-Dateien
STL-Dateien bestehen aus einem Dreiecksnetz.
Ist dieses Mesh geometrisch fehlerhaft, können insbesondere boolesche Operationen Probleme verursachen.
Typische Fehler können sein:
-
offene Oberflächen
-
doppelte Flächen
-
sich selbst schneidende Geometrie
-
problematische Normalen
-
nicht-manifold Meshes
Bei Problemen mit einem importierten Modell sollte deshalb auch die Qualität der Quelldatei überprüft werden.
STL ist nicht parametrisch
Eine importierte STL enthält keine ursprüngliche CAD-Historie.
Wir können beispielsweise nicht direkt auf einen Parameter wie:
Bohrungsdurchmesser = 5 mm
zugreifen.
Die STL besteht lediglich aus ihrer resultierenden Oberflächengeometrie.
Das bedeutet:
OpenSCAD kann das Modell geometrisch verändern, aber nicht seine ursprüngliche CAD-Konstruktion rekonstruieren.
SVG-Dateien importieren
SVG ist ein zweidimensionales Vektorformat.
Es eignet sich besonders gut für:
-
Logos
-
Symbole
-
Schriftzüge
-
dekorative Konturen
-
technische 2D-Formen
OpenSCAD unterstützt SVG direkt über import().
import(
"logo.svg"
);
SVG in 3D umwandeln
Da SVG zunächst eine 2D-Geometrie liefert, können wir:
linear_extrude()
verwenden.
linear_extrude(
height=2
)
import(
"logo.svg"
);
SVG skalieren
scale([
0.5,
0.5
])
import(
"logo.svg"
);
Damit lässt sich die importierte Kontur an das gewünschte Bauteil anpassen.
SVG positionieren
translate([
50,
25
])
import(
"logo.svg"
);
Damit lässt sich eine Kontur beispielsweise auf einer Frontplatte positionieren.
SVG mit center
Die aktuelle OpenSCAD-Referenz führt für den SVG-Import auch einen center-Parameter auf.
Beispiel:
import(
"logo.svg",
center=true
);
Das kann die Positionierung symmetrischer Logos oder Konturen erleichtern.
Praxisprojekt: Schild mit erhabenem SVG-Logo
Parameter
breite = 100;
tiefe = 50;
dicke = 3;
logo_hoehe = 1.2;
Modell
union() {
cube([
breite,
tiefe,
dicke
]);
translate([
breite / 2,
tiefe / 2,
dicke
])
linear_extrude(
height=logo_hoehe
)
import(
"logo.svg",
center=true
);
}
SVG als Gravur
Das Logo kann auch als Schneidkörper verwendet werden:
gravur_tiefe = 1;
difference() {
cube([
breite,
tiefe,
dicke
]);
translate([
breite / 2,
tiefe / 2,
dicke - gravur_tiefe
])
linear_extrude(
height=gravur_tiefe + 0.5
)
import(
"logo.svg",
center=true
);
}
Das Vorgehen entspricht damit sehr stark dem Text-Workflow aus Teil 16.
STL und SVG im Vergleich
| Eigenschaft | STL | SVG |
|---|---|---|
| Dimension | 3D | 2D |
| Typischer Inhalt | Mesh-Modell | Vektorkontur |
| direkt 3D | ja | nein |
| Extrusion nötig | nein | meist ja |
| typische Verwendung | Bauteile | Logos, Konturen |
Weitere unterstützte Formate
Die aktuelle OpenSCAD-Cheat-Sheet-Referenz nennt für import():
2D
DXF
SVG
3D
STL
OFF
AMF
3MF
Für Einsteiger sind STL und SVG jedoch besonders gut geeignet, um die beiden grundsätzlich unterschiedlichen Importarten kennenzulernen.
Sinnvolle Projektstruktur
Bei mehreren externen Dateien bietet sich beispielsweise folgende Struktur an:
projekt/
│
├── main.scad
│
├── modelle/
│ ├── gehaeuse.stl
│ └── halter.stl
│
└── grafiken/
├── logo.svg
└── symbol.svg
Dann können wir schreiben:
import(
"modelle/halter.stl"
);
oder:
import(
"grafiken/logo.svg"
);
Praxisprojekt: Adapter für ein vorhandenes STL
Ein typischer OpenSCAD-Workflow lautet:
-
vorhandenes STL importieren
-
Lage und Größe prüfen
-
parametrischen Adapter konstruieren
-
beide Geometrien kombinieren
Beispielparameter:
adapter_b = 80;
adapter_t = 60;
adapter_h = 5;
bohrung_d = 5;
rand = 10;
Parametrische Adapterplatte
difference() {
cube([
adapter_b,
adapter_t,
adapter_h
]);
for (x = [
rand,
adapter_b - rand
])
for (y = [
rand,
adapter_t - rand
])
translate([
x,
y,
-1
])
cylinder(
h=adapter_h + 2,
d=bohrung_d,
$fn=64
);
}
Diese Platte kann anschließend passend zum importierten Modell positioniert werden.
Mitmach-Aufgabe
Verwende eine beliebige einfache SVG-Datei und erstelle ein Schild.
Vorgaben
| Parameter | Wert |
|---|---|
| Breite | 100 mm |
| Tiefe | 60 mm |
| Dicke | 3 mm |
| Logo-Höhe | 1 mm |
Verwende:
import()
linear_extrude()
union()
Falls nötig, passe die Größe des Logos mit scale() an.
Musterlösung
breite = 100;
tiefe = 60;
dicke = 3;
logo_hoehe = 1;
union() {
cube([
breite,
tiefe,
dicke
]);
translate([
breite / 2,
tiefe / 2,
dicke
])
linear_extrude(
height=logo_hoehe
)
import(
"logo.svg",
center=true
);
}
Was haben wir gelernt?
Mit:
import()
können externe Geometrien in OpenSCAD verwendet werden.
Wir haben gelernt:
-
STL importiert 3D-Mesh-Geometrie
-
SVG importiert 2D-Konturen
-
importierte Geometrien können transformiert werden
-
SVG lässt sich mit
linear_extrude()in 3D umwandeln -
importierte Modelle können in
union()unddifference()verwendet werden -
relative Projektpfade helfen bei einer sauberen Struktur
-
eine STL wird durch den Import nicht wieder zu einem parametrischen CAD-Modell
Damit können wir OpenSCAD jetzt sehr gut mit externen CAD-, Grafik- und 3D-Druckdaten kombinieren.
Im nächsten Teil
Im nächsten Teil konzentrieren wir uns auf das eigentliche Ziel vieler unserer Modelle:
3D-Druck.
Wir beschäftigen uns unter anderem mit:
-
Toleranzen
-
Bohrungsdurchmessern
-
Wandstärken
-
Passungen
-
Überhängen
-
Druckorientierung
-
druckgerechter Konstruktion
Damit wird aus einem geometrisch korrekten Modell ein Modell, das sich auch sinnvoll herstellen lässt.
Welche Dateien brauche ich für die Importbeispiele?
Die Namen logo.svg, beispiel.stl und andere Importpfade sind Beispielnamen. Lege eigene Dateien unter den angegebenen Pfaden ab. Ohne diese Quelldateien kann OpenSCAD die Importbeispiele nicht rendern. Verwende für SVG geschlossene Flächen; wandle Schrift in Pfade um und prüfe die tatsächlichen Maße nach dem Import. Beim SVG-Import setzt center=true den Mittelpunkt des Begrenzungsrahmens in den Ursprung. Verschiebe anschließend das Logo gezielt an seine Position. Ein importiertes STL muss den eigenen Körper mit einem gemeinsamen Volumen überlappen, wenn beide zu einem zusammenhängenden Druckteil werden sollen.
Weiterlernen
- Teil 18: vorherige Lektion
- Teil 20: Für den 3D-Druck konstruieren
- OpenSCAD-Kurs und Cheatsheets
- Schleifen, Bedingungen und Module
Referenz
Die OpenSCAD-Sprachreferenz verlinkt die Dokumentation der verwendeten Befehle.
