OpenSCAD für Anfänger · Teil 20TutorialEinsteiger

OpenSCAD

OpenSCAD für Anfänger – Teil 20: Für den 3D-Druck konstruieren

Konstruiere OpenSCAD-Modelle für den 3D-Druck: Bohrungsspiel, Wandstärken, Druckorientierung und assert(). Mit Testplatte und Montagewinkel.

Veröffentlicht am

9 Minuten Lesezeit

Konstruiere OpenSCAD-Modelle für den 3D-Druck: Bohrungsspiel, Wandstärken, Druckorientierung und assert(). Mit Testplatte und Montagewinkel.

Voraussetzungen

Du brauchst OpenSCAD und die Grundlagen aus Teil 19. 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

Ein 3D-Modell kann geometrisch vollkommen korrekt sein und trotzdem schlecht druckbar.

Gerade bei funktionalen FDM-Bauteilen spielen neben der reinen Geometrie weitere Faktoren eine große Rolle:

  • Toleranzen

  • Passungen

  • Bohrungsgrößen

  • Wandstärken

  • Überhänge

  • Brücken

  • Druckorientierung

  • Belastungsrichtung

OpenSCAD eignet sich besonders gut für solche Modelle, weil diese Konstruktionsregeln direkt in Parameter und Berechnungen eingebaut werden können.

Lernziel:
Nach dieser Lektion kannst du einfache OpenSCAD-Modelle druckgerechter aufbauen und Toleranzen sowie Mindestwerte parametrisch berücksichtigen.

CAD-Maß und tatsächliches Druckmaß

Angenommen, wir konstruieren eine Bohrung:

bohrung_d = 5;

und möchten dort einen 5-mm-Stift einsetzen.

In der Theorie passen beide Maße exakt zusammen.

In der Praxis kann die Bohrung jedoch kleiner ausfallen.

Gründe dafür können unter anderem sein:

  • Druckerkalibrierung

  • Material

  • Extrusionsbreite

  • Temperatur

  • Schrumpfung

  • Slicer-Einstellungen

Deshalb brauchen funktionale Verbindungen häufig ein definiertes Spiel.

Toleranz als Parameter

Statt einen veränderten Bohrungsdurchmesser direkt fest einzutragen:

bohrung_d = 5.4;

ist eine parametrische Lösung besser:

nennmass = 5;
toleranz = 0.4;

bohrung_d =
    nennmass + toleranz;

Damit bleibt sofort erkennbar:

  • welches Sollmaß vorgesehen ist

  • welche Toleranz hinzugefügt wurde

Passungen

Je nach gewünschter Funktion werden unterschiedliche Abstände benötigt.

Beispielsweise:

stramme Passung
leichtgängige Passung
freie Passung

Welche Werte tatsächlich funktionieren, hängt stark vom eigenen Drucker und Material ab.

Deshalb sollten Toleranzen nicht als universelle Konstanten betrachtet werden.

Bohrungen für Schrauben

Nehmen wir eine Schraube mit:

schraube_d = 4;

und definieren:

spiel = 0.4;

Dann ergibt sich:

bohrung_d =
    schraube_d + spiel;

also:

4.4 mm

Diese Logik lässt sich später für andere Schraubengrößen wiederverwenden.

Wandstärken

Sehr dünne Wände können im CAD problemlos dargestellt werden.

Der Drucker muss sie aber tatsächlich herstellen können.

Bei FDM hängt eine sinnvolle Wandstärke unter anderem ab von:

  • Düsendurchmesser

  • Linienbreite

  • Anzahl der Wandlinien

  • Material

  • Belastung

Eine Wandstärke sollte deshalb bewusst als Parameter definiert werden:

wand = 2.4;

Mindestwerte mit assert()

Wir können Mindestanforderungen direkt im Modell prüfen.

Beispiel:

assert(
    wand >= 1.6,
    "Wandstärke zu klein"
);

Wird ein kleinerer Wert verwendet, stoppt OpenSCAD die Berechnung mit der angegebenen Fehlermeldung.

Das ist besonders interessant bei parametrischen Modellen, die später von anderen Personen verändert werden sollen.

Überhänge

FDM-Drucker bauen ein Modell Schicht für Schicht auf.

Große horizontale Bereiche ohne Material darunter benötigen deshalb möglicherweise Support.

Ein ungünstiges Modell:

senkrechte Wand
└──── großer horizontaler Überhang

