Auteur Sujet: Affichage du n° de couche sur LCD  (Lu 1512 fois)

BrunoBellamy

  • Hero Member
  • *****
  • Messages: 2098
    • Voir le profil
    • Bellaminettes Blog
Affichage du n° de couche sur LCD
« le: 08 décembre, 2015, 03:17:00 pm »
Si, comme moi, vous utilisez Cura et un Full Graphic Smart Controller (et ça marche peut-être sur d'autres afficheurs, je ne sais pas), vous serez très probablement intéressé par ce petit plugin

Il affiche le n° de la couche en cours d'impression ainsi que le nombre total de couches, et permet ainsi, d'un coup d'œil, de savoir où on en est. C'est tout bête, mais je trouve ça vraiment très utile. :)

Fred_replicant

  • Hero Member
  • *****
  • Messages: 833
    • Voir le profil
Re : Affichage du n° de couche sur LCD
« Réponse #1 le: 08 décembre, 2015, 06:54:16 pm »
Merci Bruno,

Il faudrait pouvoir rassembler toutes les infos sur les LCD.
Wiki toujours mort ?
Smartrap Orange V 0.4.9.2 Jheadlite 0.35 GT2
(mais bon, je vais la démonter ....snif)

CORE 50X50 Fred_Design

BrunoBellamy

  • Hero Member
  • *****
  • Messages: 2098
    • Voir le profil
    • Bellaminettes Blog
Re : Affichage du n° de couche sur LCD
« Réponse #2 le: 08 décembre, 2015, 07:19:38 pm »
c'est sûr que ça serait cool de faire un "best of LCD"… :)

Et oui, pour l'instant (que je sache) le Wiki est aux abonnés absents…

oikos

  • Hero Member
  • *****
  • Messages: 724
    • Voir le profil
  • 3d printer: Smartrapcore Alu en caisson fermé + extraction
  • country/Pays: France
  • region/departement: Centre Alsace (68)
Re : Affichage du n° de couche sur LCD
« Réponse #3 le: 09 décembre, 2015, 07:10:28 am »
Tout comme Tapatalk ! ....  :'(
Mes piéces sur Thingiverse: http://www.thingiverse.com/oikos/designs

Niko

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Re : Affichage du n° de couche sur LCD
« Réponse #4 le: 09 décembre, 2015, 07:23:33 am »
A priori, le wiki est de nouveau accessible mais le contenu n'a pas ete restauré :
http://smartfri.odns.fr/dokuwiki/doku.php?id=start

Fred_replicant

  • Hero Member
  • *****
  • Messages: 833
    • Voir le profil
Re : Affichage du n° de couche sur LCD
« Réponse #5 le: 09 décembre, 2015, 04:41:18 pm »
D'ailleurs, je viens de recevoir mon LCD et une deuxième tête.
Pour l'imprimante bien entendu !  ;D
Smartrap Orange V 0.4.9.2 Jheadlite 0.35 GT2
(mais bon, je vais la démonter ....snif)

CORE 50X50 Fred_Design

BrunoBellamy

  • Hero Member
  • *****
  • Messages: 2098
    • Voir le profil
    • Bellaminettes Blog
Re : Affichage du n° de couche sur LCD
« Réponse #6 le: 09 décembre, 2015, 04:59:48 pm »
Je suis justement en train de finir d'imprimer les pièces pour tester mon nouveau prototype de double tête… prochainement sur Thingiverse ! :)

Hodinn

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Affichage du n° de couche sur LCD version SLICE 3D dans ce post
« Réponse #7 le: 16 décembre, 2015, 10:18:24 pm »
Bonjour à tous,  ;)

Bonjour Bellamy,  (je te remerci pour ton aide mas smartrapcore fonctionne parfaitement maintenant (juste l extrudeur qui pattine de temps a autres pour charger le fil..)

Sinon,  8)

Je vient de voir le petit upgrade pour le LCD layer que tu as été trouver pour cura....

