Einleitung: Die verborgene Sprache
Was ist G-Code im 3D-Druck? Vereinfacht gesagt ist G-Code die grundlegende Sprache, die Ihrem 3D-Drucker genau sagt, was er tun soll. Es handelt sich um eine Gruppe textbasierter Anweisungen, die jede Bewegung, jede Temperaturänderung und jeden Vorgang steuert, den die Maschine ausführt, um eine digitale Datei in ein reales Objekt zu verwandeln.
Stellen Sie sich das wie ein extrem detailliertes Rezept für Ihren 3D-Drucker vor. Ihr 3D-Modell ist das Bild des fertigen Kuchens, der G-Code hingegen die Schritt-für-Schritt-Anleitung: „Ofen auf 210 °C vorheizen“, „Rührkopf genau an diese Stelle bewegen“, „0,05 mm Zuckerguss auftragen“ usw., tausendfach wiederholt. Das Verständnis dieser Sprache ermöglicht Ihnen eine umfassendere Kontrolle und Problemlösungskompetenz und macht Sie vom einfachen Benutzer zum wahren Maschinenbediener.
In diesem Leitfaden
In diesem umfassenden Leitfaden behandeln wir Folgendes:
- Die Rolle des G-Codes im 3D-Druckprozess.
- So erstellt Ihre Slicer-Software eine G-Code-Datei.
- Eine Übersicht der gebräuchlichsten und nützlichsten Befehle.
- Wie man eine G-Code-Datei liest und versteht.
- Konkrete Beispiele dafür, wann und wie man G-Code für bessere Druckergebnisse bearbeitet.
Die Brücke zwischen den Welten
G-Code ist das entscheidende Bindeglied zwischen Ihrem digitalen Design und dem physischen Druck. Er entsteht nicht einfach so, sondern ist das Ergebnis eines spezifischen und unerlässlichen Prozesses. Das Verständnis dieses Prozesses erklärt, woher der G-Code kommt und warum er so wichtig ist. Der Weg von der Idee zum fertigen Produkt folgt fast immer diesen drei Hauptschritten.
Der Standardprozess
-
Das 3D-Modell (.STL, .3MF, .OBJ): Dies ist Ihr Ausgangspunkt – der digitale Bauplan Ihres Objekts. Diese Datei, erstellt in einer CAD-Software oder von einer Website heruntergeladen, beschreibt die Oberflächenform Ihres Modells, im Grunde eine Ansammlung verbundener Dreiecke. Sie enthält jedoch keine Informationen darüber, wie Sie es drucken. Sie beschreibt das „Was“, nicht das „Wie“.
-
Der Slicer (Der Übersetzer): Hier geschieht die Magie. Sie importieren Ihr 3D-Modell in ein Slicer-Programm. Hier definieren Sie alle Druckeinstellungen – Optionen wie Schichthöhe, Druckgeschwindigkeit, Düsen- und Betttemperatur sowie die interne Füllstruktur. Die Hauptaufgabe des Slicers besteht darin, Ihr 3D-Modell in Hunderte oder Tausende dünne, horizontale Schichten zu zerlegen und anschließend die exakten Werkzeugwege für jede einzelne Schicht zu berechnen.
-
Die G-Code-Datei (.gcode): Das Endergebnis des Slicers ist eine einfache Textdatei mit der Endung
.gcode. Diese Datei enthält die schrittweise Befehlsfolge, die die Firmware Ihres Druckers lesen und ausführen kann. Jede Zeile des G-Codes entspricht einer bestimmten Aktion – beispielsweise dem Aufheizen der Düse, dem Anfahren einer bestimmten Position oder dem Ausstoßen des Filaments. Anschließend übertragen Sie diese Datei per SD-Karte, USB oder Netzwerkverbindung auf Ihren Drucker, um den Druckvorgang zu starten.
Wie G-Code entsteht
Um G-Code wirklich zu verstehen, müssen wir in die „Blackbox“ des Slicers blicken. Es handelt sich nicht nur um eine einfache Konvertierung, sondern um einen komplexen Berechnungs- und Übersetzungsprozess, der auf der Form Ihres Modells und Ihren gewählten Einstellungen basiert. Hier ist eine grundlegende Erklärung, wie ein Slicer arbeitet und eine G-Code-Datei generiert.
In Schichten schneiden
Als Erstes zerlegt der Slicer Ihr durchgehendes 3D-Modell in eine Reihe separater 2D-Schichten. Die Dicke jeder Schicht hängt von der gewählten Schichthöhe ab. Eine geringere Schichthöhe bedeutet mehr Schichten und einen detaillierteren, glatteren Druck, führt aber auch zu einer deutlich längeren Druckzeit und einer größeren G-Code-Datei. Dieser Prozess ähnelt dem Erstellen eines Stapels digitaler Querschnitte Ihres Objekts von unten nach oben.
Werkzeugwege erstellen
Für jede einzelne Schicht muss der Slicer den exakten Pfad berechnen, den die Düse des Druckkopfs beim Zeichnen abfährt. Dies ist weitaus komplexer als das einfache Nachzeichnen einer Kontur. Der Slicer unterteilt die Werkzeugwegerstellung in mehrere verschiedene Schritte:
- Umrisse (oder Wände): Dies sind die Konturen Ihres Modells auf der jeweiligen Ebene. Der Slicer berechnet einen oder mehrere Durchgänge, um die massive Außenfläche des Drucks zu erzeugen.
- Füllung: Um Zeit und Material zu sparen, sind die meisten Drucke nicht vollständig massiv. Der Slicer erzeugt innerhalb der Konturen ein Muster (z. B. ein Gitter, eine Wabenstruktur oder ein Gyroid), basierend auf der gewählten Fülldichte . Diese innere Struktur bietet Stabilität, ohne dass zusätzliches Filament benötigt wird.
- Obere und untere Schichten: Um sicherzustellen, dass das Objekt eine feste, versiegelte Oberfläche hat, erstellt der Slicer feste Schichten für die oberste und unterste Schicht des Drucks.
- Stützstrukturen: Bei Modellen mit steilen Überhängen oder Brücken, wo das Material sonst frei in der Luft gedruckt würde, erstellt der Slicer temporäre Stützstrukturen. Diese verfügen über eigene Werkzeugwege und werden nach dem Druckvorgang entfernt.
Übersetzung in Befehle
Dies ist der letzte und wichtigste Schritt. Der Slicer nimmt alle berechneten geometrischen Pfade – Umrisse, Füllung, Stützstrukturen – und übersetzt sie zusammen mit Ihren anderen Einstellungen wie Temperatur, Lüftergeschwindigkeit und Druckgeschwindigkeit in eine schrittweise Liste von G-Code-Befehlen. Jede Bewegung wird in einen G1 Befehl mit X-, Y- und Z-Koordinaten umgewandelt. Jede Anweisung zum Ausstoßen von Kunststoff wird zu einem E Wert. Jede Temperatureinstellung wird zu einem M Befehl.
Das Konzept, Maschinen mithilfe von codierten Anweisungen zu steuern, ist nicht neu. Die Geschichte des G-Codes reicht bis in die 1950er-Jahre zurück, als er zur Steuerung von CNC-Fräs- und Drehmaschinen (Computer Numerical Control) eingesetzt wurde. Seine Prinzipien wurden später für die additive Fertigung (3D-Druck) adaptiert, wobei die Standardisierungsformate maßgeblich von Organisationen wie dem National Institute of Standards and Technology (NIST) beeinflusst wurden, um die Kompatibilität zwischen den Maschinen zu gewährleisten.
Die Sprache verstehen
Auf den ersten Blick mag eine G-Code-Datei wie eine unübersichtliche Ansammlung von Text und Zahlen wirken. Sie basiert jedoch auf einer konsistenten und logischen Struktur. Die Befehle lassen sich grob in zwei Haupttypen einteilen, und die Kenntnis einiger weniger gängiger Befehle ermöglicht es, die meisten G-Code-Dateien zu verstehen.
G-Befehle und M-Befehle
-
G-Befehle (Geometrische Codes): Diese Befehle sind die „Aktionswörter“ der Programmiersprache. Sie steuern hauptsächlich die Bewegung und die Aktionen des Werkzeugkopfes. Sie geben dem Drucker vor, wohin und wie er sich bewegen soll (z. B. geradlinig oder kreisförmig) und welche Aktion er ausführen soll, wie etwa das Ausstoßen von Material. Der Befehl
G1für lineare Bewegung ist der häufigste Befehl in jeder G-Code-Datei für 3D-Drucke. -
M-Befehle (Sonstige Codes): Diese Befehle sind die „Einrichtungsanweisungen“ oder „Modifikatoren“. Sie steuern die zusätzliche Hardware und die Einstellungen des Druckers, die nicht direkt mit der Bewegung zusammenhängen. Dazu gehören das Einstellen von Temperaturen, das Steuern der Lüfterdrehzahl, das Warten auf das Erfüllen bestimmter Bedingungen oder das Anzeigen von Meldungen auf dem Bildschirm.
Gängige 3D-Druckbefehle
Am besten lernt man diese Befehle mithilfe einer Kurzübersichtstabelle. Hier sind einige der wichtigsten G- und M-Code-Befehle, die Ihnen beim 3D-Druck ab 2025 begegnen werden.
| Befehl | Name | Was es bewirkt | Anwendungsbeispiel |
|---|---|---|---|
| G0/G1 | Lineare Bewegung | Bewegt den Druckkopf zu einer festgelegten X-, Y-, Z-Koordinate. G0 ist eine schnelle Bewegung ohne Extrusion, während G1 eine kontrollierte Bewegung ist, die auch extrudieren kann. In moderner 3D-Druck-Firmware werden beide oft gleich behandelt. |
G1 X10 Y20 E5 F1500 (Fahre zu X10, Y20, extrudiere 5 mm Filament mit einer Vorschubgeschwindigkeit von 1500 mm/min) |
| G28 | Auto Home | Bewegt alle Achsen (X, Y und Z) zu ihren physikalischen Endanschlägen, um die Nullposition bzw. den Ursprung der Maschine festzulegen. |
G28 (Alle Achsen in die Ausgangsposition bringen) oder G28 XY (Nur X- und Y-Achse in die Ausgangsposition bringen) |
| G90 | Absolute Positionierung | Weist den Drucker an, dass alle folgenden Koordinaten absolut sind, d. h. relativ zum Ursprung (0,0,0), der durch G28 festgelegt wurde. Dies ist der Standardmodus für den 3D-Druck. |
G90
|
| G91 | Relative Positionierung | Weist den Drucker an, dass alle folgenden Koordinaten relativ zu seiner zuletzt bekannten Position sind. Nützlich für bestimmte Abläufe, aber weniger üblich für den Hauptdruckauftrag. | G91
|
| G92 | Position einstellen | Ermöglicht die manuelle Festlegung der aktuellen Position einer oder mehrerer Achsen, ohne diese tatsächlich zu bewegen. Wird am häufigsten verwendet, um den Positionszähler des Extruders zurückzusetzen. |
G92 E0 (Setzt die Extrusionsstrecke des Extruders auf Null zurück) |
| M104 | Hotend-Temperatur einstellen | Legt die Zieltemperatur für das Hotend (die Düse) fest, unterbricht das Programm aber nicht. Der Drucker fährt sofort mit dem nächsten Befehl fort. |
M104 S210 (Hotend-Zieltemperatur auf 210°C einstellen) |
| M109 | Hotend-Temperatur einstellen (Warten) | Legt die Zieltemperatur für das Hotend fest und wartet – was besonders wichtig ist –, bis die Düse diese Temperatur erreicht hat, bevor der nächste Befehl ausgeführt wird. |
M109 S210 (Hotend auf 210°C einstellen und warten) |
| M140 | Betttemperatur einstellen | Legt die Zieltemperatur für das beheizte Druckbett fest, wartet aber nicht. |
M140 S60 (Bett-Zieltemperatur auf 60°C einstellen) |
| M190 | Betttemperatur einstellen (Warten) | Legt die Zieltemperatur für das Heizbett fest und pausiert das Programm, bis das Bett diese Temperatur erreicht hat. |
M190 S60 (Heizbett auf 60°C einstellen und warten) |
| M106 | Lüftergeschwindigkeit einstellen | Legt die Drehzahl des Bauteilkühlungslüfters fest. Die Drehzahl wird typischerweise durch einen Wert von 0 (aus) bis 255 (volle Drehzahl) definiert. |
M106 S255 (Lüfter auf volle Drehzahl stellen) |
| M107 | Lüfter aus | Ein einfacher Befehl zum vollständigen Abschalten des Bauteillüfters. Er entspricht M106 S0 . |
M107
|
Lesen einer G-Code-Datei
Die Befehle zu kennen ist das eine, sie im Kontext zu sehen das andere. Um die Kluft zwischen Theorie und Praxis zu überbrücken, analysieren wir einen kurzen, typischen Ausschnitt vom Anfang einer G-Code-Datei. Dies ist das „Startskript“, das den Drucker für den Hauptauftrag vorbereitet.
Ein Beispiel für ein Startskript
Sie können jede beliebige .gcode Datei in einem einfachen Texteditor wie Notepad oder TextEdit öffnen, um dies selbst zu sehen.
; G-code generated by a generic slicer for a standard FDM printer in 2025
M190 S 60 Warten Sie, bis das Bett 60 °C erreicht hat.
M109 S 205 Warten Sie, bis der Hotend 205 °C erreicht hat.
G28 ; Alle Achsen in die Ausgangsposition bringen
G92 E 0 ; Extruderposition zurücksetzen
G1 Z 2.0 F 3000 ; Bewege Z ein wenig nach oben.
G1 X 5.1 Y 20 Z 0,3 F 5000.0 ; Zur Startposition zurückkehren
G1 X 5.1 Y 200.0 Z 0,3 F 1500.0 E 15 ; Zeichne die erste Linie (Röcke/Spüllinie)
G92 E 0 ; Extruder nach dem Spülen erneut zurücksetzen
Was das alles bedeutet
Lass uns das Zeile für Zeile durchgehen, um zu sehen, was dem Drucker gesagt wird.
-
; G-code generated...: Jede Zeile, die mit einem Semikolon (;) beginnt, ist ein Kommentar. Der Drucker ignoriert diese Zeilen vollständig. Sie werden vom Slicer zur besseren Lesbarkeit eingefügt und erleichtern die Navigation in der Datei sowie das Verständnis der einzelnen Arbeitsschritte. -
M190 S60: Dieser Befehl weist den Drucker an, die Bauplatte auf 60°C aufzuheizen und, was wichtig ist, zu warten , bis diese Temperatur erreicht ist, bevor er fortfährt. -
M109 S205: Dieser Befehl weist das Hotend an, auf 205 °C aufzuheizen und zu warten , bis sich die Temperatur stabilisiert hat. Diese beiden „Warte“-Befehle stellen sicher, dass sich der Drucker im korrekten thermischen Zustand befindet, bevor er Bewegungen ausführt. -
G28: Dadurch wird die automatische Referenzfahrt ausgeführt. Der Druckkopf fährt, bis er die Endschalter auf der X-, Y- und Z-Achse auslöst und somit seinen Ursprungspunkt (0,0,0) festlegt. -
G92 E0: Dadurch wird der interne Zähler des Extruders auf Null gesetzt. Das ist vergleichbar mit dem Nullstellen einer Digitalwaage vor dem Wiegen. So wird sichergestellt, dass alle zukünftigen Extrusionsmengen von einem bekannten Startpunkt aus gemessen werden. -
G1 Z2.0 F3000: Dies ist eine lineare Bewegung (G1). Sie hebt die Z-Achse auf eine Höhe von 2,0 mm bei einer Vorschubgeschwindigkeit (F) von 3000 mm/Minute an und stellt so sicher, dass die Düse sicher vom Druckbett entfernt ist. -
G1 X5.1 Y20 Z0.3 F5000.0: Eine weitere lineare Bewegung. Die Düse bewegt sich schnell zu den X/Y-Koordinaten, an denen die erste Linie beginnt, und senkt sich gleichzeitig auf die Höhe der ersten Schicht (Z0.3) ab. -
G1 X5.1 Y200.0 Z0.3 F1500.0 E15: Dies ist der erste Druckvorgang. Die Düse bewegt sich geradlinig entlang der Y-Achse (von Y20 nach Y200) und extrudiert dabei gleichzeitig 15 mm Filament (E). Dabei handelt es sich häufig um eine Spüllinie oder einen Rand am Druckbett, der zum Vorbereiten der Düse gedruckt wird. -
G92 E0: Der Extruder wird nach der Spüllinie wieder auf Null zurückgesetzt, um sicherzustellen, dass der Druckvorgang mit einer präzisen Extrusionszahl beginnt.
Wann und wie man bearbeitet
Auch wenn Sie G-Code fast nie von Grund auf neu schreiben werden, ist das Wissen um gezielte, kleine Änderungen ein äußerst hilfreiches Werkzeug zur Problemlösung. So können Sie sich beispielsweise das erneute Slicing eines mehrstündigen Druckvorgangs ersparen, nur um eine winzige Anpassung vorzunehmen. Hier sind einige praktische Beispiele aus der Praxis, in denen die manuelle Bearbeitung Gold wert ist.
Szenario 1: Die Z-Offset-Korrektur
- Problem: Sie starten einen Druckvorgang und stellen fest, dass die erste Schicht nicht haftet, weil die Düse einen Bruchteil eines Millimeters zu hoch positioniert ist. Oder umgekehrt: Die Düse schleift in das Druckbett, weil sie zu niedrig ist. Die Z-Offset-Einstellung Ihres Druckers ist für diesen Druckvorgang nicht optimal.
-
Lösung mit G-Code: Sie können die anfängliche Z-Höhe für die erste Schicht schnell anpassen, ohne neu zu slicen.
- Öffnen Sie Ihre
.gcodeDatei in einem einfachen Texteditor. - Verwenden Sie die Suchfunktion (Strg+F oder Cmd+F), um die erste
G1 Z-Bewegung nach demG28Referenzfahrtbefehl zu finden. Dies ist ein kleiner Wert, z. B.G1 Z0.2oderG1 Z0.3, der die anfängliche Schichthöhe angibt. -
Um die Düse für eine bessere Haftung abzusenken , verringern Sie diesen Wert leicht. Ändern Sie beispielsweise
G1 Z0.2inG1 Z0.18. -
Um die Düse anzuheben und ein Quetschen zu verhindern, erhöhen Sie den Wert. Ändern Sie beispielsweise
G1 Z0.2inG1 Z0.22. - Speichern Sie die Datei und starten Sie den Druckvorgang. Diese kleine Änderung kann den Unterschied zwischen einem misslungenen Druck und einer perfekten ersten Schicht ausmachen.
- Öffnen Sie Ihre
Szenario 2: Temperaturänderung während des Druckvorgangs
- Problem: Sie drucken ein Modell, beispielsweise eine Figur mit einem dünnen Schwert oder ein Gebäude mit einer schmalen Turmspitze. Da der Drucker diese kleinen, schnell gedruckten Schichten nicht ausreichend abkühlt, bevor die nächste Schicht aufgetragen wird, entsteht eine ungleichmäßige, klumpige und unsaubere Oberfläche.
-
Lösung mit G-Code: Sie können manuell einen Befehl einfügen, um die Temperatur zu senken, sobald der Druckvorgang den problematischen Abschnitt erreicht.
- Öffnen Sie zunächst die G-Code-Datei im Vorschau- oder Anzeigemodus Ihres Slicers. Blättern Sie durch die Ebenen, um die genaue Ebenennummer zu ermitteln, an der der schmale Abschnitt beginnt (z. B. Ebene 254).
- Öffnen Sie nun die
.gcodeDatei in Ihrem Texteditor. - Suchen Sie nach dem Kommentar, der den Beginn dieser Ebene markiert. Er sieht etwa so aus:
;LAYER:253(die Ebenenzählung beginnt oft bei 0, suchen Sie also nach der Ebene vor Ihrem Ziel). - Direkt unterhalb dieser Kommentarzeile fügen Sie eine neue Zeile mit einem Temperaturänderungsbefehl ein:
M104 S195 ; Lower temp for spire. - Speichern Sie die Datei. Wenn der Drucker nun Schicht 253 beendet und mit Schicht 254 beginnt, erhält er den neuen Befehl, die Temperatur auf 195 °C (oder den von Ihnen gewählten Wert) zu senken. Dadurch haben die dünnen Schichten eine bessere Chance, abzukühlen und richtig auszuhärten, was die Qualität deutlich verbessert.
Die Sprache Ihres Druckers
Sie haben nun den Weg von der grundlegenden Definition von G-Code im 3D-Druck bis hin zu den Details seiner Erstellung und den praktischen Anwendungsmöglichkeiten beschritten. Wir haben gesehen, wie er die essentielle Brücke im Druckworkflow bildet, seine Kernbefehle entschlüsselt und gelernt, wie man gezielte Änderungen vornimmt, um reale Probleme zu lösen.
Man muss kein Programmierer sein, um den 3D-Druck zu beherrschen, und man wird nur selten, wenn überhaupt, eine G-Code-Datei von Grund auf neu schreiben müssen. Doch zu verstehen, was G-Code ist, ihn zu lesen und kleine Änderungen vorzunehmen, ist eine wertvolle Fähigkeit. Es verbessert Ihre Fertigkeiten, vertieft Ihr Prozessverständnis und gibt Ihnen die Sicherheit, Ihre Maschine vollständig zu steuern. Sie sprechen nun die Sprache Ihres Druckers.