Aller au contenu

Filament ABS

Yo'

[TUTO] Utiliser un script pour modifier ses Gcodes [V1.1]

Messages recommandés

Hello,

 

J'ai toujours trouvé laborieux de modifier les gcodes.

Du coup, j'ai créé un script téléchargeable ici et voici le tuto pour l'utiliser.

La V1.1 est sortie, voir ici

 

Préambule:

  • Fonctionne sous linux et windows avec python 2 ou python 3 

 

Il n'a que 4 fonctions :

  • Placer une commande à partir d'une couche donnée
  • Placer une commande à partir d'une hauteur de Z donnée
  • Supprimer des commandes
  • Modifier des commandes

 

Le fichier d'origine n'est pas modifié, une copie est réalisée et est renommée avec le suffixe "-new".

Pour l'utiliser, il faut placer le gcodes ainsi que le fichier de commandes dans le même dossier que le script.

Le fichier de commande est un simple fichier texte, qui peut se nommer indifféremment "modifications" ou "modifications.txt"

Voici des exemples de contenu:

Citation

C3 M106 S50
C4 M106 S100
C5 M106 S150
C6 M106 S200
C7 M106 S255

M106

Citation

H1 M109 S210
H10 M109 S215
H20 M109 S220
H30 M109 S225
H40 M109 S230
H50 M109 S235

Tout ce qui commence par "C" (ou "c") suivi d'un numéro indique que la commande qui suit doit être placée au début de la couche "numéro"

Dans le premier exemple :

  • Couche 1, ajout de la commande M106 S50
  • Couche 2, ajout de la commande M106 S100
  • etc ...

Tout ce qui commande par "H" (ou "h" ou "Z" ou "z") suivi d'un numéro indique que la commande qui suit doit être placée a partir de la hauteur "numéro"

Dans le second exemple :

  • Lorsque la hauteur de l'impression va atteindre (ou a atteint, suivant la hauteur de couche) 1mm, ajouter la commande M109 S210
  • Lorsque la hauteur de l'impression va atteindre (ou a atteint, suivant la hauteur de couche) 10mm, ajouter la commande M109 S215
  • Lorsque la hauteur de l'impression va atteindre (ou a atteint, suivant la hauteur de couche) 20mm, ajouter la commande M109 S220

Tout le reste sera supprimé avec ou sans remplacement.

Dans le premier exemple, tous les M106 contenus dans le fichier d'origine ne seront pas copié dans le fichier qui sera crée.

Il est possible de remplacer des commandes en ajoutant "/commande".

Par exemple, si je veux remplacer tous les M106 contenus dans le fichier d’origine par des M107.

Je tape :

Citation

M106/M107

 

Il est important de noter que le script ne modifie pas les valeurs de la phase "init" du gcode. (en gros, tout ce qui se trouve avant "G20", "G21", "G90", "G91", "M82", "M83")

 

Il est possible de lancer le script avec diverses options:

  • -silence, pour ne pas afficher ce que le script fait
  • -debug, pour afficher les mots à supprimer
  • le nom d'un fichier contenant des commandes

 

Par exemple, admettons que le fichier de l'exemple 2 se nomme "tourDeChauffe", au lieu de mettre tout le contenu dans le fichier "modifications", je peux lancer le script avec la commande :

Citation

python go.py tourDeChauffe

 

Dernier point : si vous supprimez des commandes, faites attention à ne pas supprimer les commandes qui servent à couper la chauffe en fin d'impression.

 

Si vous rencontrez des bugs, n’hésitez pas à les faire remonter.

 

🙂

Modifié (le) par Yo'

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympa !

J'avais dans l'idée de me faire un truc du genre, j'aurais sans doute fait ça en bash mais python est certainement plus facile d'installation et d'utilisation sous d'autres SE que Linux.

J'ai juste quelques remarques, dont l'une bien débile mais qui me fait rêver.

Du coup je commence par celle-ci.

Les filaments bois sont réputés pour changer de couleur selon la température d'extrusion. Donc si un programmeur fou était capable de dresser une cartographie 3D des différentes veines d'une essence de bois, on pourrait imprimer vraiment cette essence. Mais ça restera longtemps du domaine du rêve 🙂.

Par contre, plus concret et plus abordable, rajouter deux fonctionnalités au code.

La première, ajouter un bloc de commandes juste après le gcode init. J'ai bien dit un bloc, donc plusieurs lignes.

La seconde, permettre de saisir autre chose que "-new" comme modification du nom de fichier. Donc une variable facultative à écrire dans le fichier de modifications.

