Workflow beim 3D-Drucker

Dieser Post wird langweilig für alle, die bereits einen 3D-Drucker haben. Aber ich bin diese Woche völlig ahnungslos reingestolpert und will den anderen Ahnungslosen mal erzählen, wie das funktioniert.

Die erste Anlaufstelle ist eine Bibliothek mit fertigen Designs, z.B. Thingiverse. Dort legt man sich einen Account an und sucht sich Gegenstände, die man gebrauchen könnte, etwa diese. Man lädt ein solches Design herunter und öffnet es in einem Slicer, z.B. Ultimaker Cura. Cura liest STL-Dateien, etwa von diesem Design:

Die Software heißt Slicer, weil sie das Modell in Schichten schneidet, die vom Drucker wie eine Torte aufgebaut werden. Man kann das Modell in Cura nicht mehr verändern, also z.B. das dünne Ende verlängern. Man kann es nur skalieren. Andere Modelle enthalten die Vorstufe in Form einer CAD-Datei, etwa dieses mit einem SCAD-File. Bei diesen Dateien bietet Thingiverse einen Open In Customizer Button an. Hier lassen sich dann je nach Modell eine oder mehrere Variable anpassen und so ein individuelles STL bauen, das man mit Cura dann umwandelt.

Alternativ lädt man das SCAD-File herunter, installiert sich OpenSCAD und bearbeitet dort das Design offline, hier am Beispiel eines kleinen Schildes. Links sieht man den einfachen Source Code, rechts das Rendering.

Der Code ist leicht zu verstehen. Zwei Körper werden voneinander abgezogen. Zunächst wird das Rechteck definiert, dann die Schrift. Im Ergebnis hat man eine Schablone.

line1="BABY";
line2="SCHLÄFT";
line3="";
border=12;

difference() {
    $fn=32;
    minkowski() {
        union(){
            cube([max(len(line1),len(line2),len(line3))*7+border,15,0.75], center=true);
            if(line2||line3) {
                translate([0,-15,0]) cube([max(len(line1),len(line2),len(line3))*7+border,15,0.75], center=true);
            }
            if(line3) {
                translate([0,-30,0]) cube([max(len(line1),len(line2),len(line3))*7+border,15,0.75], center=true);
            }
        }
        cylinder(r=3,h=1);
    }
    
    union() {
            linear_extrude(height = 3, center=true) text(line1, font = "Stencil", "center", size = 10, valign="center", halign="center");
        if(line2) {
            translate([0,-15,0]) linear_extrude(height = 3, center=true) text(line2, font = "Stencil", "center", size = 10, valign="center", halign="center");
        }
        if(line3) {
            translate([0,-30,0]) linear_extrude(height = 3, center=true) text(line3, font = "Stencil", "center", size = 10, valign="center", halign="center");
        }
    }
}

Mit OpenSCAD erzeugt man nun das STL File und lädt es in Cura.

Nach dem Slicen kann man den Auftrag per USB an den Drucker schicken. Wenn eine SD-Card im Reader steckt, bietet Cura an, die Datei dort zu speichern. Mit der läuft man dann zum Drucker, legt sie dort ein und startet den Auftrag über die Console des Druckers.

Bei mir erkennt Cura einen installierten Octoprint Druckserver und bietet den bevorzugt an. Der ersetzt das Sneaker-Net mit den Speicherkarten und läuft bei mir auf einem Raspberry Pi 3+.