kann häufig verbessert werden durch:

  • Schräge

  • Fase

  • andere Orientierung

  • konstruktive Verstärkung

Die 45-Grad-Regel

Als grobe Faustregel kann für viele FDM-Drucker gelten:

Überhänge bis ungefähr 45 Grad von der senkrechten Z-Achse lassen sich häufig ohne Support drucken.

Das ist keine feste technische Grenze.

Moderne Drucker können abhängig von:

  • Material

  • Kühlung

  • Geschwindigkeit

  • Layerhöhe

auch deutlich stärkere Überhänge drucken.

Für Einsteiger ist die Regel aber eine gute Orientierung.

Brücken

Kurze horizontale Strecken zwischen zwei Auflagen können häufig frei gedruckt werden.

Das nennt man:

Bridging

Die mögliche Brückenlänge hängt stark von Drucker und Material ab.

Bei kritischen Bauteilen sollte man deshalb nicht unnötig auf große Brücken angewiesen sein.

Druckorientierung

Die Orientierung eines Bauteils beeinflusst:

  • benötigten Support

  • Oberflächenqualität

  • Druckzeit

  • Festigkeit

  • Genauigkeit

Gerade bei funktionalen Bauteilen sollte die spätere Belastungsrichtung berücksichtigt werden.

Belastung in Z-Richtung

FDM-Bauteile sind häufig zwischen den einzelnen Layern schwächer als innerhalb einer gedruckten Schicht.

Ein mechanisch belastetes Bauteil sollte deshalb möglichst so orientiert werden, dass starke Belastungen nicht ausschließlich die Layer auseinanderziehen.

Horizontale Bohrungen

Eine vertikale Bohrung lässt sich meist sehr sauber drucken.

Bei einer horizontalen runden Bohrung kann die Oberseite dagegen einen starken Überhang bilden.

Mögliche Strategien sind:

  • Bohrung nacharbeiten

  • andere Druckorientierung

  • Geometrie anpassen

  • gegebenenfalls tropfen- oder rautenähnliche Kontur

Für viele einfache Bauteile reicht es zunächst, dieses Problem beim Konstruieren im Hinterkopf zu behalten.

Fasen als Einführhilfe

Bei Steckverbindungen kann eine kleine Fase helfen, zwei Bauteile leichter zusammenzusetzen.

Beispielsweise bei:

  • Zapfen

  • Achsen

  • Steckverbindungen

  • Schraubbohrungen

Eine Einführfase kompensiert kleine Druckabweichungen und verbessert die Montage.

Spiel für Steckverbindungen

Beispiel:

zapfen_d = 10;
spiel = 0.3;

aufnahme_d =
    zapfen_d + spiel;

Damit kann das Spiel zentral verändert werden, ohne die eigentliche Geometrie neu konstruieren zu müssen.

Praxisprojekt: druckgerechter Montagewinkel

Wir erstellen einen einfachen parametrischen Montagewinkel.

Parameter

breite = 80;
tiefe = 40;
hoehe = 50;

wand = 4;

schraube_d = 5;
spiel = 0.4;

bohrung_d =
    schraube_d + spiel;

rand = 12;

ueberstand = 1;

Grundkörper

union() {

    cube([
        breite,
        tiefe,
        wand
    ]);

    cube([
        breite,
        wand,
        hoehe
    ]);
}

Die beiden Körper überlappen sich und bilden gemeinsam den Winkel.

Befestigungsbohrungen

