Salome HOME
BOUNDARY... dans Telemac2D
[tools/eficas.git] / generator / generator_dicoImbrique.py
index 9e5d1f639fefb5be4600541a14dd7739c36ae395..f8ee6bb135f128dd21787b183c9e07fc84ae107f 100644 (file)
 """Ce module contient le plugin generateur de fichier au format  Code_Carmel3D pour EFICAS.
 """
 
+from __future__ import absolute_import
+try :
+   from builtins import str
+except : pass
+
 import traceback
-import types,string,re,os
+import types,re,os
 from Extensions.i18n import tr
-from generator_python import PythonGenerator
+from .generator_python import PythonGenerator
 
 def entryPoint():
    """
@@ -55,9 +60,11 @@ class DicoImbriqueGenerator(PythonGenerator):
       
       # Cette instruction genere le contenu du fichier de commandes (persistance)
       self.text=PythonGenerator.gener(self,obj,format)
+      #print (self.text)
       return self.text
 
 
+
 #----------------------------------------------------------------------------------------
 # initialisations
 #----------------------------------------------------------------------------------------
@@ -65,6 +72,7 @@ class DicoImbriqueGenerator(PythonGenerator):
    def initDico(self) :
  
       self.Dico={}
+      self.DicoDejaLa={}
       self.Entete = ''
 
 
@@ -75,6 +83,7 @@ class DicoImbriqueGenerator(PythonGenerator):
    def writeDefault(self,fn) :
        fileDico = fn[:fn.rfind(".")] + '.py'
        f = open( str(fileDico), 'wb')
+
        f.write( self.Entete + "Dico =" + str(self.Dico) )
        f.close()
 
@@ -86,15 +95,37 @@ class DicoImbriqueGenerator(PythonGenerator):
         """recuperation de l objet MCSIMP"""
 
         s=PythonGenerator.generMCSIMP(self,obj)
-        liste=obj.get_genealogie() 
-        nom=obj.etape.nom
+        if obj.isInformation() : return s
+        if not obj.isvalid() :  return s 
+
+        liste=obj.get_genealogie_precise() 
+
+        if obj.etape.nom=='MODIFICATION_CATALOGUE' : return s
+        nom = obj.etape.nom
+        
         if hasattr(obj.etape,'sdnom') and obj.etape.sdnom != None and obj.etape.sdnom != "" : 
            nom = nom+ obj.etape.sdnom
-        if not(self.Dico.has_key(nom)) : dicoCourant={}
+
+        if not(nom in self.Dico) : dicoCourant={}
         else : dicoCourant=self.Dico [nom]
-        if hasattr(obj.valeur,'nom'):dicoCourant[liste[-1]]=obj.valeur.nom
+
+        nomFeuille=liste[-1]
+        if nomFeuille in dicoCourant or nomFeuille in self.DicoDejaLa:
+           if nomFeuille in self.DicoDejaLa:
+              nomTravail= nomFeuille +'_'+str(self.DicoDejaLa[nomFeuille])
+              self.DicoDejaLa[nomFeuille]=self.DicoDejaLa[nomFeuille]+1
+              nomFeuille=nomTravail
+           else :
+              self.DicoDejaLa[nomFeuille]=3
+              nom1=nomFeuille +'_1'
+              dicoCourant[nom1]= dicoCourant[nomFeuille]
+              del dicoCourant[nomFeuille]
+              nomFeuille=nomFeuille +'_2'
+
+
+        if hasattr(obj.valeur,'nom'): dicoCourant[nomFeuille]=obj.valeur.nom
         else : 
-           if type(obj.valeur)  in (types.ListType,types.TupleType):
+           if type(obj.valeur)  in (list,tuple):
               try :
 #PNPNPN a remplacer par plus propre
                  if obj.definition.validators.typeDesTuples[0] !='R' :
@@ -103,11 +134,15 @@ class DicoImbriqueGenerator(PythonGenerator):
                     for tupleElt in obj.valeur :
                         elt=(str(tupleElt[0]),tupleElt[1])
                         val.append(elt)
-                    dicoCourant[liste[-1]]=val
-                 else :dicoCourant[liste[-1]]=obj.valeur
+                    dicoCourant[nomFeuille]=val
+                 else :
+                    dicoCourant[nomFeuille]=obj.valeur
               except :
-                 dicoCourant[liste[-1]]=obj.valeurFormatee
-           else :dicoCourant[liste[-1]]=obj.valeurFormatee
+                 dicoCourant[nomFeuille]=obj.valeurFormatee
+           #else :dicoCourant[nomFeuille]=obj.valeurFormatee
+           else :
+              dicoCourant[nomFeuille]=obj.valeurFormatee
+              #print nomFeuille, obj.valeurFormatee
         self.Dico[nom]=dicoCourant
 
         return s