Résumé
Le G-code est le langage d’instructions ligne par ligne qui indique à une imprimante 3D quels mouvements et quelles actions de procédé effectuer pendant une impression. Cet article se concentre sur l’impression de filament de bureau, en utilisant une terminologie d’extrusion de matière compatible avec les normes plutôt que celle de la fabrication additive dans son ensemble. Dans ce flux de travail, le slicer traduit un plan d’impression finalisé en instructions machine que l’imprimante peut exécuter. [17] [18] [1]
S’agit-il d’un format de fichier d’impression 3D ? En pratique, oui. Les utilisateurs désignent souvent ainsi le fichier imprimable lui-même, couramment enregistré au format .g, .gco ou .gcode. Plus précisément, le G-code est le langage stocké dans ces fichiers, tandis que le STL transporte principalement la géométrie de surface, que le 3MF transporte des informations plus riches sur le package du modèle, et qu’un projet de slicer enregistré au format .3mf peut conserver des objets, réglages, modificateurs et paramètres pour une modification ultérieure plutôt que pour une impression immédiate. [19] [22] [23]
Ce qu’est le G-code en impression 3D
En impression 3D, le G-code est l’ensemble des instructions machine qu’une imprimante suit pour se déplacer, chauffer, extruder et gérer les actions d’impression associées. Ici, le périmètre concerne l’impression de filament de bureau et les flux d’extrusion de matière pour les matériaux plastiques, et non tous les procédés de fabrication additive. Un slicer ne se contente pas d’enregistrer le modèle dans un autre format ; après avoir planifié les couches, les trajectoires et les réglages de procédé, il traduit ce plan en G-code que l’imprimante exécutera. [17] [18] [1]
C’est pourquoi le G-code n’est pas interchangeable avec les fichiers de modèle. Un STL stocke principalement la géométrie de l’objet sous forme de triangles de surface, un fichier 3MF peut transporter des informations de modèle empaquetées plus riches, et un projet de slicer peut également employer .3mf comme instantané complet contenant objets, réglages, modificateurs et paramètres. Le G-code se situe à un autre niveau du flux de travail : il constitue le résultat opérationnel, généralement enregistré comme instructions exécutables par l’imprimante dans des fichiers portant des extensions telles que .g, .gco ou .gcode. Ces extensions sont des conventions utiles, mais elles ne garantissent pas une signification identique entre les familles de firmwares ou les configurations d’imprimantes. [22] [23] [19] [13]
D’où vient le G-code — et où s’arrête la normalisation
Le nom G-code provient de lignées plus anciennes de programmation de commande numérique, et non de l’impression 3D elle-même. Un point de référence pratique est NISTIR 6556, The NIST RS274NGC Interpreter – Version 3, publié le 1 août 2000, qui décrit un interpréteur du code RS274 dans le dialecte NGC. La norme ISO 6983-1:2009 spécifie également un format de données destiné aux systèmes de commande de positionnement, de mouvement linéaire et de contournage, et l’ISO indique que cette édition a de nouveau été confirmée en 2025. Cette filiation explique certains noms de commandes familiers, mais ne signifie pas que les firmwares modernes d’imprimantes de bureau mettent en œuvre un langage uniforme. Le comportement actuel des imprimantes est déterminé par des conventions, extensions et configurations machine propres aux firmwares ; les normes historiques expliquent donc une partie du vocabulaire, mais pas la sémantique complète des imprimantes d’aujourd’hui. [15] [16] [13]
Comment les slicers transforment les modèles en instructions d’imprimante
La chaîne pratique est simple : un fichier de modèle, de maillage ou de projet entre dans le slicer ; le slicer produit une trajectoire d’outil ordonnée ainsi que des paramètres de procédé ; cela devient du G-code ; le firmware l’interprète ; et l’imprimante exécute les mouvements, le chauffage et la commande des ventilateurs. [1] [13]
Dans le slicer, la géométrie est divisée en couches, puis en types de trajectoires imprimables tels que les périmètres, le remplissage, les surfaces supérieures et inférieures, les supports et les déplacements sans impression. Le slicer décide de leur ordre et leur attribue des réglages de procédé. CuraEngine documente directement cette correspondance : une trajectoire imprimable devient G1, un déplacement devient G0, le chauffage de la tête d’impression est émis sous la forme M104 ou M109, le chauffage du plateau sous la forme M140 ou M190, et les changements de propriétés de trajectoire telles que la vitesse sont écrits avec des paramètres incluant F. [1]
- Commandes de mouvement
- Commandes thermiques
- Commandes de contrôle machine / d’assistance
Dans la véritable sortie d’un slicer, ces catégories apparaissent ensemble dans un même fichier. Un segment de mouvement peut devenir G0 ou G1, l’état thermique peut être défini avec M104, M109, M140 ou M190, et d’autres commandes peuvent contrôler les ventilateurs ou signaler l’état. Le firmware est la couche qui interprète les commandes, la configuration de la machine influant sur l’exécution finale. Les flux de travail réels incluent aussi couramment des séquences configurables de G-code de début et de fin ; un fichier d’impression contient donc généralement le comportement de préparation et d’arrêt, ainsi que l’impression elle-même. [1] [13] [14]

