[FAO][VB] "convertir" un fichier .txt (.apt catia) pour centre d'usinage[EN COUR [Résolu]

berserker42 32 Messages postés mardi 17 août 2010Date d'inscription 26 juillet 2015 Dernière intervention - 24 sept. 2011 à 18:57 - Dernière réponse : berserker42 32 Messages postés mardi 17 août 2010Date d'inscription 26 juillet 2015 Dernière intervention
- 29 sept. 2011 à 21:00
Bonjour à tous,

Mon projet est le suivant. Pour des raisons de perfectionnement constant, j'ai décidé d'écrire une source pouvant "convertir" un fichier de type .aptsource fichier de trajectoire outil de CATIA sans postpro.
Au boulot, nous utilisons une petite routine sous Matlab pour faire ce que je veut faire mais je ne dispose pas de ce logiciel sur mon poste de travail, je dérange à chaque fois des collègues.
Cette source est surtout dans un premier lui pour moi comme nous pouvons les traiter par autre chose.

Ce que je cherche exactement c'est comment je peut insérer les adresses machine (X,Y,Z,A3= ,B3=,C3= ) ici pour une machine 5axes. petit exemple:

.apt original

$$ OPERATION NAME : Fraisage en plongée.13
$$ Début de génération de: Fraisage en plongée.13
LOADTL/1,1
SPINDL/ 763.9440,RPM,CLW
RAPID
GOTO / -42.50000, 2.88476, 12.60000, 0.000000, 0.000000, 1.000000
FEDRAT/ 300.0000,MMPM
GOTO / -42.50000, 2.88476, 2.60000, 0.000000, 0.000000, 1.000000
FEDRAT/ 152.7890,MMPM
GOTO / -42.50000, 2.88476, -29.00000, 0.000000, 0.000000, 1.000000


.mpf cible
S763.9440 M3
G0 X-42.50000 Y2.88476 Z12.60000 A3 =0.000000 B3= 0.000000 C3=1.000000
F300.0000
G0 X-42.50000 Y2.88476 Z12.60000 A3=0.000000 B3=0.000000 C3=1.000000
F152.7890
G1 X-42.50000 Y2.88476 Z-29.00000 A3=0.000000 B3=0.000000 C3= 1.000000

.mpf à ce moment
S763.9440 M3
G1 -42.50000, 2.88476, 12.60000, 0.000000, 0.000000, 1.000000
F300.0000
G1 -42.50000, 2.88476, 2.60000, 0.000000, 0.000000, 1.000000
F152.7890
G1 -42.50000, 2.88476, -29.00000, 0.000000, 0.000000, 1.000000


Je cherche donc actuellement comment je pourrais ajouter XYZA3 =B3=C3=, devant leurs valeurs respectives.

J'ai trouvé des sources parlant de Split ou Parse mais je n'arrive pas à dire devant la première "," tu rajoute X la deuxième Y et ainsi de suite.

Pour la première à la rigueur j'y suis arrivé car j'utilise un Replace(string,"GOTO /","G1") à la place de "G1" je peut mettre "G1 X". Mais pour le reste je ne voit pas comment je peut le faire.

Merci par avance pour vos réponses.

++
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 24 sept. 2011 à 19:09
3
Merci
Bonjour,

Pour passer de
GOTO / -42.50000, 2.88476, 12.60000, 0.000000, 0.000000, 1.000000
à
G0 X-42.50000 Y2.88476 Z12.60000 A3=0.000000 B3=0.000000 C3=1.000000

Tu peux splitter sur le / pour séparer la commande et les données
Ensuite, tu split sur la , pour séparer les données.

Ensuite, dans la tableau obtenu, tu définira un tableau contenant les préfixes à mettre :
Dim ltPrefix As String=new String(){"X","Y","Z","A3=","B3=","C3="}


Ensuite, une boucle (ltValues, tableau des valeurs)
For i As Integer=0 to ltValues.GetUpperBound(0)
    ltValues(i)=ltPrefix(i)+ltValues(i).Trim
Next


Ensuite, tu fais un Join du tableau ltValues avec comme séparateur des espaces.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de NHenry
berserker42 32 Messages postés mardi 17 août 2010Date d'inscription 26 juillet 2015 Dernière intervention - 25 sept. 2011 à 06:07
0
Merci
Bonjour,


Merci pour votre réponse très rapide. Hier j'ai fait des essais mais c'est pas très concluant mais je vois la démarche à suivre.

Je valide la réponse dès que ça fonctionne merci encore.

++
Commenter la réponse de berserker42
berserker42 32 Messages postés mardi 17 août 2010Date d'inscription 26 juillet 2015 Dernière intervention - 25 sept. 2011 à 17:58
0
Merci
Re-bonjour,

Petit retour sur le code d'hier.

Pour faire des essais, j'ai simplifié la ligne à compiler. J'ai donc utilisé cette ligne comme point de départ.

 Dim st, St1, ltPrefix, a As String
        ltPrefix = ""
        st = " -42.50000, 2.88476, 12.60000, 0.000000, 0.000000, 1.000000 "
        For Each St1 In Split(st, ",")
            MsgBox(St1)
            
        Next


Là j'obtiens bien dans une msgbox-42.50000 puis 2.88476....

après j'utilise ceci.
 Dim ltValues = New String() {"X", "Y", "Z", "A3=", "B3=", "C3="}
        For i As Integer = 0 To ltValues.GetUpperBound(0)
            ltValues(i) = ltPrefix(i) + ltValues(i).Trim
            a = String.Join(" ", ltValues)
            MsgBox(a)
        Next


Par contre la c'est le grand flou artistique, j'ai rien. C'est assez nouveau pour moi de travailler avec des tableau de string et de les manipuler en long en large et en travers.
J'ai encore besoin de vos lumières.

Merci d'avance.
Commenter la réponse de berserker42
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 25 sept. 2011 à 18:02
0
Merci
Bonjour,

Regardes les valeur en pas à pas avec des espions.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 25 sept. 2011 à 18:04
0
Merci
Je rajoute :

String.Split retourne un tableau de chaine.

Mets à On Option Explicit et Option Strict (propriétés du projet).
Commenter la réponse de NHenry
berserker42 32 Messages postés mardi 17 août 2010Date d'inscription 26 juillet 2015 Dernière intervention - 29 sept. 2011 à 21:00
0
Merci
Bonsoir,

Bonne nouvelle "enfin pour moi" j'y suis arrivé.


Merci pour votre aide pour m'avoir éclairé sans me montrer le chemin. .

S'est vrai que c'est toujours plus facile d'attendre la solution que de la faire mais rageant d'attendre trop longtemps.

Mais il est tellement mieux d'avoir cette satisfaction de dire "je l'ai fait moi même". Bon j'ai quand même glané des idées à droite et à gauche.

Et pour cela se site/forum et tous ce qui permet de le faire vivre est vraiment super.

J'ai beaucoup appris avec cette appli.

Réponse validée
Commenter la réponse de berserker42

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.