|
| Chaine occurence renvoie 0 |
| Iniciado por Quentin Lec., 12,dic. 2019 10:19 - 4 respuestas |
| |
| | | |
|
| |
Miembro registrado 18 mensajes |
|
| Publicado el 12,diciembre 2019 - 10:19 |
Bonjour,
Je souhaite compter un terme dans un fichier, j'utilise donc la fonction chaîne occurrence, hors le résultat obtenu est toujours 0.

Voici donc mon code, si vous avez des suggestion je suis preneur.
Quentin |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2019 - 11:00 |
Peut-être avec ce code le remplacement de la BOUCLE - FIN
Compteurlayer = 0 BOUCLE LigneLue = fLitLigne(IDFichier) SI ErreurDétectée ALORS Erreur(ErreurInfo()) SORTIR FIN SI LigneLue = EOT ALORS SORTIR Compteurlayer+=ChaîneOccurence(LigneLue, "; layer ") FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 512 mensajes |
|
| Publicado el 12,diciembre 2019 - 11:05 |
Bonjour Quentin,
Dans les exemples de fichiers gcode que j'ai pu trouver, le caractère ";" en début de ligne indique une ligne de commentaire.
Je vois qu'il faut distinguer 2 cas de figure dont je donne un exemple
;Layer count:311 et
;LAYER:0
A priori, [;Layer count:] ne devrait figurer qu'une seule fois dans le fichier (j'imagine que ce n'est pas la ligne à compter). En revanche il y a probablement plusieurs [;LAYER:] (j'imagine que c'est ce qu'il faut compter).
Remarque valable dans les 2 cas : (1) il n'y a pas de caractère espace entre le ";" et "LAYER". (2) il y a au plus 1 commentaire LAYER par ligne, donc la fonction ChaîneOccurrence n'est pas forcément appropriée. Il existe d'autres possibilités plus flexibles comme l'opérateur [~~ (opérateur souple de comparaison "commmence par") ou l'utilisation d'une expression régulière.
Pour quand même utiliser la fonction ChaîneOccurrence, il vaudrait mieux : • au préalable purger la ligne de ses caractères espace, • utiliser l'option SansCasse (ou forcer la casse des caractères en majuscules) et • rechercher ";LAYER:".
Mes sources sur la syntaxe du fichier gcode :
» Le Gcode … c’est quoi ? Anatomie d’un slicer https://3dniort.xyz/gcode-anatomie-d-un-slicer/
» Autopsie du GCode d'une impression https://franken3d.blog4ever.com/autopsie-d-un-gcode-d-une-impression
 Mensaje modificado, 12,diciembre 2019 - 11:06 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 12,diciembre 2019 - 12:09 |
Le problème vient du fait que l'incrémentation est dans la condition SI ErreurDetectée() Il faudrait la sortir de cette condition. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 18 mensajes |
|
| Publicado el 12,diciembre 2019 - 12:28 |
Tout d'abord merci de vos réponses,
Petite précision :
Il faut savoir que le gcode obtenu est différent selon le slicer utilisé, dans mon cas, on ne retrouve pas le layer count et la syntaxe de ce que je souhaite compté est la suivante : ; layer X, Z = Y X étant la couche effectué, et Z la hauteur de la couche.
J'ai effectué la modification proposée par E. Rossi et cela fonctionne.
Merci de votre aide à tous les deux.
Quentin |
| |
| |
| | | |
|
| | | | |
| | |
|