Pour que les utilisateurs de repetier host et slice 3D ne soient pas en reste, voila un équivalent que j'ai programmé ce soir en apprenant un peu le python.

Je mets le fichier en pièce jointe mais je le mets aussi en code source ci-dessous. je l'ai détaillé au plus possible pour que si ça intéresse quelqu un cela lui donne des facilitées pour développer autre chose pour nos imprimantes 3D...

Citer
Pour info, je viens d’améliorer le Code pour qu on puisse s'en servir avec le gcode format carte SD généré par repetier, le code dans le post est à jour mais la piece jointe non, je peut pas l'enlever, donc je refait un petit post juste en dessous avec le fichier mis à jour.


#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
# L'utlisation de ce code est de votre propre responsablité.

# Derniere Version 20/12/2015 optimisé carte SD donc fichier en .gco  le parametrage de la ligne de commande a été modifier
# Voir dans la doc plus bas

# Mon premier programme python en m'inspirant de l'exemple http://wiki.ultimaker.com/CuraPlugin:_Showlayer
# Pour Cura en interne et un Full Graphic Smart Controller
# un Topic posté par BrunoBellamy sur http://talk.smartfri.odns.fr/index.php?topic=767.0

# et en m'aidant de quelques liens internet http://www.commentcamarche.net/forum/affich-2439745-python-chercher-une-chaine-dans-un-fichier
# et http://www.afpy.org/forums/forum_python/forum_general/293580784448
# qui mon apris a creer quelque chose sous python

# Module pour générer l'affichage des couches sur ecran LCD
# type rerapdiscount smart_controlleur 4 lignes    Couche x  sur l'ensemble des couches

# et pour un gcode generé par repetier Host et Slice3D

# surement compatible avec les autres si ils affichent les commandes M117

# PS : attention utilisé le gcode pour SD .gco si vous metter le fichier dans le lecteur SD de votre afficheur
#       detail de l'utilisation en bas du code (tout en bas)

#ce Code a été créé sous windows 7 avec python 2.7.2


# Ici on cherche le nombre de couche maximal

import sys
nom_du_fichier_e = sys.argv #recupere le nom du fichier dans la ligne de commande
nom_du_fichier = str(nom_du_fichier_e[1]) #convertie l objet list nom_de fichier_e en chaine de caractere
ext_du_fichier = str(nom_du_fichier_e[2])

#ext_du_fichier = ".gco" #creer le .gcode dans une variable chaine de caractere

chaine = "G1 Z" # Texte à rechercher utiliser
                           # G1 Z  sert pour les fichiers gcode qui sont enregistres en format SD par repetier

memorise_old_line = ""               
layer_max = 0 # met la couche maximal a 0 car pour la SD il y a un G1 Z pour le nozzle avant les autres

layer = -1 # met la couche a verifier -1 car pour la SD il y a un G1 Z pour le nozzle avant les autres


with open(nom_du_fichier+ext_du_fichier, "r") as fichier:  # ouvre le fichier .gcode en mode lecture
lines = fichier.readlines() #extrait toutes les lignes du fichiers
for line in lines: #creer une boucle qui passe en revut tout les lignes du gcode
    if chaine in line: #detect si la chaine recherché est sur cette ligne
if line <> memorise_old_line:     # le line <>memorise recherche le doublont car le systeme rajoute plusieur iteration G1 Z identique pour quoi je ne sais pas
         #print line #imprime dans l'invite de commande la ligne si elle est trouvé
         layer_max = layer_max + 1 #increment de 1 la couche maximal achaque couche trouvé
     memorise_old_line = line
                 if "start_gcode = G28" in line:        #il ya un dernier layer qui n'en ai pas un si c'est un gcode (avec remarque)
                     layer_max = layer_max - 1          #et non SD gcode de repetier donc layer max deduit de 1

fichier.close() # referme le fichier proprement

print layer_max

sLayer_max = str(layer_max -1 ) #convertie le resultat numérique (integer) en chaine de caractere

