Salome HOME
BOUNDARY... dans Telemac2D
[tools/eficas.git] / generator / generator_dicoImbrique.py
index fda9c0a6d8112d7a0ff62f384a5dfd6bf24a6640..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():
    """
@@ -49,15 +54,17 @@ class DicoImbriqueGenerator(PythonGenerator):
    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None):
+   def gener(self,obj,format='brut',config=None, appli=None):
        
       self.initDico()
       
       # 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 = ''
 
 
@@ -73,9 +81,9 @@ class DicoImbriqueGenerator(PythonGenerator):
 #----------------------------------------------------------------------------------------
 
    def writeDefault(self,fn) :
-       print "je passe par writeDefault"
        fileDico = fn[:fn.rfind(".")] + '.py'
        f = open( str(fileDico), 'wb')
+
        f.write( self.Entete + "Dico =" + str(self.Dico) )
        f.close()
 
@@ -87,14 +95,54 @@ 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
-        else : dicoCourant[liste[-1]]=obj.valeurFormatee
+
+        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 (list,tuple):
+              try :
+#PNPNPN a remplacer par plus propre
+                 if obj.definition.validators.typeDesTuples[0] !='R' :
+                    val=[]
+                    elt=[]
+                    for tupleElt in obj.valeur :
+                        elt=(str(tupleElt[0]),tupleElt[1])
+                        val.append(elt)
+                    dicoCourant[nomFeuille]=val
+                 else :
+                    dicoCourant[nomFeuille]=obj.valeur
+              except :
+                 dicoCourant[nomFeuille]=obj.valeurFormatee
+           #else :dicoCourant[nomFeuille]=obj.valeurFormatee
+           else :
+              dicoCourant[nomFeuille]=obj.valeurFormatee
+              #print nomFeuille, obj.valeurFormatee
         self.Dico[nom]=dicoCourant
 
         return s