Mode pen solution alternatif avec python

Compte tenu qu’il y a aujourd’hui des traducteurs efficaces je me permet de parler ma langue le français.

J’ai trouvé un solution pour le remplissage avec lighburn pour que le stylo monte a chaque fois que le laser s’éteins et quand il s’allume le stylo descend

la seule contrainte est qu’on doit enregistrer le gcode pour le modifier avec un script python

pour le remplissage décalé

Ouvrir le fichier G-code d’origine

with open(‘toto.gc’, ‘r’) as fichier:
lignes = fichier.readlines()

Liste pour stocker les nouvelles lignes

nouvelles_lignes =

Parcourir chaque ligne du fichier

for ligne in lignes:
# Ajouter la ligne actuelle au fichier modifié
nouvelles_lignes.append(ligne)
# Si la ligne contient “M106 S0”, ajouter les nouvelles lignes
if “M106 S0” in ligne:
nouvelles_lignes.append(“G91\n”)
nouvelles_lignes.append(“G0 Z10\n”)
nouvelles_lignes.append(“G90\n”)
if “M106 S127.5” in ligne:
nouvelles_lignes.append(“G91\n”)
nouvelles_lignes.append(“G0 Z-10\n”)
nouvelles_lignes.append(“G90\n”)

Écrire les modifications dans un nouveau fichier

with open(‘toto4.gcode’, ‘w’) as fichier_modifie:
fichier_modifie.writelines(nouvelles_lignes)

print(“Les modifications ont été appliquées avec succès.”)

pour remplissage

Ouvrir le fichier G-code d’origine

with open(‘toto.gc’, ‘r’) as fichier:
lignes = fichier.readlines()

Liste pour stocker les nouvelles lignes

nouvelles_lignes =

Parcourir chaque ligne du fichier

for ligne in lignes:
# Ajouter la ligne actuelle au fichier modifié
nouvelles_lignes.append(ligne)
# Si la ligne contient “M106 S0”, ajouter les nouvelles lignes
if “M106 S0” in ligne:
nouvelles_lignes.append(“G0 Z10\n”)
if “M106 S127.5” in ligne:
nouvelles_lignes.append(“G0 Z-10\n”)

Écrire les modifications dans un nouveau fichier

with open(‘toto4.gcode’, ‘w’) as fichier_modifie:
fichier_modifie.writelines(nouvelles_lignes)

print(“Les modifications ont été appliquées avec succès.”)

Bon pour M106 S127.5 il faut mettre votre valeur et il faut aussi adapter votre Z10 et Z-10

Du coup c’est tellement simple que je ne comprend pas que lighburn ne crée pas une fonction pour ajouter mode stylo, c’est pas le plus efficace mais ca permet de colorier ce qu’on veut avec lighburn

avant
https://www.mycloud.ch/l/L00CBE886D10A777D3E48070490C74D06C8A5CC88B56B4E7F9C23B156CCC6F6B4

après

https://www.mycloud.ch/l/L00DE301302D1E32535ADFD4A10DBEADDCC217B2BBD1DC100631ABEB260D092C0

1 Like

This is very interesting. I am sure someone will be translating the entire posting.

UPDATE:
I did out of curiosity and saw M106 in the instructions. This is a controller-specific M-code and the additions may need revising to work on other machines. But the concept is a great start.

A simple manual search and replace in a text editor would work if you have all day…

if “M106 S0” in line:
new_lines.append(“G91\n”)
new_lines.append(“G0 Z10\n”)
new_lines.append(“G90\n”)
if “M106 S127.5” in line:
new_lines.append(“G91\n”)
new_lines.append(“G0 Z-10\n”)
new_lines.append(“G90\n”)

I am sure the S-value will not always be 127.5, but some work on the script can accommodate this issue.

I’ve been using LightBurn for pen plotting on the A1 spider, it has a nice little holder that uses a spring to raise/lower the pen. They call it the ‘artist module’.


2 Likes

Have you checked what you can do with Lightburn Custom GCode device?
Maybe you can have the output you´re trying to achieve.

Il y a un problème quand on utilise le script pour remplissage décalé sur plusieurs pièce en même temps je vais chercher une solution

Bonjour,

Voici la version du script python qui vous permet de traiter un remplissage décalé sur plusieurs dessin en même temps, pour qu’il fonctionne pour vous il faut chercher la valeur M106 S127.5 et la modifié dans
if “M106 S127.5” in ligne:

La suite du projet c’est de détecter les sauts et pas simplement le laser qui s’allume ou s’éteins

Ouvrir le fichier G-code d’origine

with open(‘toto.gc’, ‘r’) as fichier:
lignes = fichier.readlines()

Liste pour stocker les nouvelles lignes

nouvelles_lignes =

Parcourir chaque ligne du fichier

for i, ligne in enumerate(lignes):
# Ajouter la ligne actuelle au fichier modifié
nouvelles_lignes.append(ligne)

# Vérifier les conditions pour M106 S0
if "M106 S0" in ligne:
    ligne_precedente = lignes[i - 1].strip() if i > 0 else ""
    if ligne_precedente not in ["G91", "G90"]:  # Si ce n'est pas "G91" ou "G90", on ajoute les nouvelles lignes
        nouvelles_lignes.append("G91\n")
        nouvelles_lignes.append("G0 Z10\n")
        nouvelles_lignes.append("G90\n")

# Vérifier les conditions pour M106 S127.5
if "M106 S127.5" in ligne:
    ligne_precedente = lignes[i - 1].strip() if i > 0 else ""
    if ligne_precedente != "G90":  # Si ce n'est pas "G90", on ajoute les nouvelles lignes
        nouvelles_lignes.append("G91\n")
        nouvelles_lignes.append("G0 Z-10\n")
        nouvelles_lignes.append("G90\n")

Écrire les modifications dans un nouveau fichier

with open(‘modifie.gcode’, ‘w’) as fichier_modifie:
fichier_modifie.writelines(nouvelles_lignes)

print(“Les modifications ont été appliquées avec succès (avec contraintes supplémentaires).”)

Je vous conseil d’imprimer un système comme celui la pour tenir le stylo mais aussi avoir une pression toujours identique

https://www.mycloud.ch/l/L004C67E8C3F13C022ED8DA135F4436687D16CF066FA82B8957FB1FCB411DAE08