# Ici on va recherche chaque couche qui sont inscrite en information dans le gcode
# et on va faire une insertion de l information ou il faut quand il faut

chaine = "G1 Z" # Texte à rechercher
layer = -1
memorise_old_line = ""

with open(nom_du_fichier+'_LCD'+ext_du_fichier, "w") as fichier:   #ici on ouvre un nouveau fichier mais en mode ecriture



for line in lines: #on passe en revue toute les lignes de l'ancien
fichier.write(line) # on reécrit toute les ancienne ligne (ps j'ai pas touchez au retour chariot elle sont toujours la)
    if chaine in line:
    if line <> memorise_old_line:                     #detect si la chaine recherché est sur cette ligne
                     layer = layer + 1                   # on increment de 1 la couche actuel pour passer a la suivante
                 if chaine in line and layer >= 0 and line <> memorise_old_line:      #on re-teste la chaine mais avec un layer > ou = a 0 a cause du 1er G1 Z du nozzle
         print line #imprime la ligne si elle est trouvé   le line <>memorise recherche le doublont car le systeme rajoute plusieur iteration G1 Z identique pour quoi je ne sais pas

         sLayer = str(layer) #on convertie la couche numérique en chaine de caractere
                     print str(sLayer)
                     if "start_gcode = G28" in line: # or line <> memorise_old_line:    #test si start_gcode... existe en bas du gcode c'est pour eviter de mettre un M117 pour rien
                         x = 1                          #ne sert a rien c'est jsute pour le bloc if
                     else:                              #comme je sais pas encore faire un if not j'ai tricher pour avoir le meme resultat
                         fichier.write("M117 Couche " + sLayer + " sur " + sLayer_max + "\n") #on rajoute les lignes M117 pour afficher les info sur le LCD
     memorise_old_line = line
                     #layer = layer + 1 # on increment de 1 la couche actuel pour passé a la suivante
fichier.close()
print "Fichier " + nom_du_fichier+'_LCD'+ext_du_fichier+" creer, il y a " + sLayer_max + " couches reellement..."
#print sLayer_max

#pour l utiliser avec slice3d et repetier host,

#attention le gcode qui sort a la base de reptier pour etre utlilsé par lui n'est pas pareil
# que celui qu'il produit pour la carte SD, il n'y as pas les remarques avec les ; sur le second

#il vous faut copier ce fichier ainsi que votre gcode généré par repetier host par le trancheur (sauvegarde en fichier SD)
# à la base du sous repertoire  C:\Program Files\Repetier-Host\python  (enfin si vous avez pas installer python independament)
# (la python se trouve en version minimal dans ce sous repertoire)

#la perso, j'ouvre une ligne commande cmd ou command.com

#puis je vais à la base du repertoire en tapant cd C:\Program Files\Repetier-Host\python

#dedans il y a nos 2 fichiers ainsi que le programme python installer par repetier host
#la vous n'avez plus qu'a taper dans la ligne de commande  sous windows

# 2 exemples
#  python.exe smartcore_lcd_layer.py smartrapcore_test   .gco ou .gcode
#  python.exe smartcore_lcd_layer.py nom_du_fichier   .gco   (ne pas coller le .gco ou le .gcode au nom du fichier)

#le smartrapcore_test c'est ce que vous remplacerez par le nom de votre fichier gcode

#attention ne mettez pas le .gcode ou .gco  coller derriere le nom du fichier fait un ou 2 expace devant le .  n'ecrivez pas du style smartrapcore_test.gcode

#le prog ce charge de rajouter le .gcode ou .gco ensuite et permet de creer le fichier de sortie plus facilement.

# Vous aurrez alors un nouveau fichier à cette emplacement nommé nom_du_fichier_LCD.gcode nom_du_fichier_LCD.gco  si fichier SD (optimisé pour)

#jetez un oeil dessus vous verrez que les infos M117  sont presentes à chaque changement de couche

