Problème de remplissage d?une matrice.

cs_xtremiste Messages postés 5 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 9 août 2006 - 27 juin 2006 à 15:07
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 28 juin 2006 à 23:05
Problème de remplissage d’une matrice.


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>


Bonjour, je développe une macro qui réalise une chaîne de cote de pignon et je rencontre un problème tout bête à faire à la main, mais pour le programmer, je m’emmêle les pinceaux.


 


Voici mon cas d’étude :


 


J’ai un premier tableau dit « Condition » (3 lignes et 3 colonnes pour l’exemple):


(1ère colonne N° de la condition, 2ème Origine de la cote, 3ème = extrémité de la cote)


Les origines et les extrémités vont de 10 en 10.


 


C1       10            20


C2       20            40


C3       30            40


 


J’ai un second tableau dit « Transition » (idem 3 lignes et 3 colonnes)


 


T1        10            20


T2        10            30


T3        10            40


 


A partir de ces 2 tableaux, je voudrais créer une matrice ayant les conditions en lignes et les transitions en colonne.


 


On doit trouver pour cette exemple que


T1 = C1


T2 = C1+C2-C3


T3 = C1+C3


 


Soit la matrice que je dois obtenir.



            C1        C2          C3


T1        1            0            0


 


T2        1            1            -1


 


T3        1            1            0


 


En fait je n’arrive pas à trouver comment la remplir sauf pour en (T1,C1)


 


Voici le programme : VBA sous CatiaV5R14



Sub CATmain()





 






    'Création des cotes conditions






    Dim C(3, 3)






    '1er colonne






    C(1, 1) 1: C(2, 1) 2: C(3, 1) = 3






    '2ème






    C(1, 2) 10: C(2, 2) 20: C(3, 2) = 30






    '3ème






    C(1, 3) 20: C(2, 3) 40: C(3, 3) = 40





 






    'Tableau T






    Dim T(4, 3)






    '1er colonne






    T(1, 1) 1: T(2, 1) 2: T(3, 1) = 3






    '2ème






    T(1, 2) 10: T(2, 2) 10: T(3, 2) = 10






    '3ème






    T(1, 3) 20: T(2, 3) 30: T(3, 3) = 40






   








   


Dim M1(3, 3)








    For i = 0 To 3








        For j = 0 To 3








            M1(i, j) = 0








        Next j








    Next i








   










   
'Matrice M1 de la forme M1(T(i),C(j))






    Dim NbreFace: NbreFace = 4






   


For i = 1 To NbreFace - 1








        For j = 1 To NbreFace - 1








       










            If T(i, 2) C(j, 2) And T(i, 3) C(j, 3) Then








                M1(i, j) = 1








            End If








            X1 = T(i, 2)








            X2 = T(i, 3)








            If X1 = 10 And X2 > X1 + 10 Then








                M1(i, j) = 1








            End If








           
X1 = 10                              
Partie fausse à ne pas tenir compte








           
X2 = 20









           












            Do While X2 < NbreFace * 10










            
   If X1 = C(j, 2) And X2 < C(j, 3) Then










                    M1(i, j) = 1










                End If










                X2 = X2 + 10










            Loop









        Next j








       










    Next i








   










   
'pour Vérifier ma matrice






   


Dim A1, A2, A3, B1, B2, B3, C1, C2, C3








    A1 M1(1, 1): A2 M1(1, 2): A3 = M1(1, 3)








    B1 M1(2, 1): B2 M1(2, 2): B3 = M1(2, 3)








    C1 M1(3, 1): C2 M1(3, 2): C3 = M1(3, 3)








   










   









End Sub









 
si vous avez une idée, je suis prenneur. merci
Stéphane

3 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
28 juin 2006 à 21:49
Humph, comment tu tombe sur T2 = C1 + C2 - C3 ?

Pour moi ça ferait plutot :
C1 + C2 - C3 10 + 20 - 30  0
20    40   40     20

Et C1 + C3 = (40,60)

Ou alors ça n'a rien à voir avec des vecteurs ni avec des matrices.

[;)] Flachy Joe [;)]
0
cs_xtremiste Messages postés 5 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 9 août 2006
28 juin 2006 à 22:25
Je vais essayer d’être plus clair. Je réalise une macro sous Catia V5r14 (logiciel de CAO). J’utilise le module VB pour développer ma macro. Mon objectif est de réaliser les chaînes de côtes de fabrication des pignons équipant les moteurs : type TP400 (Airbus A400), CFM (famille Airbus).



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>
 




En fait, on prend une vue en coupe d’un pignon, on identifie chaque face verticale de celui-ci.



 




Les faces ont été nommées par ordre croissant de la gauche vers la droite et de 10 en 10.


Face 1 = 10


Face 2 = 20


Face 3 = 30…



 




Bien évidemment, le pignon a été dimensionné par le bureau d’étude et donc à partir de ces dimensions et du nom des faces, j’obtiens une relation entre eux (exemple simple):



 




Ce que j’ai appelé Cote Condition



 




 ,
 ,
Origine de la cote

,
Extrémité de la cote

,

----

Cote Condition 1,
C1

,
10,
20,

----

Cote Condition 2,
C2

,
20,
40,

----

Cote Condition 3,
C3

,
30,
40


 




(Par la suite, je travaille plutôt avec 40 à 50 côtes conditions)             



 




En fait la cote C1 (10/20) peut très bien faire 20mm et la cote C2 (20/40)<?xml:namespace prefix st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:metricconverter w:st="on" productid="10 mm">10 mm</st1:metricconverter>. Les origines et les extrémités sont indépendantes de la valeur de la cote.



 




A partie de cela, j’ai besoin d’une matrice de passage et c’est là qu’interviennent les éléments de transitions.



 




 ,

 

,
Origine

,
Extrémité

,

----

Transition 1,
T1

,
10,
20,

----

Transition 2,
T2

,
10,
30,

----

Transition 3,
T3

,
10,
40


 




A Présent, je veux relier les Ci aux Ti.


Il faudrait que j’arrive à retrouver la matrice suivante à partir de mes 2 tableaux précédents:



 




 ,
C1

,
C2

,

               C3

,

----

T1

,
1,
0,
0,

----

T2

,
1,
1,
-1,

----

T3

,
1,
1,
0


 




Si vous ne voyer pas trop comment j’obtiens la matrice, dessiné 4 droites verticales, parallèles et nommer les de 10 en 10 de gauche à vers la droite, puis tracer les cotes condition et à coté les transitions. Sur le papier, c’est enfantin…..Mais…


Je pense que la solution est toutes bête mais impossible de la trouver, je commence à tous mélanger et le programme est vraiment bloqué sans sa.
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
28 juin 2006 à 23:05
OK, compris.

Il faudrait je pense chercher la cote C corespondant au debut de la cote T, à partir de l'autre extremité de la cote C trouvée chercher une nouvelle cote C dont l'une des extremité corespond, etc jusqu'a ce qu'on tombe sur une cote C dont la 2d extremité corespond à la fin de la cote T,

[;)] Flachy Joe [;)]
0
Rejoignez-nous