Help pour trier des coordonnées de points. [Résolu]

cs_holls 2 Messages postés mardi 4 septembre 2007Date d'inscription 5 septembre 2007 Dernière intervention - 4 sept. 2007 à 12:51 - Dernière réponse : cs_holls 2 Messages postés mardi 4 septembre 2007Date d'inscription 5 septembre 2007 Dernière intervention
- 5 sept. 2007 à 09:24
Bonjour,

Je ne connais pas du tout VB mais je sais que c'est le meilleur outil pour ce que j'ai à faire, c pkoi je requière votre aide
vous les pros.

Voila mon pb, j'ai récup sur une feuille de calcul exel une liste de code ISO (programmation CN)
ils sont dans une seule colonne (A) et sur plusieur ligne (1 à n) sous cette forme:

COLONE A
<colgroup><col style=\"WIDTH: 274pt; mso-width-source: userset; mso-width-alt: 13348\" width=\"365\" /></colgroup>----
 G1 X417.19 Y202.31 F20000, ----
 G02 X0 Y0 I-0.5 J0, ----
 G1 X417.81 Y202.35 F275, ----
 G1 X418.43 Y202.4 F302.5, ----
 G1 X419.06 Y202.44 F332.75, ----
 G1 X419.68 Y202.49 F366.02, ----
 G1 X420.3 Y202.53 F402.63, ----
 G1 X420.93 Y202.58 F442.89, ----
 G1 X421.55 Y202.62 F487.18, ----
 G1 X422.17 Y202.67 F500, ----
 G1 X469.72 Y206.14, ----
 G1 X470.44 Y206.19 F450, ----
 G1 X471.15 Y206.24 F405, ----
 G1 X471.86 Y206.29 F364.5, ----
 G1 X472.57 Y206.35 F328.05, ----
 G1 X473.29 Y206.4 F295.24, ----
 G1 X474. Y206.45 F265.72, ----
 G1 X474.71 Y206.5 F250, ----
 G1 X474.75 Y205.88 F275, ----
 G1 X474.8 Y205.26 F302.5, ----
 G1 X474.84 Y204.63 F332.75, ----
 G1 X474.89 Y204.01 F366.02, ----
 G1 X474.93 Y203.39 F402.63, ----
 G1 X474.97 Y202.76 F442.89, ----
 G1 X475.02 Y202.14 F487.18, ----
 G1 X475.06 Y201.52 F500, ----
 G1 X475.75 Y191.76, ----
 G1 X475.8 Y191.05 F450, ----
 G1 X475.85 Y190.34 F405, ----
 G1 X475.91 Y189.62 F364.5, ----
 G1 X475.96 Y188.91 F328.05, ----
 G1 X476.01 Y188.2 F295.24, ----
 G1 X476.06 Y187.49 F265.72, ----
 G1 X476.11 Y186.77 F250, ----
 G1 X717.66 Y201.04 F20000, ----
 G02 X0 Y0 I-0.5 J0, ----
 G1 X717.64 Y201.66 F275, ----
 G1 X717.61 Y202.29 F302.5, ----
 G1 X717.59 Y202.91 F332.75

Ils en a bien sur trés long comme cela, mais la forme est sensiblement toujours la meme.

Ce que je veut faire:

Tout les G1 & G02 en début de ligne doivent disparaitre et les X... doivent etre ramener en début de ligne.
Tout les F.... en fin de ligne doivent disparaitre.
La coordonnée en Y... doit se retrouver en colone B et disparaitre de la colone A.

jusque la je pense que c'est simple pour vous expert mais la cela ce corse.

Les fonctions commencant par G02 sont en faite des interpolations circulaires.

J'explique:

exemple de programme:

<colgroup><col style=\"WIDTH: 274pt; mso-width-source: userset; mso-width-alt: 13348\" width=\"365\" /></colgroup>----
 G1 X823.55 Y324.34, ----
 G2 X824.69 Y324.37 I1.39 J-37.35, ----
 G1 X829.62 Y324.03

ligne 1 l'outil de ma machine est en X823.55 Y324.34 on l'apellera P1
nous avons ensuite la fonction G2 X824.69 Y324.37 I1.39 J-37.35
X823.55 & Y324.37 sont les coordonnées du point d'arrivé de mon outil (on l'appellera P2), I1.39 & J-37.35 sont les coordonnées d'un points qui sera le centre de mon interpolation circulaire (ce sera P3) (I & J sont en faite X & Y)
ce qui va ce passé c'est que l'outil va cheminer de P1 à P2 en décrivant un arc de cercle de centre P3 dans le sens anti-trigo (sens horaire) et de rayon P1P3.

Voila pour l'explication; ce que je veut faire c'est que à chaque fois qu'il y à une fonction G02 X_ Y_ I_ J_ la macro convertise l'arc de cercle en un nuage de points repéré par leurs coordonnées X & Y et quelle intercale cette liste de points à la place de la ligne G02......

la résolution de l'arc de cercle doit etre de 1mm; cad un arc de cercle de 15mm doit comporter 15points.

Ma feuille de calcul après le travail de la macro aura donc la forme suivante.

colonneA      colonneB
X823.55      Y324.34, ----
X822.5        Y324.28
X824.5        Y324.24
X823.5        Y324.18
etc...
.
.
., ----
X829.62     Y324.03

Les lignes en vert remplace la fonction G02X_ Y_ I_ J_

Alors possible ou pas de faire un programme qui éffectue ce travail avec VB?

Si oui je fait appel à vous les experts pke moi je n'y connais rien...

merci
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 4 sept. 2007 à 20:33
3
Merci
 Bonsoir à tous,

Pour extraire les données, ci-dessous un exemple:

Dim var(3)
var(0) = "G1 X417.19      Y202.31 F20000"
var(1) = "G1 X475.75 Y191.76"
var(2) = "G02 X0 Y0 I-0.5 J0"
var(3) = " "

For i=0 To UBound(var)
    var(i) = Split(Replace(Replace(Replace(Replace(Replace(var(i),_
                   "Y","|Y"),"I","|I"),"J","|J"),"F","|F"),"X","|X"),"|")

    Select Case UBound(var(i))
           Case 2, 3 
                MsgBox "X=" & var(i)(1) &vbCrLf& "Y=" & var(i)(2),,"exemple pour var(0) et var(1)"
           Case 4
                MsgBox "X=" & var(i)(1) &vbCrLf& "Y=" & var(i)(2) &vbCrLf& _
                       "I=" & var(i)(3) &vbCrLf& "J=" & var(i)(4),,"exemple pour var(3)"
    End Select
Next

Dans ton exemple, quelle est la règle de calcul pour obtenir "tes lignes vertes" ???

jean-marc

Merci cs_JMO 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_JMO
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 4 sept. 2007 à 13:58
0
Merci
Salut,

Déjà commence par poster au bon endroit : tu fais du VBA et non du VB !

Je déplace vers le forum approprié !
______________________________________
DarK Sidious
Commenter la réponse de cs_DARKSIDIOUS
cs_holls 2 Messages postés mardi 4 septembre 2007Date d'inscription 5 septembre 2007 Dernière intervention - 5 sept. 2007 à 09:24
0
Merci
merci pour cette explication, j'ai finalement réussi à m'en sortir avec des formules excel.
Commenter la réponse de cs_holls

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.