Les commandes G-code et ce qu’elles contrôlent réellement
Les commandes G-code sont les instructions individuelles de contrôle machine à l’intérieur d’un fichier d’impression. Dans les instructions d’imprimantes 3D de bureau, certaines décrivent principalement le mouvement, d’autres contrôlent la température, et d’autres encore assurent des tâches d’assistance ou d’état souvent regroupées sous le nom de M-code. Les noms de commandes ci-dessous apparaissent dans les écosystèmes de firmwares courants, mais leur prise en charge se chevauche sans correspondre exactement. Klipper, par exemple, répertorie G0/G1, M104, M109, M140, M190, M106, M107, M114 et M115, tout en précisant que son objectif est la compatibilité avec les logiciels tiers courants dans des configurations standard, et non avec toutes les commandes G-code possibles. [13]
| Commande | Fonction typique | Attend la fin ? | Réserve |
|---|---|---|---|
G0 |
Déplacement sans extrusion selon une convention courante des slicers. [1] [2] | Non. [2] | « Déplacement rapide » est une terminologie héritée de la CNC ; sur les machines cartésiennes et Delta de Marlin, G0 est un alias direct de G1. [2] |
G1 |
Déplacement linéaire, souvent avec extrusion dans la sortie d’un slicer. [1] [2] | Non. [2] | F définit la vitesse de déplacement demandée pour ce déplacement et les suivants, dans les unités actuelles par minute. [2] |
M104 |
Définir la température de la tête d’impression. [3] | Non. [3] | Continue sans attendre. [3] |
M109 |
Définir la température de la tête d’impression et attendre. [4] | Oui. [4] | Avec R, Marlin peut également attendre pendant le refroidissement. [4] |
M140 |
Définir la température du plateau. [5] | Non. [5] | Continue sans attendre. [5] |
M190 |
Définir la température du plateau et attendre. [6] | Oui. [6] | Avec R, Marlin peut attendre pendant le chauffage ou le refroidissement. [6] |
M106 |
Définir la vitesse du ventilateur. [7] | Non. [7] | S utilise une plage de 0 à 255. [7] |
M107 |
Éteindre le ventilateur. [8] | Non. [8] | Commande dédiée à l’arrêt du ventilateur. [8] |
M114 |
Signaler la position actuelle. [13] | S/O. [13] | Commande courante d’état/de requête documentée par Klipper. [13] |
M115 |
Signaler les informations du firmware. [13] | S/O. [13] | Commande courante d’état/de requête documentée par Klipper. [13] |
Une distinction utile est celle entre convention et sémantique. De nombreux générateurs utilisent G0 pour les déplacements et G1 pour l’extrusion ou les mouvements d’impression, de sorte que les personnes lisant le fichier considèrent souvent les lettres comme un raccourci. Mais Marlin précise explicitement que sur les machines cartésiennes et Delta, G0 est un alias direct de G1 ; « déplacement rapide » est donc une terminologie héritée de la CNC, et non une description universelle fiable du comportement des imprimantes 3D. Des noms de commandes familiers aident à lire le fichier, mais le firmware décide toujours de la manière dont ces instructions sont exécutées. [2] [13]

