8 min de lecture
Je débute en tournage CN : mon simulateur d'entraînement, et ce qu'il m'apprend
Je débute en tournage sur commande numérique et je voulais m'entraîner au G-code chez moi, en voyant l'usinage. Je n'ai pas écrit ce simulateur seul : Claude en a écrit presque tout le code. Voici ce que j'ai demandé, ce qui a été vérifié, et ce que j'apprends en l'utilisant, captures à l'appui.

J'ai commencé par la chaudronnerie, puis je me suis reconverti dans le développement web. Puis je suis arrivé, un peu par hasard, dans un troisième métier : le tournage sur commande numérique. Je raconte ce parcours dans un autre article. En tournage CN, je débute depuis décembre 2025.
Pour progresser, je voulais m'entraîner à programmer en G-code chez moi, en voyant ce que mon programme usinait. Je n'ai pas trouvé l'outil qui me convenait, alors je l'ai fait construire par une IA : j-ned-cn-simulator. Je préfère le dire tout de suite : ce simulateur, je ne l'ai pas codé seul. Claude en a écrit l'essentiel, en un vendredi soir et un samedi. La partie Angular, je la maîtrise : là, je savais ce que je relisais. Le moteur de simulation, lui, est sorti de mes compétences. Mon rôle a été de dire ce dont j'avais besoin, de relire la partie que je maîtrise, et de m'en servir pour apprendre.
Cet article raconte ces trois choses. Ce n'est pas un article d'expert : c'est un carnet de débutant.
Le besoin
On ne s'entraîne pas sur une machine de production. Le temps machine est compté, la matière coûte cher, et une erreur de programme peut casser un outil. Pourtant, lire une ligne comme G1 X24. Z-15. F0.1 et voir dans sa tête l'outil avancer dans la matière, ça ne s'apprend qu'en pratiquant.
Et au tout début, il y avait surtout la peur. Peur d’un décalage d’origine mal pris, et d’envoyer la tourelle tout droit dans la broche. Peur d’un outil mal jaugé en X. Peur d’avoir oublié de reprendre une cote en X dans le programme alors que le diamètre du brut n’était plus le même. Aucune de ces erreurs ne se voit en relisant une ligne : on les découvre quand il est trop tard.
Le simulateur ne fait pas disparaître toutes ces peurs, et je préfère être clair là-dessus. Les décalages d’origine et les jauges d’outils se règlent sur la machine, et il ne les connaît pas : ça, c’est la rigueur au pupitre et la vérification avant de lancer qui me l’apprennent. Mais la troisième, un programme qui ne correspond plus au brut, il la montre tout de suite : je saisis le diamètre du brut, et une approche en rapide trop près de la pièce apparaît comme un rapide dans la matière.
Ce que j'ai demandé
C'est là que mon passage par le développement m'a servi. Je ne savais pas écrire un simulateur, mais je savais décrire ce que je voulais, et le découper en étapes qu'on peut tester une à une. Ma liste ressemblait à ça :
- coller un programme et le voir lu comme la machine le lirait, avec les erreurs signalées à la ligne près ;
- voir l'usinage : la trajectoire de l'outil, la matière qui part, la pièce finie en 3D ;
- comprendre chaque mot d'une ligne sans rouvrir le manuel à chaque fois ;
- être prévenu quand un programme est dangereux : un déplacement rapide qui traverse la pièce, un outil qui entre dans les mors ;
- pouvoir choisir sa machine, puisque les codes changent d'une machine à l'autre ;
- tourner sous Linux, en application de bureau.
Le partage s'est fait naturellement selon ce que je sais faire. Côté Angular, c'est mon terrain : Angular 22 sans zone, des signaux, le calcul isolé du framework dans un dossier domain/ en TypeScript pur, comme dans mes autres projets. Là, je relisais en connaissance de cause et je corrigeais. Le moteur de simulation (lecture du G-code, géométrie, enlèvement de matière, vue 3D avec three.js) et l'empaquetage avec Tauri, c'est Claude qui les a écrits, avec leurs tests. Là, j'apportais la documentation et les questions de métier, et je regardais la pièce simulée plutôt que le code.
Ce qui a été vérifié, et par qui
Une IA écrit vite un simulateur très convaincant. Elle peut aussi écrire un simulateur convaincant et faux, et quand on débute, on est mal placé pour voir la différence. Je le dis franchement : sur le moteur de simulation, je ne sais pas encore vérifier seul.
Ce qui m'a rassuré, c'est la méthode. À chaque étape, Claude confrontait le simulateur à la réalité : la documentation de la machine, les cotes attendues de la pièce. Et il a relevé puis corrigé lui-même trois erreurs en route :
- La fin du cycle d'ébauche. À la fin d'un
G71, l'outil repartait au mauvais endroit. - La vitesse maximale de la broche. La première valeur était celle annoncée pour la gamme de machines, alors que la version précise est limitée plus bas.
- Un congé qui n'existe pas. En finition, la pièce simulée gardait un petit arrondi au pied des épaulements. La cause : la correction de rayon de bec (
G41/G42), par laquelle la machine décale sa trajectoire pour compenser l'arrondi de la plaquette. Le simulateur ne la gérait pas ; il la gère maintenant.
Je n'aurais repéré aucune des trois. C'est justement ce qui me fait garder une règle simple : ce que le simulateur affiche, je le prends comme une piste à confirmer à l'atelier, jamais comme une vérité.
Pour la même raison, chaque profil de machine porte sa source. Un profil qui ne vient pas de la documentation du constructeur s'affiche « à confirmer ». Pour un débutant, un outil qui dit « je ne suis pas sûr » vaut mieux qu'un outil qui se trompe avec assurance.
Ce que j'apprends en l'utilisant
C'est la partie qui compte vraiment pour moi.
Survoler une ligne pour la comprendre. En G-code, un même mot change de sens selon le contexte. U est un déplacement en X, sauf dans un cycle d'ébauche G71, où c'est la profondeur de passe, et sauf dans sa deuxième ligne, où c'est la surépaisseur de finition. Au survol, le simulateur m'affiche le sens de chaque mot à cet endroit. Sur la deuxième ligne du G71 du programme d'exemple, ça donne ceci :

