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

Signaler
Messages postés
2
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2007
-
Messages postés
2
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2007
-
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

3 réponses

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
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
Messages postés
2
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2007

merci pour cette explication, j'ai finalement réussi à m'en sortir avec des formules excel.