Ce qu’un slicer produit réellement : trajectoires d’outil, coordonnées et paramètres
Un véritable fichier d’impression est une séquence d’instructions de fabrication, et non une simple liste de points. Son contenu typique comprend :
- routine de démarrage
- lignes de mouvement et d’extrusion
- températures et ventilateurs
- commentaires ou annotations
- routine de fin
Le cœur de la sortie d’un slicer est une trajectoire d’outil ordonnée exprimée sous forme de mouvements, de quantités d’extrusion et de réglages de procédé associés à ces mouvements. Une ligne peut spécifier de nouvelles coordonnées X, Y et Z, une valeur E pour l’extrusion et une valeur F pour la vitesse d’avance. Cette vitesse d’avance est la vitesse de déplacement demandée dans les unités actuelles par minute, et non une promesse universelle de vitesse physique réellement atteinte. CuraEngine documente également que le G-code exporté peut refléter la vitesse, la vitesse du ventilateur, l’accélération, le jerk, l’épaisseur de couche et le débit, et que F est ajouté lorsque la vitesse change. [1] [2]
Ces valeurs ne sont pas toujours explicites sans connaître les modes actifs. G90 définit le positionnement absolu et G91 définit le positionnement relatif pour les axes de mouvement. Séparément, M82 place l’axe de l’extrudeur en mode absolu et M83 le place en mode relatif, indépendamment des axes de mouvement. Cela signifie que des coordonnées ou valeurs E d’apparence identique peuvent avoir des significations différentes selon les modes actifs. Les commentaires sont également courants, mais non universels : PrusaSlicer 2.3 et les versions ultérieures peuvent ajouter des annotations telles que ;TYPE:, ;HEIGHT:, ;LAYER_CHANGE, ;COLOR_CHANGE, ;PAUSE_PRINT et ;CUSTOM_GCODE, tandis que Prusa indique aussi que le G-code lui-même ne contient pas toutes les informations nécessaires à l’analyse par le visualiseur. [9] [10] [11] [12] [21]
Note sur les performances : lisibilité, séquençage et pourquoi la vitesse d’avance n’est pas seulement la vitesse
Un fichier G-code peut sembler lisible parce qu’il est en texte, mais les performances ne peuvent pas être déduites de lignes isolées. La sortie d’un slicer est une trajectoire d’outil ordonnée accompagnée de paramètres de procédé ; l’exécution dépend donc autant de la séquence, des changements d’état et de l’interprétation du firmware que des coordonnées brutes. La valeur F est particulièrement facile à simplifier à l’excès : Marlin la définit comme la vitesse de déplacement demandée pour le déplacement actuel et les suivants, dans les unités actuelles par minute. Demandée est le mot clé. Une valeur F plus élevée ne garantit pas à elle seule que l’imprimante atteindra physiquement cette vitesse, car le résultat réel dépend encore de l’imprimante, du firmware et des mouvements environnants. [1] [2] [13]
Le G-code est-il un format de fichier d’impression 3D ?
Oui en pratique, mais plus précisément, il s’agit d’un langage d’instructions généralement stocké dans des fichiers qu’une imprimante peut exécuter. Le qualifier de format de fichier d’impression 3D est un raccourci raisonnable, tant que l’on se souvient que le fichier contient des instructions pour l’imprimante, et non uniquement la géométrie du modèle. [19] [1]
Ces fichiers utilisent couramment des extensions telles que .g, .gco ou .gcode. Cela importe pour le stockage et le flux de travail, mais ne prouve pas une sémantique universelle des commandes. Un fichier se terminant par .gcode peut toujours dépendre des hypothèses d’une famille de firmwares, d’une configuration machine ou d’un flux de travail de slicer spécifique. À l’inverse, le consortium 3MF décrit le 3MF comme un format permettant aux applications de conception d’envoyer des modèles 3D complets et fidèles à des applications, plateformes, services et imprimantes, et sa page de spécifications répertorie le dernier PDF de révision de la Core Specification comme v1.4.0, la ligne Core Specification ayant été mise à jour le 2025-02-27. ISO/IEC 25422:2025, Technologies de l’information — Suite de spécifications du 3D Manufacturing Format (3MF), a été publiée en juin 2025. [19] [23] [24]
| Type de fichier | Contient généralement | Étape du flux de travail | Meilleure utilisation |
|---|---|---|---|
| STL | Géométrie de surface uniquement. [22] | Exportation du modèle. [22] | Échange étendu de géométrie. [22] |
| 3MF | Géométrie et informations de modèle empaquetées plus riches. [22] [23] [24] | Échange de modèle ou de package. [23] | Transport de données de modèle plus complètes. [23] |
| Projet de slicer | Objets, réglages, modificateurs et paramètres dans un instantané complet du slicer. [22] | Espace de travail modifiable avant exportation. [22] | Revenir ultérieurement à une tâche du slicer. [22] |
| G-code | Instructions exécutables par l’imprimante. [1] [19] | Étape finale d’exécution machine. [1] | Lancer l’impression. [1] |
La distinction pratique est que le STL et le 3MF décrivent la pièce ou le package, les projets de slicer préservent le contexte de planification, et le G-code enregistre ce que l’imprimante doit faire ensuite. [22] [23]

