]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA10/Macro/defi_cable_bp_ops.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA10 / Macro / defi_cable_bp_ops.py
1 #@ MODIF defi_cable_bp_ops Macro  DATE 06/07/2009   AUTEUR COURTOIS 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 #  - 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
65   # La macro compte pour 1 dans la numerotation des commandes
66   self.set_icmd(1)
67
68   # Le concept sortant (de type char_meca) est nomme CHCABLE dans
69   # le contexte de la macro
70
71   self.DeclareOut('__DC',self.sd)
72
73   # ---------------------------------------------------------------------------- #
74   #                  Début de la Macro :
75
76   motscles={}
77
78   # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
79
80   if CONE:
81     dCONE=CONE[0].cree_dict_valeurs(CONE[0].mc_liste)
82     for i in dCONE.keys():
83       if dCONE[i]==None : del dCONE[i]
84
85     RAYON    = dCONE['RAYON']
86     LONGUEUR = dCONE['LONGUEUR']
87
88     motscles['CONE']=[]
89     motscles['CONE'].append( dCONE )
90
91     # RECUPERATION DU MAILLAGE A PARTIR DU MODELE
92     __MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE    .LGRF        ' )
93     __MAIL= __MAIL[0].strip()
94     MAILLAGE = self.get_sd_avant_etape(__MAIL,self)
95
96     # DEFINITION DU NOM DES GROUP_NO
97     __NOM = 'AN__'
98     __LGNO = MAILLAGE.LIST_GROUP_NO()
99     __LGN1 = []
100     for i in __LGNO :
101       __LGN1.append( i[0][:len(__NOM)] )
102
103     __NB  = __LGN1.count(__NOM)
104
105 # FIN RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
106
107
108   # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "DEFI_CABLE"
109
110   dDEFI_CABLE=[]
111   for j in DEFI_CABLE :
112       dDEFI_CABLE.append(j.cree_dict_valeurs(j.mc_liste))
113       for i in dDEFI_CABLE[-1].keys():
114           if dDEFI_CABLE[-1][i]==None : del dDEFI_CABLE[-1][i]
115
116
117   # BOUCLE SUR LES FACTEURS DU MOT-CLE "DEFI_CABLE"
118
119   motscles['DEFI_CABLE']=[]
120
121   for i in dDEFI_CABLE:
122
123     # CAS OU L'ON A DEFINI LE MOT-CLE "CONE"
124     if CONE:
125
126       # CREATION DU PREMIER TUNNEL
127
128       if dCONE['PRESENT'][0] == 'OUI':
129         __NB = __NB + 1
130         __NOM1 = __NOM + str( int(__NB) )
131
132         motscle2={}
133         motscle2['CREA_GROUP_NO']=[]
134
135         if i.has_key('GROUP_MA') == 1:
136           __CAB = i['GROUP_MA']
137
138           if type(GROUP_MA_BETON) in [types.TupleType, types.ListType]: gma = list(GROUP_MA_BETON)
139           else:                                                         gma = [ GROUP_MA_BETON ]
140           gma.insert(0, __CAB)
141
142           motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': gma, 'GROUP_MA_AXE': __CAB, 'NOM': __NOM1}]}
143         if i.has_key('MAILLE') == 1:
144           UTMESS('F','CABLE0_2')
145         if i.has_key('GROUP_NO_ANCRAGE') == 1:
146           __PC1 = i['GROUP_NO_ANCRAGE'][0]
147           motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
148         if i.has_key('NOEUD_ANCRAGE') == 1:
149           __PC1 = i['NOEUD_ANCRAGE'][0]
150           motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
151
152         DEFI_GROUP( reuse=MAILLAGE,
153                     MAILLAGE=MAILLAGE,
154                     INFO=INFO,
155                     ALARME='NON',
156                     **motscle2
157                    ) ;
158
159       # CREATION DU DEUXIEME TUNNEL
160
161       if dCONE['PRESENT'][1] == 'OUI':
162         __NB = __NB + 1
163         __NOM2 = __NOM + str( int(__NB) )
164
165         motscle2={}
166         motscle2['CREA_GROUP_NO']=[]
167
168         if i.has_key('GROUP_MA') == 1:
169           __CAB = i['GROUP_MA']
170
171           if type(GROUP_MA_BETON) in [types.TupleType, types.ListType]: gma = list(GROUP_MA_BETON)
172           else:                                                         gma = [ GROUP_MA_BETON ]
173           gma.insert(0, __CAB)
174
175           motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': gma, 'GROUP_MA_AXE': __CAB, 'NOM': __NOM2}]}
176         if i.has_key('MAILLE') == 1:
177           UTMESS('F','CABLE0_2')
178         if i.has_key('GROUP_NO_ANCRAGE') == 1:
179           __PC1 = i['GROUP_NO_ANCRAGE'][1]
180           motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
181         if i.has_key('NOEUD_ANCRAGE') == 1:
182           __PC1 = i['NOEUD_ANCRAGE'][1]
183           motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
184
185         DEFI_GROUP( reuse=MAILLAGE,
186                     MAILLAGE=MAILLAGE,
187                     INFO=INFO,
188                     ALARME='NON',
189                     **motscle2
190                    ) ;
191
192
193       # CREATION DES NOUVEAUX FACTEURS DU MOT-CLE "DEFI_CABLE" POUR DEFI_CABLE_BP
194
195       if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'OUI':
196         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
197           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
198                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
199                                             GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
200         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
201           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
202                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
203                                             GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
204
205       if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'NON':
206         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
207           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
208                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
209                                             GROUP_NO_FUT=( __NOM1, ), ), )
210         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
211           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
212                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
213                                             GROUP_NO_FUT=( __NOM1, ), ), )
214
215       if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'OUI':
216         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
217           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
218                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
219                                             GROUP_NO_FUT=( __NOM2, ), ), )
220         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
221           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
222                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
223                                             GROUP_NO_FUT=( __NOM2, ), ), )
224
225       if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'NON':
226         if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
227           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
228                                             GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
229         if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
230           motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
231                                             NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
232
233
234     # CAS OU L'ON A PAS DEFINI LE MOT-CLE "CONE"
235     else:
236       if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
237         motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
238                                           GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
239
240       if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
241         motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
242                                           NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
243
244       if i.has_key('MAILLE') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
245         motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
246                                           GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
247
248       if i.has_key('MAILLE') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
249         motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
250                                           NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
251
252
253 # FIN BOUCLE sur i in DEFI_CABLE
254
255
256   # LANCEMENT DE DEFI_CABLE_BP
257
258   if RELAXATION:
259     dRelaxation=RELAXATION[0].cree_dict_valeurs(RELAXATION[0].mc_liste)
260     for i in dRelaxation.keys():
261       if dRelaxation[i]==None : del dRelaxation[i]
262
263     __DC=DEFI_CABLE_OP(MODELE=MODELE,
264                        CHAM_MATER=CHAM_MATER,
265                        CARA_ELEM=CARA_ELEM,
266                        GROUP_MA_BETON=GROUP_MA_BETON,
267                        TYPE_ANCRAGE=TYPE_ANCRAGE,
268                        TENSION_INIT=TENSION_INIT,
269                        RECUL_ANCRAGE=RECUL_ANCRAGE,
270                        RELAXATION=dRelaxation,
271                        INFO=INFO,
272                        **motscles
273                        );
274
275   else:
276
277     __DC=DEFI_CABLE_OP(MODELE=MODELE,
278                        CHAM_MATER=CHAM_MATER,
279                        CARA_ELEM=CARA_ELEM,
280                        GROUP_MA_BETON=GROUP_MA_BETON,
281                        TYPE_ANCRAGE=TYPE_ANCRAGE,
282                        TENSION_INIT=TENSION_INIT,
283                        RECUL_ANCRAGE=RECUL_ANCRAGE,
284                        INFO=INFO,
285                        **motscles
286                        );
287
288   return ier