Pourquoi ça ? Parce que pour un gcode d'un objet donné je voudrais pouvoir le décliner pour tous mes filaments. Donc rajouter les commandes qui modifieront mes réglages de steps et autre. Bien que je ne sache pas encore si c'est une méthode fonctionnelle.

Modifié (le) par danielc

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait j'ai plusieurs autres suggestions. Je suis en train de faire un récap de tout ce que j'ai appris ici pour mon fils qui va lui aussi recevoir une U30, avec notamment des explications sur ton script, pour qu'il ait tout dans un seul document et n'aie pas à perdre de temps à chercher ce que j'ai déjà trouvé. Où j'ai fait comme si toutes mes suggestions avaient été prises en compte, donc ça irait plus vite si je t'envoyais ce fichier (la partie sur le script). De plus j'ai complètement remanié le texte pour en faire qui ressemble plus à une page de man, et ajouté des choses que je n'ai pas lues ici, comme l'ordre des commandes cn et hn, mais j'ai peut-être écrit des bêtises.

Si tu es intéressé dis-moi si je le met ici ou en mp.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

 

Voici la V1.1, téléchargeable ici.

Les fonctions de base sont identiques à la V1.

J'ai principalement fait en sorte de mieux détecter les couches et les hauteurs et j'y ai ajouté quelques fonctions liées au gcode de début et de fin ainsi qu'une aide en ligne qui s'affiche lorsque l'option appelée n'est pas reconnue.

image.thumb.png.7b836d81153c2270d70155f7519115f2.png

 

Voici à quoi peut ressembler votre nouveau fichier modification.txt

Citation

|#Suffixe -old  --> Suffixe utilisé "-old-"
|#TagDebut ;Debut --> Ajoute ;Debut aux tags permettant d'identifier le début du gcode d'impression
|#TagDebut Debut --> Ajoute Debut aux tags permettant d'identifier le début du gcode d'impression
|#TagFin ;Fin --> Ajoute ;Fin aux tags permettant d'identifier le début du gcode d'impression
|#TagFin Fin --> Ajoute Fin aux tags permettant d'identifier le début du gcode d'impression
|#Filtre 4 --> Indique la largeur du filtre / voir plus bas pour plus d’explications

###Partout### --> à partir d'ici, tout ce qui suit sera exécuté sur tout le gcode
|Debut/;Debut --> Cherchera Debut et le remplacera par ;Debut si Debut est trouvé | voir en dessous pour la subtilité
|Fin/;Fin --> Cherchera Fin et le remplacera par ;Fin si Fin est trouvé                       | voir en dessous pour la subtilité

M221 --> Supprimera tous les M221 trouvés dans la totalité du gcode
M1001 --> Supprimera tous les M1001 trouvés dans la totalité du gcode
M1002 --> Supprimera tous les M1002 trouvés dans la totalité du gcode
###/Partout### --> à partir d'ici, tout ce qui suit sera exécuté dans le gcode d'impression

###Debut### --> à partir d'ici, tout ce qui suit sera exécuté sur le gcode de debut
A ;BlaBlaDebut Ligne 1     |
A ;BlaBlaDebut Ligne 2     |--> Tout ce texte sera ajouté lorsque le début du gcode d'impression sera détecté
a  ;BlaBlaDebut Ligne 3    |

###/Debut### --> à partir d'ici, tout ce qui suit sera exécuté dans le gcode d'impression

C1 M106 S50 --> Ajoute M106 S50 lorsque la couche n°1 sera détectée.
C1 ;Ligne1 atteinte --> Ajoute ;Ligne1 atteinte lorsque la couche n°1 sera détectée.
C2 M106 S100 --> Ajoute M106 S100 lorsque la couche n°2 sera détectée.
C3 M106 S150 --> Ajoute M106 S150 lorsque la couche n°3 sera détectée.
C4 M106 S200 --> Ajoute M106 S200 lorsque la couche n°4 sera détectée.
C5 M106 S255 --> Ajoute M106 S250 lorsque la couche n°5 sera détectée.


M104 --> Supprimera tous les M104 trouvés dans le gcode d'impression
M106 --> Supprimera tous les M106 trouvés dans le gcode d'impression sauf ceux inséré par le script.

###Fin### --> à partir d'ici, tout ce qui suit sera exécuté sur le gcode de fin
A ;BlaBlaFin Ligne 1     |
A ;BlaBlaFin Ligne 2     |--> Tout ce texte sera ajouté lorsque la fin du gcode d'impression sera détecté
a  ;BlaBlaFin Ligne 3    |