#si vous ne souhaitez pas voire le programme travaillé dans la ligne de commande

# alors mettez un diese devant print sLayer_max et print layer_max et les 2  print line
# pour rendre la ligne non executable dans le code de ce programme

# perso je pense que cela permet de verifier que vous avez bien toutes les info de couche d identifié

# Bonne Utilisation Hodinn



Cordialement

Hodinn

PS 1 : si erreur d'orthographe il y a, pour les accent pas sur que python aime cela donc je me suis abstenu et pour marlin lors de la lecture du gcode je savais pas si il aimerait cela ou pas...

PS 2 : Maintenant je vais reposer mes méninges  ::)

IMPORTANT MAJ PJ dans post du 20 DEC 2015,

J'ai modifié le code plus haut mais pas la PJ de ce post, je me suis aperçu que ça n'aller pas bien avec les fichiers . gco en format SD,  la c'est corrigé,  pour télécharger le fichier qui est bon aller sur mon post du 20 décembre, car je peut pas enlever les ancienne piece jointe, j'ai aussi rajouté un argument au lancement, et modifier la doc dans le code...
« Modifié: 20 décembre, 2015, 08:20:35 pm par Hodinn »
imprimante 3D SMARTCORE avec plateau chauffant mk3 et alimenation ATX 12V 500W + Modif pour interrupteur d'allumage et voyant de veille et de fonctionnement.
Rajout le 12 decembre d'un reprap Smartcontroleur LCD 4 ligne


Hodinn

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Affichage du n° de couche sur LCD
« Réponse #9 le: 18 décembre, 2015, 10:12:01 pm »
Voila le fichier Compatible SD  pour repetier / slice 3D

Attention cette piece jointe n'est plus à jour, voir celle dans le post plus bas.

++
« Modifié: 20 décembre, 2015, 04:32:27 pm par Hodinn »
imprimante 3D SMARTCORE avec plateau chauffant mk3 et alimenation ATX 12V 500W + Modif pour interrupteur d'allumage et voyant de veille et de fonctionnement.
Rajout le 12 decembre d'un reprap Smartcontroleur LCD 4 ligne

Fred_replicant

  • Hero Member
  • *****
  • Messages: 833
    • Voir le profil
Re : Affichage du n° de couche sur LCD
« Réponse #10 le: 19 décembre, 2015, 01:42:48 pm »
Je n'ai pas lu dans le détail, mais en fait c'est pré traitement du fichier g-code avant de le faire exécuter.
Exact ?
Smartrap Orange V 0.4.9.2 Jheadlite 0.35 GT2
(mais bon, je vais la démonter ....snif)

CORE 50X50 Fred_Design

Hodinn

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Re : Affichage du n° de couche sur LCD
« Réponse #11 le: 20 décembre, 2015, 04:42:11 pm »
Bonjour,

Voici la Pièce jointe corrigée au 20 decembre 2015,  désolé je m'étais focalisé que sur le .gcode et pas le .gco et je me suis aperçu que repetier doublé des-fois les info de changement de z, surement du fait de la procédure de  création du tranchage, ce qui augmenté le nombre de couche compté sans que cela soit nécessaire car identique

dans le code du fichier j'ai rajouté en remarque la date du 20/12/2015 pour que vous sachiez que vous avez la bonne version. par contre faudra enlever manuellement dans la piece jointes #fichier.write("; MAJ pour rajout des Info de Couche sur écran LCD construit en python\n") avec un editeur de texte qui conserve les caractères spéciaux comme texpad ou notepad++ ou l’interpréteur python

donc maintenant faut le lancer du style  python.exe smartcore_lcd_layer.py nom_du_fichier   .gco   (ne pas coller le .gco ou le .gcode au nom du fichier)

respecté les espaces.

Je n'ai pas lu dans le détail, mais en fait c'est pré traitement du fichier g-code avant de le faire exécuter.
Exact ?

