OpenSCAD für Anfänger · Teil 19TutorialEinsteiger

OpenSCAD

OpenSCAD für Anfänger – Teil 19: STL- und SVG-Dateien importieren

Importiere STL- und SVG-Dateien in OpenSCAD, positioniere Modelle und extrudiere Logos. Mit Beispielen für Adapter, Schilder und typische Importfehler.

Veröffentlicht am

8 Minuten Lesezeit

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.

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:

  1. vorhandenes STL importieren

  2. Lage und Größe prüfen

  3. parametrischen Adapter konstruieren

  4. 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() und difference() 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

Referenz

Die OpenSCAD-Sprachreferenz verlinkt die Dokumentation der verwendeten Befehle.