]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA74/Macro/defi_cable_bp_ops.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA74 / Macro / defi_cable_bp_ops.py
1 #@ MODIF defi_cable_bp_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
2 # -*- coding: iso-8859-1 -*-
3 #            CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2003  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 # RESPONSABLE ASSIRE A.ASSIRE
21
22 # ===========================================================================
23 #           CORPS DE LA MACRO "DEFI_CABLE_BP"
24 #           -------------------------------------
25 # USAGE :
26 # Entrée :
27 #  - MAILLAGE
28 #  - MODELE
29 #  - CABLE
30 #  - CHAM_MATER
31 #  - CARA_ELEM
32 #  - GROUP_MA_BETON
33 #  - DEFI_CABLE
34 #  - TYPE_ANCRAGE
35 #  - TENSION_INIT
36 #  - RECUL_ANCRAGE
37 #  - RELAXATION
38 #  - CONE
39 #      RAYON
40 #      LONGUEUR
41 #      PRESENT          OUI ou NON deux fois
42 #  - TITRE
43 #  - INFO               1 / 2
44 #
45 # ===========================================================================
46
47
48
49 def defi_cable_bp_ops(self,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,GROUP_MA_BETON,
50                            DEFI_CABLE,TYPE_ANCRAGE,TENSION_INIT,RECUL_ANCRAGE,
51                            RELAXATION,CONE,TITRE,INFO,**args):
52
53   """
54      Ecriture de la macro DEFI_CABLE_BP
55   """
56   from Accas import _F
57   import aster,string
58   ier=0
59
60   # On importe les definitions des commandes a utiliser dans la macro
61   DEFI_GROUP      = self.get_cmd('DEFI_GROUP')
62   IMPR_RESU       = self.get_cmd('IMPR_RESU')
63   DEFI_CABLE_OP   = self.get_cmd('DEFI_CABLE_OP')
64   RECU_TABLE      = self.get_cmd('RECU_TABLE')
65   IMPR_TABLE      = self.get_cmd('IMPR_TABLE')
66   IMPR_CO         = self.get_cmd('IMPR_CO')
67
68   # La macro compte pour 1 dans la numerotation des commandes
69   self.set_icmd(1)
70
71   # Le concept sortant (de type char_meca) est nomme CHCABLE dans 
72   # le contexte de la macro
73
74   self.DeclareOut('__DC',self.sd)
75
76   # ---------------------------------------------------------------------------- #
77   #                  Début de la Macro :
78
79   motscles={}
80
81   # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
82
83   if CONE:
84     dCONE=CONE[0].cree_dict_valeurs(CONE[0].mc_liste)
85     for i in dCONE.keys():
86       if dCONE[i]==None : del dCONE[i]
87
88     RAYON    = dCONE['RAYON']
89     LONGUEUR = dCONE['LONGUEUR']
90     
91     motscles['CONE']=[]
92     motscles['CONE'].append( dCONE )
93
94
95   # VERIFICATION QUE LE MAILLAGE EST COHERENT AVEC LE MODELE
96
97     __MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE    .NOMA        ' )
98     if string.ljust(MAILLAGE.nom,8) != __MAIL[0] :
99       self.DeclareOut(MAILLAGE.nom,maillage)
100       print ' '
101       print '  # ---------------------------------------------------------------------------'
102       print '  # DEFI_CABLE_BP - Erreur : LE CONCEPT MAILLAGE RENSEIGNE NE CORRESPOND'
103       print '  #                            PAS A CELUI UTILISE DANS LE MODELE !'
104       print '  # ',MAILLAGE.nom,' - ',__MAIL[0]
105       print '  # ---------------------------------------------------------------------------'
106       print ' '
107       ier=ier+1
108       self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
109       return ier
110
111
112   # DEFINITION DU NOM DES GROUP_NO
113
114     __NOM = '_AN_'
115     __LGNO = MAILLAGE.LIST_GROUP_NO()
116     __LGN1 = []
117     for i in __LGNO : 
118       __LGN1.append( i[0][:len(__NOM)] )
119   
120     __NB  = __LGN1.count(__NOM)
121
122 # FIN RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
123
124
125   # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "DEFI_CABLE"
126
127   dDEFI_CABLE=[]
128   for j in DEFI_CABLE :
129       dDEFI_CABLE.append(j.cree_dict_valeurs(j.mc_liste))
130       for i in dDEFI_CABLE[-1].keys():
131           if dDEFI_CABLE[-1][i]==None : del dDEFI_CABLE[-1][i]
132
133
134   # BOUCLE SUR LES FACTEURS DU MOT-CLE "DEFI_CABLE"
135
136   motscles['DEFI_CABLE']=[]
137
138   for i in dDEFI_CABLE:
139     
140     # CAS OU L'ON A DEFINI LE MOT-CLE "CONE"
141     if CONE:
142
143       # CREATION DU PREMIER TUNNEL
144     
145       if dCONE['PRESENT'][0] == 'OUI':
146         __NB = __NB + 1
147         __NOM1 = __NOM + str( int(__NB) )
148
149         motscle2={}
150         motscle2['CREA_GROUP_NO']=[]
151
152         if i.has_key('GROUP_MA') == 1: 
153           __CAB = i['GROUP_MA']
154           motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM1}]}
155         if i.has_key('MAILLE') == 1: 
156           print ' '
157           print '  # ---------------------------------------------------------------------------'
158           print '  # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA'
159           print '  # ---------------------------------------------------------------------------'
160           print ' '
161           ier=ier+1
162           self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
163           return ier
164         if i.has_key('GROUP_NO_ANCRAGE') == 1: 
165           __PC1 = i['GROUP_NO_ANCRAGE'][0]
166           motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
167         if i.has_key('NOEUD_ANCRAGE') == 1: 
168           __PC1 = i['NOEUD_ANCRAGE'][0]
169           motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
170
171
172         DEFI_GROUP( reuse=MAILLAGE,
173                     MAILLAGE=MAILLAGE,
174                     INFO=INFO,
175                     ALARME='NON',
176                     **motscle2
177                    ) ;
178     
179       # CREATION DU DEUXIEME TUNNEL
180     
181       if dCONE['PRESENT'][1] == 'OUI':
182         __NB = __NB + 1
183         __NOM2 = __NOM + str( int(__NB) )
184
185         motscle2={}
186         motscle2['CREA_GROUP_NO']=[]
187
188         if i.has_key('GROUP_MA') == 1: 
189           __CAB = i['GROUP_MA']
190           motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM2}]}
191         if i.has_key('MAILLE') == 1: 
192           print ' '
193           print '  # ---------------------------------------------------------------------------'
194           print '  # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA'
195           print '  # ---------------------------------------------------------------------------'
196           print ' '
197           ier=ier+1
198           self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
199           return ier
200         if i.has_key('GROUP_NO_ANCRAGE') == 1: 
201           __PC1 = i['GROUP_NO_ANCRAGE'][1]
202           motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
203         if i.has_key('NOEUD_ANCRAGE') == 1: 
204           __PC1 = i['NOEUD_ANCRAGE'][1]
205           motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
206
207         DEFI_GROUP( reuse=MAILLAGE,
208                     MAILLAGE=MAILLAGE,
209                     INFO=INFO,
210                     ALARME='NON',
211                     **motscle2
212                    ) ;
213
214   
215       # CREATION DES NOUVEAUX FACTEURS DU MOT-CLE "DEFI_CABLE" POUR DEFI_CABLE_BP
216   
217       if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'OUI':
218         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
219           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
220                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
221                                             GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
222         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
223           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
224                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
225                                             GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
226   
227       if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'NON':
228         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
229           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
230                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
231                                             GROUP_NO_FUT=( __NOM1, ), ), )
232         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
233           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
234                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
235                                             GROUP_NO_FUT=( __NOM1, ), ), )
236   
237       if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'OUI':
238         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
239           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
240                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
241                                             GROUP_NO_FUT=( __NOM2, ), ), )
242         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
243           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
244                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
245                                             GROUP_NO_FUT=( __NOM2, ), ), )
246  
247       if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'NON':
248         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
249           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
250                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
251         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
252           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
253                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
254
255
256     # CAS OU L'ON A PAS DEFINI LE MOT-CLE "CONE"
257     else:
258       if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
259         motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
260                                           GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
261
262       if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
263         motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
264                                           NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
265
266       if i.has_key('MAILLE') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
267         motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
268                                           GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
269
270       if i.has_key('MAILLE') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
271         motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
272                                           NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
273
274
275 # FIN BOUCLE sur i in DEFI_CABLE
276
277
278   # LANCEMENT DE DEFI_CABLE_BP
279
280   if RELAXATION:
281     dRelaxation=RELAXATION[0].cree_dict_valeurs(RELAXATION[0].mc_liste)
282     for i in dRelaxation.keys():
283       if dRelaxation[i]==None : del dRelaxation[i]
284
285     __DC=DEFI_CABLE_OP(MODELE=MODELE,
286                        CHAM_MATER=CHAM_MATER,
287                        CARA_ELEM=CARA_ELEM,
288                        GROUP_MA_BETON=GROUP_MA_BETON,
289                        TYPE_ANCRAGE=TYPE_ANCRAGE,
290                        TENSION_INIT=TENSION_INIT,
291                        RECUL_ANCRAGE=RECUL_ANCRAGE,
292                        RELAXATION=dRelaxation,
293                        INFO=INFO,
294                        **motscles
295                        );
296
297   else:
298
299     __DC=DEFI_CABLE_OP(MODELE=MODELE,
300                        CHAM_MATER=CHAM_MATER,
301                        CARA_ELEM=CARA_ELEM,
302                        GROUP_MA_BETON=GROUP_MA_BETON,
303                        TYPE_ANCRAGE=TYPE_ANCRAGE,
304                        TENSION_INIT=TENSION_INIT,
305                        RECUL_ANCRAGE=RECUL_ANCRAGE,
306                        INFO=INFO,
307                        **motscles
308                        );
309
310 #   __TCAB = RECU_TABLE(CO=__DC,NOM_TABLE='CABLE_BP');
311 #   IMPR_TABLE(TABLE=__TCAB);
312  
313   return ier