Oui Fred c'est un pré traitement après que repetier est tranché le fichier et qu'il a été sauvegardé en format carte SD .gco ou repetier-Host( ctrl PC) .gcode

tu le moulines et tu recopies le fichier résultat où il y a de rajouté dans le nom de fichier LCD et tu le met sur ta carte SD

J'ai regardé dans répetier, il existe un systeme de filtre dans "avancé" mais il y a pas d'info dessus et j'ai pas encore réussi à lancer pyhon à l’intérieur mais c'est peut être du a ma propre configuration...

Sinon il y a les scripts programmable dans repetier en C C++ mais je ne pas connait vraiment ce langage là a part celui apparenté (sous arduino IDE...)

bonne fin de journée++
« Modifié: 20 décembre, 2015, 08:23:18 pm par Hodinn »
imprimante 3D SMARTCORE avec plateau chauffant mk3 et alimenation ATX 12V 500W + Modif pour interrupteur d'allumage et voyant de veille et de fonctionnement.
Rajout le 12 decembre d'un reprap Smartcontroleur LCD 4 ligne

gaston

  • Full Member
  • ***
  • Messages: 212
    • Voir le profil
  • 3d printer: core X Y bois "maison"
  • buying date: 03.03.014
  • region/departement: yvelines (78)
Re : Affichage du n° de couche sur LCD
« Réponse #12 le: 20 décembre, 2015, 09:37:20 pm »
pour info, repetier ne génère "rien", le trancheur par contre ...
Testé avec Slic3r je pense mais quid de Cura ?
ou bien ton code analyse le gcode proposé à repetier et ajoute ce qu'il faut ? (ça risque d’être différent suivant le trancheur ?)

Hodinn

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Re : Affichage du n° de couche sur LCD
« Réponse #13 le: 02 janvier, 2016, 08:02:31 pm »
pour info, repetier ne génère "rien", le trancheur par contre ...
Testé avec Slic3r je pense mais quid de Cura ?
ou bien ton code analyse le gcode proposé à repetier et ajoute ce qu'il faut ? (ça risque d’être différent suivant le trancheur ?)

Bonsoir désolé du retard dans la réponse.

Oui repetier de tranche pas mais tu as l'option de tranchage à l’intérieur qui exécute soit slic3D soit Cura....

Pour Cura, regarde le poste de Bellamy tout en haut, il y a déjà un script qui s’intègre dans Cura (il a mis le lien), donc je ne me suis pas intéressé à CURA pour cette raison.

alors quand tu lance repetier et que tu tranche à partir de lui (a travers slic3D) de lui , tu vas pouvoir enregistré ton travail préparatoire en gcode ou gco ( pour carte SD)

quand tu as sauvegardé ce fichier, tu n'as plus qu'à exécuter mon code sous python dans l’environnement Command.com (cmd) de windows avec les paramétré nécessaire.

tu récupéras alors un Nouveau fichier (avec _LCD en plus dans le nom du fichier) avec les couches qui s'afficheront sur ton écran LCD.

Je peut pas être plus clair (tout les détails de la procédure est à la fin du code)...

++ Hodinn

imprimante 3D SMARTCORE avec plateau chauffant mk3 et alimenation ATX 12V 500W + Modif pour interrupteur d'allumage et voyant de veille et de fonctionnement.
Rajout le 12 decembre d'un reprap Smartcontroleur LCD 4 ligne

BrunoBellamy

  • Hero Member
  • *****
  • Messages: 2098
    • Voir le profil
    • Bellaminettes Blog
Re : Affichage du n° de couche sur LCD
« Réponse #14 le: 06 juillet, 2016, 12:43:01 pm »
Ultimaker ayant décidé de modifier son site web, non seulement le lien que j'avais indiqué au départ, pour le script d'origine, n'arrive plus nulle part, mais en plus je n'ai pas réussi à le retrouver sur leur site.

Fort heureusement, on peut le dénicher ici :

https://github.com/AmedeeBulle/ShowLayer