1 | |||||||
Auteur | Messages | ||||||
---|---|---|---|---|---|---|---|
lapenduledargent | #1 Posté le 27/9/2010 à 13:39:00 | ||||||
Bonjour, J'avance dans mon programme de Gcode . Grâce aux exemples sur les fichiers, je peux importer un dxf et il est converti en Gcode. Je peux utiliser les commandes "enregistrer" ou "enregistrer sous" pour sauvegarder le programme. A présent, je souhaiterais afficher le parcours d'outils en Gcode dans une"Drawarea". Suite aux exemples de paint, je peux tracer une ligne, un rectangle... Le Gcode pour le pilotage de machines cnc, est une succession de commandes avec les déplacement X, Y Z. Par exemple : G1 F100 X 20.75 Y 56.75 Z -1 La liste des Gcodes est ici http://linuxcnc.org/docs/html/gcode_fr.html Donc, je dois rechercher dans un textarea si il trouve par exemple une ligne commençant par "G1"
Ce code ne donne rien alors que la textarea contient bien G40 G21 G17 Faut-il parcourir le textarea au moyen d'une boucle :
Une idée, une astuce ? Attention, j'ai plus pratiqué Gambas pendant plusieurs mois et je dois m'y remettre... Bonne après-midi Pierre | |||||||
spheris | #2 Posté le 27/9/2010 à 17:50:00 | ||||||
Perso j'utilise ca : http://gambasdoc.org/help/lang/instr?fr Et tu as plein de fonctions pour traiter les chaines de caractères dans GB. ici : http://gambasdoc.org/help/cat/string?fr A+ | |||||||
lapenduledargent | #3 Posté le 27/9/2010 à 18:05:00 | ||||||
Bonsoir, Merci pour le lien, j'ai donc trouvé ceci : http://gambasdoc.org/help/lang/comp?fr A ton avis, faut-il utiliser une boucle ? J'essaie ce soir. Pierre | |||||||
Prokopy | #4 Posté le 27/9/2010 à 19:13:00 | ||||||
Kinder Pingui | Salut Pierre, Alors non, tu ne dois ni utiliser "=" ni Comp(), car ces deux méthodes ne te permettent que de détecter si les chaînes sont égales, c'est-à-dire si elles contiennent exactement la même chose ! Utilise plutôt la méthode String.InStr() qui te permettra de connaître la position de ton instruction (la fonction renvoie -1 si la chaîne n'est pas trouvée). Après, si tu veux effectuer une action pour chaque instruction trouvée dans ton textArea, alors oui passe par une boucle. Pour cela utilise le second paramètre de la fonction String.InStr() qui te permet de commencer la recherche à une position précise, et donc "d'avancer" dans ton texte :
Plus d'infos sur String.InStr() : http://gambasdoc.org/help/comp/gb/string/instr?fr&v3 La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||||
lapenduledargent | #5 Posté le 27/9/2010 à 20:30:00 | ||||||
Bonsoir Prokopy, Merci ça fonctionne Finalement, j'ai pas utilisé de boucle mais un IF
Bon, je continue la suite... Bonne soirée à tous Pierre | |||||||
lapenduledargent | #6 Posté le 29/9/2010 à 22:06:00 | ||||||
Bonsoir à tous, Voilà ça fonctionne Un petit bout de code, vaut mieux qu'un long discourt ...
Mais le contenu de ma textarea est dans ce format :
Je recherche maintenant une instruction pour parcourir ligne par ligne... J'ai essayé avec WHILE NOT Eof(hFile) ou FOR EACH mais c'est pas un fichier. Une idée pour parcourir ligne par ligne une textarea ? Bonne nuit Pierre | |||||||
spheris | #7 Posté le 30/9/2010 à 00:43:00 | ||||||
la textarea n'est qu'une seule et même suite de caracteres. Il te suffit dedétecter le passage par le caractère Retour chariot et le tour est joué ! A+ | |||||||
Prokopy | #8 Posté le 30/9/2010 à 03:03:00 | ||||||
Kinder Pingui | C'est ça. En fait ça reprend le code que je t'ai donné l'autre jour, mais tu remplaces MotCle par \n, qui est le caractère de nouvelle ligne :
Et normalement tu termines ta TextArea jusqu'au bout. La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||||
lapenduledargent | #9 Posté le 30/9/2010 à 17:22:00 | ||||||
Bonsoir à tous, J'ai testé le code de Prokopy mais sa recherche se fait uniquement sur la première ligne :
Le résultat dans la console est :
Pour un Gcode :
Bref, le système de boucle proposé fonctionne (bon nombre de lignes) mais il ne lit que la première ligne. Là, je bloque Peut-être une autre manière : Ajouter un caractère (comme le programme de Sphéris GSV) à la fin de la ligne ? Qu'en pensez-vous ? Bonne soirée Pierre | |||||||
Prokopy | #10 Posté le 30/9/2010 à 19:05:00 | ||||||
Kinder Pingui | C'est parce que dans ton code, tu utilises la position dans la première ligne. Il faut prendre à partir de la position de la ligne actuelle. Essaie plutôt :
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||||
lapenduledargent | #11 Posté le 30/9/2010 à 19:40:00 | ||||||
Ah super. Merci Prokopy
Décidément, tu est très fort . J'ai cherché une partie de l'après-midi... Je suis me suis aperçu que tu étais l'auteur du tuto sur le site du zéro. Magnifique travail. Vu que tes capacités et ta passion, je pense que pour tes études, tu n'auras pas longtemps à chercher ta voie . Aller j'y retourne. Étape suivante, afficher le Gcode dans une drawArea... Bonne soirée Pierre | |||||||
Prokopy | #12 Posté le 30/9/2010 à 20:59:00 | ||||||
Kinder Pingui | Merci. Personnellement j'ai en effet déjà trouvé la voie, et même l'école. Cette année gambas m'aide vachement bien d'ailleurs. Mais sinon, qu'est-ce que tu veux dire par "afficher le code dans une DrawArea" ? La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||||
spheris | #13 Posté le 30/9/2010 à 22:51:00 | ||||||
Tracer une vue du plan de la cn peut être... | |||||||
lapenduledargent | #14 Posté le 1/10/2010 à 10:29:00 | ||||||
Bonjour Prokopy, Spheris, Tout fonctionne A partir d'un Gcode, les draw.line sont affichées dans une DrawingArea. Pour mieux comprendre mon projet, j'ai rouvert mon post d'il y a presqu'un an: http://gambaslinux.forumactif.net/ton-projet-en-gambas-basic-f6/convertisseur-dxf-en-gcode-vendredi-24-juillet-2009-0758-par-pierre-t11.htm#2763 Tu y trouveras quelques explications complémentaires. A bientôt et encore merci pour votre aide. Pierre | |||||||
1 |