###/Fin### --> à partir d'ici, tout ce qui suit sera exécuté dans le gcode d'impression

 

Il y a une subtilité importante à prendre en compte.

Les recherches dans le Gcode s'effectuent de deux manières.

  • Soit le terme se trouve au début de la ligne
  • Soit le terme se trouve dans la ligne

 

Tous les tags doivent se trouver en début de ligne.

Si votre tag de début est "tagDebut" et que dasn votre Gcode il est écrit sous la forme ";tagDebut", il ne sera pas reconnu.

Les commandes à modifier ou supprimer peuvent se comporter des 2 manières suivant leur écriture.

En écrivant M106, si une ligne contient M106, elle sera supprimée.

          Par exemple ;bla M106 sera supprimée

En écrivant |M106, il faut que M106 se trouve en début de ligne pour que la ligne soit supprimée.

| s'obtient par la combinaison de touche "Alt GR" + "6".

 

Ce script fonctionne avec Cura sans tag de début et avec Slic3r, IdeaMaker, Kisslicer avec des tags de début et de fin.

D'ailleurs, je vous conseille d'en mettre dans vos trancheurs afin que tout soit iso.

2019-02-11-135503_2560x1024_scrot.thumb.png.c76a898e0a696b4a164c4bcfc5fb2f3e.png

Attention avec Kisslicer, il n'accepte pas les commandes commentées par un point virgule, mais peu importe car avec cette commande, les points virgule seront ajoutés.

Citation

###Partout###
|Debut/;Debut
|Fin/;Fin
###/Partout###

 

Dernier point au sujet du nom du fichier modifié.

Il se terminera toujours par "-.gcode".

Le "-" est impératif pour ne pas retoucher les fichiers déjà traités.

 

Edit:

J'ai oublié de vous parler du filtre.

Citation

|#Filtre 4

Le programme est basé sur un principe bête et méchant.

Lorsque dans le Gcode il y a une ligne qui contient la lettre Z, ça veut dire qu'il y a changement de couche, sauf dans certaines conditions.

Par exemple, lorsque la buse est relevée lors avant un déplacement puis qu'elle est abaissée pour reprendre l'impression.

Là, ça pose posait problème.

C'est résolu en vérifiant la présence d'un autre Z dans le gcode et la valeur du filtre défini le nombre de lignes à scruter.

Par exemple, voici le début d'une impression.

La buse est relevée pour se déplacer, puis elle est baissée de nouveau.

image.png.5c362627cd5ba5dae2c5d3abd9903167.png

Comme dans les 4 lignes suivant la découverte du premier Z, il y a un autre Z (accompagné de la commande G0 ou G1), ce Z là, n'est pas pris en compte.

Seul le second l'est et la nouvelle hauteur est donc 0.266.

Plus loin dans le gcode, il y a un autre déplacement avec relevage de buse.

image.png.0441d6faf0ed89875e0d95426f952c78.png

Le premier Z n'est toujours pas pris en compte, ni le second car au final Z est toujours à 0.266.

Il faudra donc adapter ce filtre à votre gcode.

Pour ma part, j'ai mis 10.

Mais si un jour j'envisage d'imprimer un cube en mode vase, ça ne va pas forcement bien marcher.

 

Si le filtre est bien réglé, la prochaine couche détectée sera effectivement le début de la seconde couche.

 

@danielc, j'ai pris en compte certaines de tes suggestions et je n'ai pas codés les autres car il est possible de gérer ça en utilisant des dossiers séparées avec un script dans chacun d'eux.

2019-02-11-140151_2560x1024_scrot.thumb.png.45aaad9d39aae29b4da962f144841cb5.png

 

Comme d'hab, si vous avez des remarques, n’hésitez pas.

 

Et surtout, n'oubliez pas :

Citation

Dernier point : si vous supprimez des commandes, faites attention à ne pas supprimer les commandes qui servent à couper la chauffe en fin d'impression.

 

🙂

Modifié (le) par Yo'

Partager ce message


Lien à poster
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez poster un message et vous inscrire plus tard. Si vous avez déjà un compte, connectez-vous afin de poster avec.

Invité
Répondre à ce sujet…

×   Vous avez copié du contenu avec formatage.   Supprimer le formatage

  Only 75 emoji are allowed.

×   Votre lien a été automatiquement intégré.   Afficher en tant que lien à la place

×   Le contenu sauvegardé a été restauré.   Effacer l'éditeur

×   You cannot paste images directly. Upload or insert images from URL.


  • Sur cette page :   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...