3D Konstruktion und 3D Druck für Kinder
von Prof. Dipl.-Ing. Klaus Knopper <knopper@knopper.net>
erstellt für das Österreichische Computer Camp 2018
Bevor wir ans Erstellen von 3D-Objekten gehen, ist etwas Theorie zu Beginn immer hilfreich. Wenn Du lieber sofort loslegen möchtest, kannst Du diesen Teil überspringen.
Die verschiedenen 3D-Drucker, die es gibt, werden nach der Art der Herstellung eines Objektes unterschieden
.Je nach Druckverfahren werden im 3D-Druck verschiedene Kunststoffe ("Plastik") oder auch Metalle verarbeitet. Hier schauen wir uns die Materialien an, die für FDM-Drucker verwendet werden.
Filament: In verschiedenen Online-Shops oder im Elektronik-Laden kannst Du die auf Rollen aufgewickelten Fäden für den 3D-Druck mit einem FDM-Drucker als sogenannte "Filamente" bestellen. Achte dabei darauf, welchen Dicke (Durchmesser) dein Drucker verarbeiten kann. Die meisten Hobby-Drucker arbeiten mit Filamenten mit 1,75 Millimeter Breite, größere Drucker können aber auch mit 3mm Dicke laufen, die Rollen sind dann teilweise etwas günstiger, allerdings bricht das dickere Filament leicht beim Biegen durch, da es weniger flexibel ist als das dünne.
Kosten: Bei den Filamentrollen für die am häufigsten eingesetzten Kunststoffe PLA, ABS oder HIPS sind Preise zwischen 15 und 30 Euro für ein Kilogramm üblich. Die eher speziellen Sorten wie NinjaflexTM, Holz, Stein usw. liegen um das 2 bis 4-fache darüber.
Die nachfolgende Übersicht kann Dir helfen, den richtigen Werkstoff für dein Projekt auszuwählen.
Umweltfragen: Bis auf PLA und einige Spezialfilamente, die entsprechend als biologisch abbaubar gekennzeichnet sind, zerfallen die meisten Kunststoffe in der freien Natur sehr langsam, es treiben auch schon tausende Tonnen Plastik durch die Weltmeere und verschmutzen die Umwelt. FDM-Drucker erzeugen allerdings erfreulich wenig Abfall, da nur so viel Plastik verbraucht wird, wie im fertigen Objekt später auch enthalten ist (anders als beim Fräsen, bei dem oft mehr Abfall als Produkt entsteht). Wenn in deiner Gegend Abfalltrennung üblich ist, entsorge die leeren Filamentrollen und auch Druckabfälle möglichst in der Plastiksammlung. Ein "Recycling" von Filamentabfällen in Form neuer Filamente ist übrigens (noch) nicht üblich, da der Energieaufwand zum Aufbereiten höher ist als bei der Herstellen des reinen Rohmaterials.
Man kann das Aussehen eines Objektes kopieren, indem man es mit einem 3D-Scanner einscannt, nachbearbeitet und anschließend in Originalgröße oder verkleinert wieder ausdruckt. Möchte man eine neue Form herstellen, so kann dies mit 3D-Zeichenprogrammen wie Blender, oder Konstruktionsprogrammen wie OpenScad geschehen.
Grundsätzlich muss beim 3D-Scan eine "Rundum-Aufnahme" eines Objektes, also aus allen Richtungen möglichst ohne Lücke, gemacht werden. Dazu braucht man entweder sehr viele Kameras, die man rund um das Objekt aufbaut, oder das Objekt muss still halten, während man mit einer Kamera entsprechend viele Bilder aufnimmt.
3D-Scanner kosten zwischen 40 und einer Viertelmillion Euro, je nach Größe und leistungsfähigkeit. Du kannst ja einmal eine "Scan 3D" App für dein Smartphone ausprobieren, und wirst schnell feststellen, es ist nicht so einfach, perfekte überlappende Fotos von allen Seiten zu machen, und die Nachbearbeitung dauert dann meistens noch länger als das eigentliche Scannen.
Das Ergebnis eines 3D Scan oder einer 3D-Landschaftsaufnahme, auch medizinische Scans per Röntgen oder MRT, ist eine sogenannte "Punktwolke", die normalerweise mit einem Programm wie Meshlab nachbearbeitet und in Flächen und Volumenkörper umgewandelt werden muss, bevor man ein fehlerfreies 3D-Objekt als Datei erhält, dass sich auch wieder drucken lässt.
Um neue Zeile herzustellen, oder bestehende Teile in leicht druckbare Häppchen zu zerlegen, ist ein Konstruktionsprogramm sinnvoll. Viele 3D-Programme erwarten ein gutes räumliches Vorstellungsvermögen oder Genialität beim Zeichnen. Wir lernen in unserem Workshop ein Programm kennen, das KEINERLEI Zeichenkünste voraussetzt, und das auch in der Industrie häufig für den Bau von Fahrzeugteilen oder ähnlichem eingesetzt wird.
Ein 3D-Objekt, meist im STL-Dateiformat, kann noch nicht direkt gedruckt werden, denn der Drucker kann ja nicht alles gleichzeitig "aus der Luft" entstehen lassen, sondern druckt Bahn für Bahn, Schicht für Schicht. Häufig verwenden 3D-Drucker eine standardisierte Darstellung der notwendigen Befehle, z.B.:
G1 X10.0 Y20.0 E3.0 F900
Bedeutung: "Gehe 10 nach rechts, 20 nach vorne und schiebe dabei 3mm Filament aus der Düse."
OpenScad ist unter den 3D-Konstruktions-Werkzeugen eine Besonderheit. Es erlaubt, ganz ohne Talent für Grafikbearbeitung und Zeichnen, trotzdem auch sehr komplizierte Objekte am Computer zu konstruieren. Und es kommt im Extremfall sogar ganz ohne Grafik, sogar ohne Bildschirm aus, denn es ist nicht nur einfach ein Programm, sondern eine ganze Programmiersprache!
Man muss OpenScad noch nicht einmal installieren, um erste Schritte in der 3D-Konstruktion zu unternehmen, sondern kann mit einem (fast) beliebigen Schreib-Programm, mit dem einfache Texte erstellt werden, arbeiten. Erst beim "Übersetzen" in Grafik-Objektdateien wird OpenScad benötigt, um aus dem für Menschen leicht lesbaren, zuvor geschriebenen (Quell-)Text die Grafikdateien zu erzeugen, die man am Bildschirm anschauen oder auf einen 3D-Drucker schicken kann.
Blinde Computernutzer können also, statt OpenScad zu installieren, ihren Lieblings-Texteditor verwenden und direkt zum Punkt "Programmieren" in dieser Anleitung springen.
Unter der Adresse www.openscad.org kann OpenScad für Linux, Windows oder Mac heruntergeladen und installiert werden.
Nach dem Start von OpenSCAD wird ein dreigeteiltes Fenster angezeigt:
Bei OpenScad wird nicht gezeichnet und verschoben, sondern parametrisch konstruiert, das heißt Du schreibst genau festgelegte Befehle auf, die das Objekt so präzise beschreiben, dass es am Bildschirm angezeigt oder gedruckt werden kann und auf jedem Gerät gleich aussieht.
Alle Befehle von OpenScad passen auf eine Seite Text. Tatsächlich gibt es ein sogenanntes "Cheatsheet", dass die Befehle als klickbare Links enthält, so dass man bei Bedarf nachschlagen kann, was sie bereuten und mit welchen Möglichkeiten man sie aufrufen kann.
Man kann die Befehle, oder Funktionen oder Module, wie der Programmierer sie nennt, einzeln schreiben, oder mehrere davon hintereinander, dann wirken die vorangestellten Befehle auf die hinteren Befehle und verändern damit das Ergebnis. Z.B. wird ein Würfel (cube()
) mit einem vorangestellten rotate(...)
-Befehl gedreht. Jede Befehlsfolge muss durch einen Strichpunkt beendet werden, erst dann ist das Objekt "fertig" und kann dargestellt werden.
Wie bei vielen Programmiersprachen ist es bei OpenScad egal, ob und wie viele Leerzeichen oder Zeilenumbrüche vor, hinter oder in einzelnen Teilen des Befehls vorkommen, da OpenScad durch den Strickpunkt weiß, wo der Befehl endet. Trotzdem solltest Du beim Schreiben deines Konstruktionsplans daran denken, dass vielleicht andere auch dein Kunstwerk leden und verstehen möchten, daher ist es praktisch, nicht alles einfach nur hintereinander in eine einzige Zeile zu schreiben (obwohl das geht!), sondern eher untereinander, und mit Leerzeichen dort eingerückt, wo Folge-Befehle stehen.
Außerdem ist es sehr sinnvoll, Kommentare im Programm zu verwenden, um Dinge festzulegen, die man nicht direkt programmieren kann, oder die man einfach noch nicht weiß. Hierfür gibt es zwei Varianten:
// Ein Einzeiliger Kommentar, beginnt mit zwei Schrägstrichen und endet mit dem Zeilenende. /* Ein mehrzeiliger oder auch kurzer Kommentar. Er beginnt mit Schrägstrich Stern und endet mit Stern Schrägstrich (Achtung, Reihenfolge!!!) */
Wenn Du einen Teil deines Objektes fertig programiert hast und kontrollieren möchtest, ob alles richtig getippt ist und das Objekt wie gewünscht aussieht, kannst Du dir Übersetzung starten. Das ist die Taste F5 für eine einfache "Voransicht" (Preview) in OpenScad.
Sollten hierbei Fehler auftreten, so schreibt dir OpenScad in das "Konsolen"-Fenster rects unten eine Meldung und markiert die Zeile, in der der Fehler bemerkt wurde, im Editor-Fenster mit einem roten Punkt. Manchmal wird der Fehler allerdings erst gemeldet, wenn OpenScad merkt, dass etwas fehlt, z.B. die schließende Klammer zu einer öffnenden Klammer, da nicht klar ist, ob die öffnende Klammer falsch war oder nur die schließende vergessen wurde. Also bitte auch beim Lesen der Fehlermeldung mitdenken, und nicht genau die Zeile betrachten, wo der Fehler gemeldet wurde!
Wenn im Preview alles richtig aussieht, kan das eigentliche "Rendering" durchgeführt werden, erst hierbei wird die endgültige, druckbare Form erzeugt. Drücke hierzu die Taste F6. Das Rendering dauert meist viel länger als das Preview.
Das gerenderte Objekt kann mit "Speichern als STL" im Standard-Format für 3D-Objekte gespeichert werden. Dateien im STL-Format können auch von anderen Programmen als OpenScad gelesen und weiterverarbeitet werden.
Vergiss bitte nicht, auch den SCAD-Text, den Du die ganze Zeit bearbeitet hast, regelmäßig zu speichern, damit deine Kommandos und Kommentare gesichert sind!
Mit "Export Image (PNG)" hat OpenScad auch die Möglichkeit, einen Screenshot des Voransichts-Fensters als einfaches Bild (nur in 2D) zu speichern, so wie die Bilder in dieser Dokumentation.
Um die Position im Raum zu bestimmen, verwenden wir ein Koordinatensystem. Stell dir vor, Du stehst in der Mitte eines Raums, es gibt dann drei Raumrichtungen und der Abstand von dir wird entsprechend durch drei Zahlen festgelegt, die für die drei Richtungen angegeben sind.
Die drei Raumrichtungen in der üblichen Reihenfolge:
Wir legen fest, dass die Abstände immer in Millimetern gezählt werden sollen. Man kann 3D-Objekte vor dem Drucken aber auch beliebig vergrößern und verkleinern und auch verschieben, falls man später feststellt, dass sie zu klein oder zu groß konstruiert sind.
Die Position [-100,200,300] bedeutet also: 100 Millimeter nach links, 200 Millimeter nach vorne und 300 Millimeter nach oben. In Zentimetern wäre dies 10 nach links, 20 nach vorne, 30 nach oben.
Einige Objekte sollen später auch gedreht werden können. Auch hier gibt es drei Raumrichtungen zu beachten, praktischerweise nimmt man die sogenannten Koordinatenachsen, um die Drehung durchzuführen.
Drehungen:Bei Drehungen werden normalerweise Winkel in der Einheit Grad ° verwendet zwischen 0 (keine Drehung) und 360 (einmal komplett um eine Achse, bis wir wieder in der genau gleichen Position sind). Eine Drehung um 180 Grad ist also eigentlich die maximale Drehung, bei einem größeren Winkel hätte man stattdessen auch einfach einen kleineren Winkel in die andere Richtung drehen können. Eine Drehung um 90 Grad ist quasi "auf die Ecke" gedreht. Die Ecken einer gewöhnlichen Seite Papier bilden einen 90 Grad Winkel.
Gib im Editor-Fenster die Befehle ein, mit denen Du deine Konstruktion beschreiben möchtest. Immer, wenn ein Abschnitt komplett ist, kannst Du mit der Taste F5 auf der Tastatur im Voransichts-Fenster eine drehbare Grafik erzeugen, mit der Du den Fortschritt deiner Kondtruktion kontrollieren kannst.
Bei Tippfehlern, z.B. wenn der Strichpunkt am Ende eines Befehls fehlt, oder eine öffnende Klammer nicht richtig durch eine schließende Klammer beendet wird, werden im Konsolen-Fenster unten rechts Fehlermeldungen angezeigt, und die Zeile im Editor, in der der Fehler bemerkt wurde, mit einem roten Punkt markiert.
Achtung: Eine Fehler-Markierung zeigt nicht unbedingt die Stelle an, an den Du beim Eintippen den Fehler gemacht hast. Bitte kontrolliere auch die Umgebung im Text auf Tippfehler. Wenn der rote Punkt ganz am Ende deines Programms erscheint, ist vermutlich eine öffnende Klammer nicht geschlossen worden.
Lass uns mit dem kürzesten Befehl beginnen, um einen Würfel zu zeichnen.
cube(); |
Du wirst sehen, dass alle Befehle (in den meisten Programmiersprachen) mit runden Klammern hinter dem Befehlsnamen geschrieben werden. In den Klammern können sogenannte Parameter stehen, die die erzeugte Form beeinflussen.
In diesem Beispiel stand in den runden Klammern gar nichts. OpenScad nimmt dann an, dass Du einen Würfel mit Seitenlänge 1 zeichnen möchtest. Das ist zum Drucken eigentlich viel zu klein, aber gut zu wissen. Falls Du im Preview-Fenster den Würfel gar nicht mehr erkennen kannst, benutze das Mausrad oder den Knopf mit der Lupe, um ihn zu vergrößern.
Trägst Du in die runden Klammern eine Zahl ein, dann bezeichnet diese die gewünschte Länge aller Seiten des Würfels, z.B. zeichnet cube(50);
einen Würfel der Größe 50mm bzw. 5cm.
Eine Variante des Würfels ist der (allgemeinere) Quader. Um die drei Seitenlängen des Quaders anzugeben, verwendest Du drei Zahlen in eckigen Klammern, so wie wir es im Abschnitt Koordinatensystem kennengelernt haben.
Bei eckigen Objekten ist immer die linke untere Ecke im Mittelpunkt des Koordinatensystems, bei runden bildet der Mittelpunkt des Koordinatensystems den Mittelpunkt des Objekts.
cube([20,30,40]); |
In diesem Beispiel geht der Quader vom Mittelpunkt des Koordinatensystems aus 20 nach rechts, 30 nach vorne und 40 nach oben.
Wenn der Mittelpunkt des Koordinatensystems gleichzeitig der Mittelpunkt des Quaders (oder Würfels) sein soll, gib in der runden Klammer noch die Option center=true
mit an, durch Komma vom Rest getrennt:
cube([10,10,10],center=true); |
Kugel heißt auf Englisch sphere, und so lautet auch der Befehl, um eine Kugel zu produzieren, die genau in der Mitte des Koordinatensystems sitzt, wieder nach der Regel:
Bei eckigen Objekten ist immer die linke untere Ecke im Mittelpunkt des Koordinatensystems, bei runden bildet der Mittelpunkt des Koordinatensystems den Mittelpunkt des Objekts.
sphere(); |
Das sieht nun gar nicht wie eine Kugel aus, ist aber Absicht. Die Kugel, die Du erzeugt hast, ist sehr klein und hat den Radius 1, weil nichts in der Klammer steht. OpenScad bildet runde Oberflächen mit Hilfe von vielen flachen Dreiecken nach, und bei so einer kleinen Kugel gibt es einfach nicht genügend Dreiecke, um die Form rund erscheinen zu lassen. Du kannst die Anzahl der Dreiecke selbst festlegen, und so die runden Formen verändern, das ist im Abschnitt "Ecken und Flächen" beschrieben.
Wir nehmen erst mal eine größere Kugel, indem wir den Radius (das ist der Abstand von der Mitte der Kugel zur Außenfläche) oder den Durchmesser (das ist die Breite der Kugel) mit Buchstaben r
oder d
, einem Gleichheitszeichen =
und der Zahl dahinter angeben:
sphere(d=40); |
Zylinder heißt auf Englisch cylinder, allerdings mit c statt z geschrieben, und so lautet auch der Befehl, sowohl für Zylinder, als auch einen Kegel.
Um einen Zylinder zu beschreiben, müssen zwei Größen angegeben werden:
r
) oder der Durchmesser (d
) des Kreises oben und unten,
h
) des Zylinders.
Ein nach oben spitz zulaufender Kegel hat zwei unterschiedliche Durchmesser oder Radien, beispielsweise 25 für den unteren Kreis (r1=25
) und 0 für den oberen Kreis, also die Spitze (r2=0
).
cylinder(r1=25,r2=0,h=50); |
Wie Du im Abschnitt zur Kugel gesehen hast, bildet OpenScad runde Objekte durch eine Aneinanderreihung von kleinen Dreiecken ab. Wie viele das sind, kannst Du festlegen, indem Du in der runden Klammer bei den Befehlen sphere()
oder cylinder()
noch durch ,
getrennt,
$fn=anzahl
angibst. Die hinter dem Gleichheitszeichen angegebene Anzahl gibt an, wie viele Ecken sich außen befinden sollen. Am besten sichst Du das an einem Beispiel: Wir machen aus einem spitz zulaufenden Kegel eine Pyramide, indem wir mit $fn=4
aus den Kreisflächen des Zylinders Quadrate (mit 4 Ecken) machen:
cylinder(r1=25,r2=0,h=50,$fn=4); |