]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA8/Macro/defi_cable_bp_ops.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA8 / Macro / defi_cable_bp_ops.py
1 #@ MODIF defi_cable_bp_ops Macro  DATE 04/04/2007   AUTEUR VIVAN L.VIVAN 
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 #  - MODELE
28 #  - CABLE
29 #  - CHAM_MATER
30 #  - CARA_ELEM
31 #  - GROUP_MA_BETON
32 #  - DEFI_CABLE
33 #  - TYPE_ANCRAGE
34 #  - TENSION_INIT
35 #  - RECUL_ANCRAGE
36 #  - RELAXATION
37 #  - CONE
38 #      RAYON
39 #      LONGUEUR
40 #      PRESENT          OUI ou NON deux fois
41 #  - TITRE
42 #  - INFO               1 / 2
43 #
44 # ===========================================================================
45
46
47
48 def defi_cable_bp_ops(self,MODELE,CHAM_MATER,CARA_ELEM,GROUP_MA_BETON,
49                            DEFI_CABLE,TYPE_ANCRAGE,TENSION_INIT,RECUL_ANCRAGE,
50                            RELAXATION,CONE,TITRE,INFO,**args):
51
52   """
53      Ecriture de la macro DEFI_CABLE_BP
54   """
55   from Accas import _F
56   import aster,string, types
57   from Utilitai.Utmess import UTMESS
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     # RECUPERATION DU MAILLAGE A PARTIR DU MODELE
95     __MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE    .NOMA        ' )
96     __MAIL= __MAIL[0].strip()
97     MAILLAGE = self.get_sd_avant_etape(__MAIL,self)
98
99     # DEFINITION DU NOM DES GROUP_NO
100     __NOM = 'AN__'
101     __LGNO = MAILLAGE.LIST_GROUP_NO()
102     __LGN1 = []
103     for i in __LGNO : 
104       __LGN1.append( i[0][:len(__NOM)] )
105   
106     __NB  = __LGN1.count(__NOM)
107
108 # FIN RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
109
110
111   # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "DEFI_CABLE"
112
113   dDEFI_CABLE=[]
114   for j in DEFI_CABLE :
115       dDEFI_CABLE.append(j.cree_dict_valeurs(j.mc_liste))
116       for i in dDEFI_CABLE[-1].keys():
117           if dDEFI_CABLE[-1][i]==None : del dDEFI_CABLE[-1][i]
118
119
120   # BOUCLE SUR LES FACTEURS DU MOT-CLE "DEFI_CABLE"
121
122   motscles['DEFI_CABLE']=[]
123
124   for i in dDEFI_CABLE:
125     
126     # CAS OU L'ON A DEFINI LE MOT-CLE "CONE"
127     if CONE:
128
129       # CREATION DU PREMIER TUNNEL
130     
131       if dCONE['PRESENT'][0] == 'OUI':
132         __NB = __NB + 1
133         __NOM1 = __NOM + str( int(__NB) )
134
135         motscle2={}
136         motscle2['CREA_GROUP_NO']=[]
137
138         if i.has_key('GROUP_MA') == 1: 
139           __CAB = i['GROUP_MA']
140
141           if type(GROUP_MA_BETON) in [types.TupleType, types.ListType]: gma = list(GROUP_MA_BETON)
142           else:                                                         gma = [ GROUP_MA_BETON ]
143           gma.insert(0, __CAB)
144
145           motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': gma, 'GROUP_MA_AXE': __CAB, 'NOM': __NOM1}]}
146         if i.has_key('MAILLE') == 1: 
147           echo_mess=[]
148           echo_mess.append( ' \n' )
149           echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
150           echo_mess.append( ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA               \n' )
151           echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
152           message=string.join(echo_mess)
153           UTMESS('F',message)
154         if i.has_key('GROUP_NO_ANCRAGE') == 1: 
155           __PC1 = i['GROUP_NO_ANCRAGE'][0]
156           motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
157         if i.has_key('NOEUD_ANCRAGE') == 1: 
158           __PC1 = i['NOEUD_ANCRAGE'][0]
159           motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
160
161         DEFI_GROUP( reuse=MAILLAGE,
162                     MAILLAGE=MAILLAGE,
163                     INFO=INFO,
164                     ALARME='NON',
165                     **motscle2
166                    ) ;
167
168       # CREATION DU DEUXIEME TUNNEL
169
170       if dCONE['PRESENT'][1] == 'OUI':
171         __NB = __NB + 1
172         __NOM2 = __NOM + str( int(__NB) )
173
174         motscle2={}
175         motscle2['CREA_GROUP_NO']=[]
176
177         if i.has_key('GROUP_MA') == 1: 
178           __CAB = i['GROUP_MA']
179
180           if type(GROUP_MA_BETON) in [types.TupleType, types.ListType]: gma = list(GROUP_MA_BETON)
181           else:                                                         gma = [ GROUP_MA_BETON ]
182           gma.insert(0, __CAB)
183
184           motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': gma, 'GROUP_MA_AXE': __CAB, 'NOM': __NOM2}]}
185         if i.has_key('MAILLE') == 1: 
186           echo_mess=[]
187           echo_mess.append( ' \n' )
188           echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
189           echo_mess.append( ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA               \n' )
190           echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
191           message=string.join(echo_mess)
192           UTMESS('F',message)
193         if i.has_key('GROUP_NO_ANCRAGE') == 1: 
194           __PC1 = i['GROUP_NO_ANCRAGE'][1]
195           motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
196         if i.has_key('NOEUD_ANCRAGE') == 1: 
197           __PC1 = i['NOEUD_ANCRAGE'][1]
198           motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
199
200         DEFI_GROUP( reuse=MAILLAGE,
201                     MAILLAGE=MAILLAGE,
202                     INFO=INFO,
203                     ALARME='NON',
204                     **motscle2
205                    ) ;
206
207   
208       # CREATION DES NOUVEAUX FACTEURS DU MOT-CLE "DEFI_CABLE" POUR DEFI_CABLE_BP
209   
210       if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'OUI':
211         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
212           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
213                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
214                                             GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
215         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
216           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
217                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
218                                             GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
219   
220       if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'NON':
221         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
222           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
223                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
224                                             GROUP_NO_FUT=( __NOM1, ), ), )
225         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
226           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
227                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
228                                             GROUP_NO_FUT=( __NOM1, ), ), )
229   
230       if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'OUI':
231         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
232           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
233                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
234                                             GROUP_NO_FUT=( __NOM2, ), ), )
235         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
236           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
237                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
238                                             GROUP_NO_FUT=( __NOM2, ), ), )
239  
240       if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'NON':
241         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
242           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
243                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
244         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
245           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
246                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
247
248
249     # CAS OU L'ON A PAS DEFINI LE MOT-CLE "CONE"
250     else:
251       if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
252         motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
253                                           GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
254
255       if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
256         motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
257                                           NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
258
259       if i.has_key('MAILLE') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1: 
260         motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
261                                           GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
262
263       if i.has_key('MAILLE') == 1 and i.has_key('NOEUD_ANCRAGE') == 1: 
264         motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
265                                           NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
266
267
268 # FIN BOUCLE sur i in DEFI_CABLE
269
270
271   # LANCEMENT DE DEFI_CABLE_BP
272
273   if RELAXATION:
274     dRelaxation=RELAXATION[0].cree_dict_valeurs(RELAXATION[0].mc_liste)
275     for i in dRelaxation.keys():
276       if dRelaxation[i]==None : del dRelaxation[i]
277
278     __DC=DEFI_CABLE_OP(MODELE=MODELE,
279                        CHAM_MATER=CHAM_MATER,
280                        CARA_ELEM=CARA_ELEM,
281                        GROUP_MA_BETON=GROUP_MA_BETON,
282                        TYPE_ANCRAGE=TYPE_ANCRAGE,
283                        TENSION_INIT=TENSION_INIT,
284                        RECUL_ANCRAGE=RECUL_ANCRAGE,
285                        RELAXATION=dRelaxation,
286                        INFO=INFO,
287                        **motscles
288                        );
289
290   else:
291
292     __DC=DEFI_CABLE_OP(MODELE=MODELE,
293                        CHAM_MATER=CHAM_MATER,
294                        CARA_ELEM=CARA_ELEM,
295                        GROUP_MA_BETON=GROUP_MA_BETON,
296                        TYPE_ANCRAGE=TYPE_ANCRAGE,
297                        TENSION_INIT=TENSION_INIT,
298                        RECUL_ANCRAGE=RECUL_ANCRAGE,
299                        INFO=INFO,
300                        **motscles
301                        );
302
303 #   __TCAB = RECU_TABLE(CO=__DC,NOM_TABLE='CABLE_BP');
304 #   IMPR_TABLE(TABLE=__TCAB);
305  
306   return ier