]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA10/Macro/reca_mac.py
Salome HOME
f7bf786fc1a8b1a0661a21424aa269d7005137a0
[tools/eficas.git] / Aster / Cata / cataSTA10 / Macro / reca_mac.py
1 #@ MODIF reca_mac Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
2
3 #            CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
9 # (AT YOUR OPTION) ANY LATER VERSION.                                                  
10 #                                                                       
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
15 #                                                                       
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
18 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
19 # ======================================================================
20 '''
21 On regroupe ici les fonctions Python necessaires au lancement
22 de la fenetre graphique d'appariement manuel des MAC pour le 
23 recalage en dynamique
24 '''
25 import numpy as NP
26
27 from Tkinter import Tk, Frame, StringVar, Entry, Label, Button
28 from Meidee.modes import MacWindowFrame
29
30 def extract_mac_array( mac_mode ):
31
32     data1 = mac_mode.EXTR_TABLE().Array('NUME_MODE_1','MAC')
33     data2 = mac_mode.EXTR_TABLE().Array('NUME_MODE_2','MAC')
34
35     N = int(NP.maximum.reduce(data1[:,0]))
36     M = int(NP.maximum.reduce(data2[:,0]))
37     mac = NP.zeros( (N,M) )
38     for i in range(data1.shape[0]):
39         i1 = int(data1[i,0])-1
40         i2 = int(data2[i,0])-1
41         mac[ i1, i2 ] = data1[i,1]
42     return mac
43
44
45 def get_modes(resu):
46     
47     afreq  = resu.LIST_PARA()['FREQ']
48
49     return afreq
50     
51     
52 class fenetre_mac:
53
54     def __init__(self,resu1,resu2,mac):
55         self.resu1 = resu1
56         self.resu2 = resu2
57         self.mac = mac
58         self.root = Tk()
59
60         nom1 = resu1.nom
61         nom2 = resu2.nom
62         titre = "MAC pour la base " + nom1 + " et " + nom2
63         size = (20,300)
64
65         # la fenetre de MAC
66         mac_win = MacWindowFrame( self.root, titre, nom1, nom2, size)
67         mac_win.grid(row=0,column=0)
68
69         self.freq1 = get_modes(resu1)
70         self.freq2 = get_modes(resu2)
71         # la variable NUMERIQUE qui contient ces memes listes. On remplit
72         # ces valeurs quand on ferme la fenetre
73         self.l1 = None
74         self.l2 = None
75         # la variable GRAPHIQUE qui donne le contenu des listes
76         self.var_l1 = StringVar()
77         self.var_l2 = StringVar()
78
79         mac_win.set_modes(self.freq1,self.freq2,self.mac)
80
81         # Une deuxieme fentre, dans laquelle on peut modifier l'appariement des modes
82         f = Frame(self.root)
83         f.grid(row=1, column=0,sticky='news')
84         f.columnconfigure(0,weight=1)
85         f.columnconfigure(1,weight=4)
86         
87         Label(f,text="Liste de mode 1").grid(row=0,column=0,sticky='e')
88         l1 = Entry(f, textvariable=self.var_l1 )
89         l1.grid(row=0,column=1,sticky='ew')#,columnspan=3)
90         Label(f,text="Liste de mode 2").grid(row=1,column=0,sticky='e')
91         l2 = Entry(f, textvariable=self.var_l2 )
92         l2.grid(row=1,column=1,sticky='ew')#,columnspan=3)
93         close = Button(f,text='Fermer',command=self.close_win)
94
95         close.grid(row=2,column=1,sticky='e')
96
97         self.set_default_pair()
98         
99         self.root.mainloop()
100
101     def get_pair(self):
102         """rend une double liste donnant les appariements de modes"""
103         return [self.var_l1.get(),self.var_l2.get()]
104
105     def set_pair(self,liste):
106         """affiche une liste d'appariement donnee"""
107         self.var_l1.set(liste[0])
108         self.var_l2.set(liste[1])
109
110     def set_default_pair(self):
111         """ affiche la liste d'appariement par defaut. Le nombre de modes
112             correspond au plus petit nombre de modes entre resu1 et resu2"""
113         nb_mod = min(len(self.freq1),len(self.freq2))
114         self.var_l1.set(range(1,nb_mod+1))
115         self.var_l2.set(range(1,nb_mod+1))
116
117     def close_win(self):
118         self.l1 = self.var_l1.get()
119         self.l2 = self.var_l2.get()
120         self.root.quit()
121
122
123     def get_list(self):
124         exec('l1='+self.l1)
125         exec('l2='+self.l2)
126         return l1,l2
127
128
129