]> SALOME platform Git repositories - tools/eficas.git/blobdiff - generator/generator_dicoImbrique.py
Salome HOME
update version
[tools/eficas.git] / generator / generator_dicoImbrique.py
index 9e5d1f639fefb5be4600541a14dd7739c36ae395..07c91ccd3f7b39e6c1f8e26dae15f38c98f3c423 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013   EDF R&D
+# Copyright (C) 2007-2021   EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 """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():
-   """
-      Retourne les informations necessaires pour le chargeur de plugins
-      Ces informations sont retournees dans un dictionnaire
-   """
-   return {
-        # Le nom du plugin
-          'name' : 'dicoImbrique',
-        # La factory pour creer une instance du plugin
-          'factory' : DicoImbriqueGenerator,
-          }
+    """
+       Retourne les informations necessaires pour le chargeur de plugins
+       Ces informations sont retournees dans un dictionnaire
+    """
+    return {
+         # Le nom du plugin
+           'name' : 'dicoImbrique',
+         # La factory pour creer une instance du plugin
+           'factory' : DicoImbriqueGenerator,
+           }
 
 
 class DicoImbriqueGenerator(PythonGenerator):
-   """
-      Ce generateur parcourt un objet de type JDC et produit
-      un texte au format eficas et 
-      un texte au format dictionnaire
+    """
+       Ce generateur parcourt un objet de type JDC et produit
+       un texte au format eficas et
+       un texte au format dictionnaire
 
-   """
-   # Les extensions de fichier permis?
-   extensions=('.comm',)
+    """
+    # Les extensions de fichier permis?
+    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   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)
-      return self.text
+    def gener(self,obj,format='brut',config=None, appliEficas=None):
+
+        self.initDico()
+
+        # Cette instruction genere le contenu du fichier de commandes (persistance)
+        self.text=PythonGenerator.gener(self,obj,format)
+        #print (self.text)
+        print (self.Dico)
+        return self.text
+
 
 
 #----------------------------------------------------------------------------------------
 # initialisations
 #----------------------------------------------------------------------------------------
-   
-   def initDico(self) :
-      self.Dico={}
-      self.Entete = ''
+
+    def initDico(self) :
+
+        self.Dico={}
+        self.DicoDejaLa={}
+        self.Entete = ''
 
 
 #----------------------------------------------------------------------------------------
 # ecriture
 #----------------------------------------------------------------------------------------
 
-   def writeDefault(self,fn) :
-       fileDico = fn[:fn.rfind(".")] + '.py'
-       f = open( str(fileDico), 'wb')
-       f.write( self.Entete + "Dico =" + str(self.Dico) )
-       f.close()
+    def writeDefault(self,fn) :
+        fileDico = fn[:fn.rfind(".")] + '.py'
+        f = open( str(fileDico), 'w')
+
+        f.write( "Dico =" + str(self.Dico) )
+        #f.write( self.Entete + "Dico =" + str(self.Dico) )
+        f.close()
 
 #----------------------------------------------------------------------------------------
-#  analyse de chaque noeud de l'arbre 
+#  analyse de chaque noeud de l'arbre
 #----------------------------------------------------------------------------------------
 
-   def generMCSIMP(self,obj) :
+    def generMCSIMP(self,obj) :
         """recuperation de l objet MCSIMP"""
 
         s=PythonGenerator.generMCSIMP(self,obj)
-        liste=obj.get_genealogie() 
-        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 obj.isInformation() : return s
+        if not obj.isValid() :  return s
+
+        liste=obj.getGenealogiePrecise()
+
+        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(nom in self.Dico) : dicoCourant={}
         else : dicoCourant=self.Dico [nom]
-        if hasattr(obj.valeur,'nom'):dicoCourant[liste[-1]]=obj.valeur.nom
-        else : 
-           if type(obj.valeur)  in (types.ListType,types.TupleType):
-              try :
+
+        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[liste[-1]]=val
-                 else :dicoCourant[liste[-1]]=obj.valeur
-              except :
-                 dicoCourant[liste[-1]]=obj.valeurFormatee
-           else :dicoCourant[liste[-1]]=obj.valeurFormatee
+                    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
-
-