Pourquoi un même G-code n’est pas totalement universel
La raison principale pour laquelle un même G-code n’est pas totalement universel est que des noms de commandes partagés ne garantissent pas un comportement partagé. Les différentes familles de firmwares mettent en œuvre des ensembles d’instructions d’imprimante qui se chevauchent, mais elles peuvent prendre en charge des sous-ensembles différents ou interpréter les détails différemment. Klipper indique que son objectif est de prendre en charge le G-code généré par les logiciels tiers courants dans des configurations standard, et non toutes les commandes G-code possibles. Cela limite à lui seul la portabilité. Cela explique également pourquoi tout nombre total unique de commandes est instable : aucun chiffre fiable n’a été trouvé. [13] [19]
Un bref contraste entre Marlin et Klipper illustre le problème. Sur les machines cartésiennes et Delta de Marlin, G0 est un alias direct de G1, donc un déplacement écrit avec G0 ne déclenche pas nécessairement un mode de mouvement distinct. Marlin documente également que M109 peut attendre pendant le refroidissement lorsqu’il est utilisé avec R, et que M190 peut attendre pendant le chauffage ou le refroidissement avec R. Klipper, à l’inverse, indique que M109 et M190 attendent toujours que la température se stabilise à la valeur demandée. Ainsi, même lorsque les slicers émettent un texte familier, des fichiers identiques ne garantissent pas une sémantique, un timing ou un comportement machine identiques. Le firmware interprète les commandes et la configuration de l’imprimante continue d’influer sur le résultat final. [2] [4] [6] [13]
Variantes et extensions, y compris le G-code binaire
La plupart des G-codes d’imprimantes de bureau sont stockés sous forme de texte brut, ce qui permet de les examiner facilement ligne par ligne. Une exception circonscrite est le format de G-code binaire de Prusa, .bgcode, que Prusa présente comme une alternative axée sur le stockage. Lors des tests de Prusa, le G-code binaire a réduit la taille moyenne des fichiers d’environ 70%. Prusa indique également que l’exportation binaire est activée par défaut à partir de PrusaSlicer 2.7.0, et que la prise en charge par firmware commence avec la version 5.1.0 pour les Original Prusa MINI, MK4 et XL. Le compromis est simple : le G-code en texte brut est plus facile à inspecter pour les humains, tandis que le G-code binaire peut économiser de l’espace, mais seulement dans les combinaisons de slicer et de firmware qui le prennent en charge. [20]
Ce que le G-code ne préserve pas bien
Le G-code se situe près de l’exécution, il perd donc souvent le contexte de plus haut niveau présent plus tôt dans le flux de travail. Au moment où un slicer a transformé un modèle en instructions machine, de nombreuses significations liées à la conception ont été aplaties en mouvements ordonnés, températures et changements d’état. C’est pourquoi un fichier peut être inspectable tout en restant incomplet comme dossier technique. Prusa l’indique directement dans le contexte de la visualisation : le G-code lui-même ne contient pas toutes les informations nécessaires à l’analyse par le visualiseur. [21]
Cette limite explique pourquoi des conteneurs plus riches restent importants. Le consortium 3MF présente le 3MF comme un moyen de transporter des informations de modèles 3D complets et fidèles entre applications, plateformes, services et imprimantes, et le 3MF possède aussi un statut de publication formelle ISO/IEC sous ISO/IEC 25422:2025, publiée en juin 2025. Un projet de slicer enregistré au format .3mf peut aller plus loin pour la continuité du flux de travail en préservant les objets, réglages, modificateurs et paramètres comme instantané complet. La distinction pratique est simple : le G-code est généralement le fichier que vous exécutez, mais ce n’est généralement pas le meilleur fichier pour préserver tout ce que vous souhaiterez ultérieurement comprendre, modifier ou reproduire. [23] [24] [22]
Guide pratique : lire un fichier G-code d’imprimante 3D sans surinterprétation
-
Commencez par identifier la routine de démarrage. Les véritables fichiers générés par un slicer incluent couramment des séquences configurables de G-code de début et de fin ; les premières lignes peuvent donc décrire le comportement de préparation plutôt que l’impression elle-même. [14]
-
Ensuite, recherchez la configuration des températures et des ventilateurs, puis notez les éventuelles lignes de mode de coordonnées ou d’extrusion si elles apparaissent avant les principaux blocs de mouvement. Ce contexte change l’interprétation à donner aux coordonnées et valeurs d’extrusion ultérieures. [9] [10] [11] [12]
-
Lisez la région de mouvement comme une sortie ordonnée de slicer, et non comme des commandes isolées. Lorsqu’ils sont présents, des commentaires tels que
;TYPE:,;LAYER_CHANGEou;CUSTOM_GCODEpeuvent aider les lecteurs humains, mais ce sont des annotations propres au slicer plutôt qu’une fonctionnalité universelle du G-code. [21] -
Terminez en vérifiant la routine de fin, puis évitez les affirmations excessives. Des noms de commandes familiers ne garantissent pas le même comportement entre firmwares, car la prise en charge vise les sorties tierces courantes, et non toutes les commandes possibles. [14] [13]
FAQ
Voici de brèves clarifications sur les principaux points, y compris quelques cas limites importants lorsque vous commencez à lire les fichiers de plus près.
Qu’est-ce que le G-code en impression 3D ?
Le G-code est le langage d’instructions qu’une imprimante 3D suit pendant une tâche. Dans l’impression de filament de bureau, c’est la couche d’exécution qui indique à la machine comment se déplacer, à quel moment extruder, quelles températures viser et quand effectuer des actions d’assistance telles que la commande des ventilateurs. Un slicer traduit son plan d’impression finalisé en cette sortie d’instructions. [1] [18]
Que produit un slicer en impression 3D ?
Un slicer produit un plan de fabrication ordonné, et non simplement le modèle à nouveau enregistré dans un autre format. Cette sortie comprend l’ordre des trajectoires d’outil ainsi que des réglages de procédé tels que les demandes de mouvement, températures, changements de ventilateur et autres instructions d’état d’impression. Dans les flux de travail de bureau courants, ce plan est émis sous forme de G-code. [1]
Le G-code est-il un format de fichier d’impression 3D ?
Oui dans l’usage courant, mais plus précisément, il s’agit d’un langage d’instructions généralement stocké dans des fichiers imprimables. Ces fichiers utilisent couramment des extensions telles que .g, .gco et .gcode, mais l’extension en dit davantage sur la convention de stockage que sur une compatibilité garantie entre imprimantes. [19] [13]
Puis-je utiliser le même G-code sur n’importe quelle imprimante 3D ?
Généralement non, si l’on veut rester prudent. Les différentes familles de firmwares prennent en charge des ensembles de commandes qui se chevauchent, mais des noms qui se recoupent ne garantissent pas un comportement identique. Klipper indique explicitement qu’il vise à prendre en charge les sorties tierces courantes dans des configurations standard, et non toutes les commandes G-code possibles, et la propre documentation de Marlin montre que même des commandes familières comme G0 peuvent avoir un comportement propre au firmware. [13] [2]
Pourquoi un fichier peut-il utiliser G0 pour un déplacement alors que certains firmwares traitent G0 comme G1 ?
Parce que les slicers utilisent souvent G0 et G1 comme conventions de sortie qui aident les humains et les logiciels à distinguer les déplacements des mouvements d’impression. Mais une convention n’est pas la même chose que la sémantique d’exécution. Marlin indique que sur les machines cartésiennes et Delta, G0 est un alias direct de G1 ; le choix de la lettre peut donc être informatif sans impliquer un mode de mouvement distinct. [1] [2]
Comment G90/G91 et M82/M83 changent-ils la signification des mêmes coordonnées et valeurs d’extrusion ?
Ils modifient la manière dont les nombres ultérieurs sont interprétés. G90 et G91 font basculer les axes de mouvement entre positionnement absolu et relatif, tandis que M82 et M83 font de même pour l’axe de l’extrudeur indépendamment des axes de mouvement. Ainsi, une valeur E ou un triplet de coordonnées n’a de sens que si vous savez quels modes de positionnement sont actifs à ce point du fichier. [9] [10] [11] [12]
Le 3MF remplace-t-il le G-code, ou servent-ils à différentes étapes du flux de travail ?
Ils servent à différentes étapes. Le 3MF concerne des informations plus complètes sur le modèle et le package plus tôt dans le flux de travail, tandis que le G-code est la sortie de l’étape d’exécution que l’imprimante lance. Un projet de slicer enregistré au format .3mf est encore différent : il peut préserver les objets, réglages, modificateurs et paramètres comme instantané complet modifiable plutôt que comme instructions exécutables par l’imprimante. [23] [24] [22]
Sources
- Exportation vers G-Code
- G0-G1 Déplacement linéaire
- M104 – Définir la température de la tête d’impression
- M109 – Attendre la température de la tête d’impression
- M140 – Définir la température du plateau
- M190 – Attendre la température du plateau
- M106 – Définir la vitesse du ventilateur
- M107 – Ventilateur arrêté
- G90 – Positionnement absolu
- G91 – Positionnement relatif
- M82 – E absolu
- M83 – E relatif
- G-Codes
- Slicers
- The NIST RS274NGC Interpreter – Version 3
- Systèmes d’automatisation et intégration — Commande numérique des machines — Format de programme et définitions des mots d’adresse — Partie 1
- Fabrication additive — Principes généraux — Fondamentaux et vocabulaire
- Fabrication additive — Fabrication additive par extrusion de matière de matériaux plastiques — Partie 1: Matériaux d’alimentation
- G-code
- G-code binaire
- Visualiseur G-code de PrusaSlicer
- Enregistrement des projets au format 3MF
- Spécification
- Technologies de l’information — Spécification de la suite 3D Manufacturing Format (3MF)