for (x = [
    rand,
    breite - rand
])
    translate([
        x,
        tiefe / 2,
        -ueberstand
    ])
        cylinder(
            h=wand + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

Vollständiges Modell

breite = 80;
tiefe = 40;
hoehe = 50;

wand = 4;

schraube_d = 5;
spiel = 0.4;

bohrung_d =
    schraube_d + spiel;

rand = 12;
ueberstand = 1;

assert(
    wand >= 2,
    "Wandstärke muss mindestens 2 mm betragen"
);

assert(
    rand > bohrung_d / 2 + 2,
    "Bohrung liegt zu nah am Rand"
);

difference() {

    union() {

        // Grundplatte
        cube([
            breite,
            tiefe,
            wand
        ]);

        // Rückwand
        cube([
            breite,
            wand,
            hoehe
        ]);
    }

    // Befestigungsbohrungen
    for (x = [
        rand,
        breite - rand
    ])
        translate([
            x,
            tiefe / 2,
            -ueberstand
        ])
            cylinder(
                h=wand + 2 * ueberstand,
                d=bohrung_d,
                $fn=64
            );
}

Warum die Bohrung größer ist als die Schraube

Unsere Parameter:

schraube_d = 5;
spiel = 0.4;

ergeben:

bohrung_d = 5.4 mm

Damit ist das Spiel ausdrücklich Bestandteil des Modells.

Das ist deutlich besser nachvollziehbar als eine scheinbar willkürliche 5,4-mm-Bohrung.

Toleranzen testen

Toleranzen sollten möglichst am eigenen Drucker ermittelt werden.

Dafür kann eine kleine Testplatte erzeugt werden.

Beispiel:

platte_b = 80;
platte_t = 25;
platte_h = 4;

durchmesser = [
    5.0,
    5.2,
    5.4,
    5.6
];

difference() {

    cube([
        platte_b,
        platte_t,
        platte_h
    ]);

    for (i = [0:3])
        translate([
            15 + i * 18,
            platte_t / 2,
            -1
        ])
            cylinder(
                h=platte_h + 2,
                d=durchmesser[i],
                $fn=64
            );
}

Nach dem Druck kann beispielsweise eine 5-mm-Schraube oder ein 5-mm-Stift getestet werden.

So lässt sich die tatsächlich benötigte Toleranz des eigenen Systems bestimmen.

Warum Testteile sinnvoll sind

Ein Testteil:

  • benötigt wenig Material

  • ist schnell gedruckt

  • spart Fehlversuche bei großen Bauteilen

  • liefert reale Werte für den eigenen Drucker

Diese Werte können anschließend als Standardparameter in zukünftige OpenSCAD-Modelle übernommen werden.

Mitmach-Aufgabe

Erstelle einen parametrischen Montagewinkel.

Vorgaben

Parameter Wert
Breite 100 mm
Tiefe 50 mm
Höhe 60 mm
Wandstärke 4 mm
Schraubendurchmesser 6 mm
Spiel 0,4 mm
Randabstand 15 mm

Die Grundplatte erhält zwei Bohrungen.

Zusätzlich soll geprüft werden:

wand >= 2

Musterlösung

breite = 100;
tiefe = 50;
hoehe = 60;

wand = 4;

schraube_d = 6;
spiel = 0.4;

bohrung_d =
    schraube_d + spiel;

rand = 15;

ueberstand = 1;

assert(
    wand >= 2,
    "Wandstärke muss mindestens 2 mm betragen"
);

difference() {

    union() {

        // Grundplatte
        cube([
            breite,
            tiefe,
            wand
        ]);

        // Rückwand
        cube([
            breite,
            wand,
            hoehe
        ]);
    }

    // Bohrungen
    for (x = [
        rand,
        breite - rand
    ])
        translate([
            x,
            tiefe / 2,
            -ueberstand
        ])
            cylinder(
                h=wand + 2 * ueberstand,
                d=bohrung_d,
                $fn=64
            );
}

Was haben wir gelernt?

Beim Konstruieren für den 3D-Druck sollten nicht nur die Sollmaße berücksichtigt werden.

Wichtig sind auch:

  • Fertigungstoleranzen

  • Passungen

  • Bohrungszugaben

  • geeignete Wandstärken

  • Überhänge

  • Brücken

  • Druckorientierung

  • Belastungsrichtung

OpenSCAD eignet sich hervorragend dafür, solche Regeln direkt in ein Modell einzubauen.

Beispielsweise:

bohrung_d =
    schraube_d + spiel;

oder:

assert(
    wand >= 2
);

Damit werden Modelle nicht nur parametrisch, sondern auch konstruktiv robuster.

Im nächsten Teil

Im nächsten Teil erreichen wir das Abschlussprojekt unseres Einsteigerkurses.

Dort führen wir viele Inhalte noch einmal zusammen:

  • Parameter

  • Berechnungen

  • Module

  • Funktionen

  • for()

  • if()

  • union()

  • difference()

  • Text

  • Toleranzen

  • druckgerechte Konstruktion

Das Ergebnis wird ein vollständig parametrischer Universalhalter, der sich über wenige Werte an verschiedene Anwendungen anpassen lässt.

Weiterlernen

Referenz

Die OpenSCAD-Sprachreferenz verlinkt die Dokumentation der verwendeten Befehle.