C'est exactement ce que je cherchais : la réponse à « c'est quoi déjà, ce U ? » sans quitter le programme des yeux.
Changer un chiffre et voir la pièce changer. La coupe 2D montre le brut, les passes d'ébauche en pointillés et le contour fini. Si je passe U1.5 à U3. dans le G71, je vois à peu près deux fois moins de passes, chacune deux fois plus profonde. On ne retient pas une règle de la même façon quand on la voit.

Me tromper sans rien casser. Dans le programme d'exemple, la ligne Z-20.,R2. arrondit le coin d'un rayon de 2 mm. Si je le passe à 3 mm, le simulateur refuse : le bloc suivant (X30.) ne fait que 2 mm de long, il n'y a pas la place pour le rayon. Il affiche l'erreur avec le numéro d'alarme de la commande, P384, celui que la machine afficherait aussi :

Sur une machine, je l'aurais appris en arrêtant le programme. Ici, je l'apprends en changeant un chiffre.
Découvrir des règles que je ne connais pas encore. Le simulateur signale un G96 sans G50, et je n'ai pas encore appris cette règle à l'atelier. Son explication : en vitesse de coupe constante, plus l'outil approche du centre, plus la pièce tourne vite, et sans limite posée par G50, elle monterait jusqu'au maximum de la broche. Je la note dans ma liste de questions à poser au travail, pour l'entendre de quelqu'un qui l'applique.
Apprendre le vocabulaire. Les plaquettes se désignent par un code comme CNMG 120408. Le simulateur le décode (losange à 80°, arête de 12 mm, rayon de bec de 0,8 mm), et c'est en le lisant au fil des programmes que j'apprends à le déchiffrer.
Ce qu'il ne fait pas
- Ce n'est pas un jumeau numérique certifié, et l'application l'affiche en permanence en haut de l'écran. Il me sert à apprendre et à relire, rien de plus. Devant une vraie machine, l'outil du constructeur, les collègues expérimentés et la première pièce surveillée restent la règle.
- Il ne contrôle pas les collisions avec la tourelle ou la contre-pointe.
- Ses données de coupe sont des ordres de grandeur génériques, pas celles d'un vrai catalogue d'outils.
- Deux profils de machine seulement, dont un provisoire.
Ce que je retiens
Je n'aurais pas pu écrire ce simulateur seul aujourd'hui, ni en un week-end. Mais je n'aurais pas pu le faire construire sans savoir ce que je voulais, et je ne le prends pas pour un professeur : c'est un cahier d'exercices, et les réponses, je vais les chercher à l'atelier. Je crois que c'est la bonne façon d'utiliser une IA quand on apprend : pour se fabriquer un outil d'entraînement, pas pour sauter l'entraînement.
Je débute, et il y a sûrement dans cet article des choses qu'un tourneur expérimenté corrigerait. Si c'est ton cas, écris-moi, c'est exactement pour ça que je publie. Le code n'est pas public pour l'instant, et le formulaire de contact est sur nedellec-julien.fr.