Salome HOME
src/EFICASGUI/EFICASGUI.py
[modules/eficas.git] / src / STUDY / EficasStudy.py
index 5570f7989bf4d426df814cf7dc3493c1880c7e81..c191b11201dbc19d027380569f024ecc64b766ee 100644 (file)
@@ -1,73 +1,67 @@
-# -*- coding: iso-8859-1 -*-
+# -*- coding: utf8 -*-
 import salomedsgui
 import salome
 
 import SALOMEDS
-try :
+try:
     import SMESH
-except :
-    pass
-try :
-    import SMESH
-except :
+except ImportError:
     pass
 
 from salome.kernel.logger import Logger
-logger=Logger( "EficasStudy" )
+logger = Logger("EficasStudy")
 
 
-#Nom des composants SALOME dans l'arbre d'étude
-SMesh  = "Mesh"
-SGeom  = "Geometry"
-SVisu  = "Post-Pro"
+# Nom des composants SALOME dans l'arbre d'étude
+SMesh = "Mesh"
+SGeom = "Geometry"
+SVisu = "Post-Pro"
 SAster = "Aster"
 
 
-class SalomeStudy(   salomedsgui.guiDS ):
+class SalomeStudy(salomedsgui.guiDS):
     """
-    Classe de manipulation de l'arbre d'étude Salome. Cette classe permet à 
-    l'utilisateur de manipuler les objets de 'arbre d'étude via leurs 
+    Classe de manipulation de l'arbre d'étude Salome. Cette classe permet à
+    l'utilisateur de manipuler les objets de 'arbre d'étude via leurs
     identifiants( entry ).
-    
-    Attention : Par défaut les opérations réalisée par cette classe portent sur 
-    une étude courante ( positionnée dans le constructeur ou par la méthode 
+
+    Attention : Par défaut les opérations réalisée par cette classe portent sur
+    une étude courante ( positionnée dans le constructeur ou par la méthode
     setCurrentStudyID() )
-    """    
-    def __init__( self, studyID = salome.myStudyId ):        
-        salomedsgui.guiDS.__init__( self  )
-        self.setCurrentStudy( studyID)
-        
-        # spécifique méthode __getMeshType() :
-        self.groupOp    = None
+    """
+    def __init__(self, studyID=salome.myStudyId):
+        salomedsgui.guiDS.__init__(self)
+        self.setCurrentStudy(studyID)
+
+        # spécifique méthode __getMeshType() :
+        self.groupOp = None
         self.geomEngine = None
-        
-        # spécifique méthode createMesh() :
-        self.smeshEngine = None 
-        
-        
-                
+
+        # spécifique méthode createMesh() :
+        self.smeshEngine = None
+
     # --------------------------------------------------------------------------
-    #   fonctions de manipulation générale ( porte sur toute l'arbre d'étude )
-    def __getCORBAObject( self,  entry ):         
+    #   fonctions de manipulation générale ( porte sur toute l'arbre d'étude )
+    def __getCORBAObject(self, entry):
         """
-        Retourne l'objet CORBA correspondant son identifiant ( entry ) dans 
-        l'arbre d'étude.
-        
+        Retourne l'objet CORBA correspondant son identifiant ( entry ) dans
+        l'arbre d'étude.
+
         @type   entry : string
-        @param  entry : objet Corba 
-        
+        @param  entry : objet Corba
+
         @rtype  :  objet CORBA
         @return :  l'objet CORBA,   None si erreur.
         """
-        object = None
-        try:            
-            mySO = self._myStudy.FindObjectID( entry )            
-            if mySO:            
-                object = mySO.GetObject()
-                
-                if not object: # l'objet n'a pas encore chargé
-                    path          = self._myStudy.GetObjectPath( mySO )# recherche du nom du composant
-                    componentName = ( path.split('/')[1] ).strip()
+        sobject = None
+        try:
+            mySO = self._myStudy.FindObjectID(entry)
+            if mySO:
+                sobject = mySO.GetObject()
+
+                if not sobject:  # l'objet n'a pas encore chargé
+                    path = self._myStudy.GetObjectPath(mySO)  # recherche du nom du composant
+                    componentName = (path.split('/')[1]).strip()
 
                     if componentName == SMesh:
                         strContainer, strComponentName = "FactoryServer", "SMESH"
@@ -77,469 +71,448 @@ class SalomeStudy(   salomedsgui.guiDS ):
                         strContainer, strComponentName = "FactoryServer", "VISU"
                     elif componentName == SAster:
                         strContainer, strComponentName = "FactoryServerPy", "ASTER"
-                    else :
-                        logger.debug('>>>>CS_Pbruno StudyTree.__getCORBAObject chargement du composant  %s non implémenté ' %componentName)
-                        raise 'Erreur'                        
-                        
-                    myComponent = salome.lcc.FindOrLoadComponent( strContainer, strComponentName )
-                    SCom        = self._myStudy.FindComponent( strComponentName )
-                    self._myBuilder.LoadWith( SCom , myComponent  )
-                    object      = mySO.GetObject()
+                    else:
+                        logger.debug('>>>>CS_Pbruno StudyTree.__getCORBAObject chargement du composant  %s non implémenté ' % componentName)
+                        raise Exception('Erreur')
+
+                    myComponent = salome.lcc.FindOrLoadComponent(strContainer, strComponentName)
+                    SCom = self._myStudy.FindComponent(strComponentName)
+                    self._myBuilder.LoadWith(SCom, myComponent)
+                    sobject = mySO.GetObject()
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]
-            logger.debug( '>>>>CS_Pbruno StudyTree.__getCORBAObject erreur recupération  objet corba ( entry = %s ) ' %entry)
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ) )
-            object = None
-            
-        return object
-        
-        
-    def __getEntry( self, corbaObject ):
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.__getCORBAObject erreur recupération  objet corba ( entry = %s ) ' % entry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
+            sobject = None
+
+        return sobject
+
+    def __getEntry(self, corbaObject):
         """
-        Retourne l'identifiant ( entry ) ds l'arbre d'étude de l'objet CORBA 
-        passé en paramètre.
-                
+        Retourne l'identifiant ( entry ) ds l'arbre d'étude de l'objet CORBA
+        passé en paramètre.
+
         @type     corbaObject : objet Corba
-        @param  corbaObject   : objet Corba 
-        
+        @param  corbaObject   : objet Corba
+
         @rtype  :  string
         @return :  identifiant ( entry ),    None si erreur.
         """
-        entry        = None
+        entry = None
         currentStudy = self._myStudy
-                
+
         if corbaObject:
-            ior = salome.orb.object_to_string( corbaObject )
+            ior = salome.orb.object_to_string(corbaObject)
             if ior:
-                sObject = currentStudy.FindObjectIOR(  ior )                
-                entry   = sObject.GetID()
+                sObject = currentStudy.FindObjectIOR(ior)
+                entry = sObject.GetID()
         return entry
-        
-        
 
-    def setCurrentStudyID( self, studyID):
+    def setCurrentStudyID(self, studyID):
+        """
+        Fixe l'étude courante sur laquel vont opérer toutes les fonctions
+        de la classe.
         """
-        Fixe l'étude courante sur laquel vont opérer toutes les fonctions 
-        de la classe.        
-        """        
-        self._father    = None
+        self._father = None
         self._component = None
-        self._myStudy   = self._myStudyManager.GetStudyByID( studyID)        
-        self._myBuilder = self._myStudy.NewBuilder( )
-                
-        salome.myStudy       = self._myStudy
-        salome.myStudyId     = studyID
-        salome.myStudyName   = self._myStudy._get_Name()        
-    
-    def refresh( self ):        
+        self._myStudy = self._myStudyManager.GetStudyByID(studyID)
+        self._myBuilder = self._myStudy.NewBuilder()
+
+        salome.myStudy = self._myStudy
+        salome.myStudyId = studyID
+        salome.myStudyName = self._myStudy._get_Name()
+
+    def refresh(self):
         """
-        Rafraichissement de l'arbre d'étude
+        Rafraichissement de l'arbre d'étude
         """
         salome.sg.updateObjBrowser(0)
-                
-    def setName( self, entry, name ):
+
+    def setName(self, entry, name):
         """
-        Fixe le nom( la valeur de l'attribut 'AttributeName' ) d'un objet de l'arbre d'étude
-        désigné par son identifiant( entry )
-                
+        Fixe le nom( la valeur de l'attribut 'AttributeName' ) d'un objet de l'arbre d'étude
+        désigné par son identifiant( entry )
+
         @type   entry: string
-        @param  entry: identifiant de l'objet dans l'arbre d'étude
-        
+        @param  entry: identifiant de l'objet dans l'arbre d'étude
+
         @type   name: string
-        @param  name: nom à attribuer
-        
+        @param  name: nom à attribuer
+
         @rtype  :  boolean
         @return :  True si Ok, False sinon, None si erreur
         """
         result = False
         try:
-            SObject = self._myStudy.FindObjectID( entry )
-            A1      = self._myBuilder.FindOrCreateAttribute( SObject, "AttributeName" )
-            AName   = A1._narrow(SALOMEDS.AttributeName)
-            AName.SetValue( name )
-            result = True            
+            SObject = self._myStudy.FindObjectID(entry)
+            A1 = self._myBuilder.FindOrCreateAttribute(SObject, "AttributeName")
+            AName = A1._narrow(SALOMEDS.AttributeName)
+            AName.SetValue(name)
+            result = True
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]
-            logger.debug( '>>>>CS_Pbruno StudyTree.setName ( entry = %s, name = %s )' %( entry, name ) )
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ) )
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.setName ( entry = %s, name = %s )' % (entry, name))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
+
         return result
 
-    def hasName( self, componentName, objectName ):
+    def hasName(self, componentName, objectName):
         """
-        Vérifie si dans l'arbre d'étude le commposant de nom componentName
-        possède un objet de nom objectName.
-                
+        Vérifie si dans l'arbre d'étude le commposant de nom componentName
+        possède un objet de nom objectName.
+
         @type   componentName: string
         @param  componentName: nom du composant Salome
-        
+
         @type   objectName: string
-        @param  objectName: nom de l'objet 
-        
+        @param  objectName: nom de l'objet
+
         @rtype  :  boolean
         @return :  True si Ok, False sinon,  None si erreur
         """
         result = False
         try:
-            nom = {            
+            nom = {
                 SMesh:  "SMESH",
                 SGeom:  "GEOM",
                 SVisu:  "VISU",
-                SAster: "ASTER"            
+                SAster: "ASTER"
             }
-            componentName = nom[ componentName ]            
-            SObjects = self._myStudy.FindObjectByName( objectName, componentName )
-            if len( SObjects ) > 0:
-                result = True            
+            componentName = nom[componentName]
+            SObjects = self._myStudy.FindObjectByName(objectName, componentName)
+            if len(SObjects) > 0:
+                result = True
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]
-            logger.debug( '>>>>CS_Pbruno StudyTree.setName ( entry = %s, name = %s )' %( entry, name ) )
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ) )
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.hasName ( componentName = %s, objectName = %s )' % (componentName, objectName))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
-        return result
-
-
-        
 
+        return result
 
     # --------------------------------------------------------------------------
-    #   fonctions de manipulation des objets géométriques dans l'arbre d'étude
-    #   ( éléments contenu dans la sous-rubrique "Geometry' )
-    def isMainShape(  self,  entry ):
+    #   fonctions de manipulation des objets géométriques dans l'arbre d'étude
+    #   ( éléments contenu dans la sous-rubrique "Geometry' )
+    def isMainShape(self, entry):
         """
-        Teste si l'objet désigné par l'identifiant ( entry ) passé en argument 
-        est bien un objet géométrique principal.
-                
+        Teste si l'objet désigné par l'identifiant ( entry ) passé en argument
+        est bien un objet géométrique principal.
+
         @type   entry: string
-        @param  entry: identifiant de l'objet 
-        
+        @param  entry: identifiant de l'objet
+
         @rtype:   boolean
         @return:  True si Ok, False sinon
         """
         result = False
-        try:            
-            anObject = self.__getCORBAObject(  entry )
-            shape    = anObject._narrow( GEOM.GEOM_Object )            
+        try:
+            anObject = self.__getCORBAObject(entry)
+            shape = anObject._narrow(GEOM.GEOM_Object)
             if shape.IsMainShape():
-                result = True                        
+                result = True
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            logger.debug( '>>>>CS_Pbruno StudyTree.isMainShape( entry = %s ) ' %entry )
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ) )
-            result = False            
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.isMainShape( entry = %s ) ' % entry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
+            result = False
         return result
-        
-    
-    def getMainShapeEntry(  self,  entry ):
+
+    def getMainShapeEntry(self, entry):
         """
-        Retourne l'identifiant de l'objet géométrique principal du sous-objet géométrique désigné par 
-        l'identifiant ( entry ) passé en paramètre.
-        
+        Retourne l'identifiant de l'objet géométrique principal du sous-objet géométrique désigné par
+        l'identifiant ( entry ) passé en paramètre.
+
         @type   entry: string
-        @param  entry: identifiant du sous-objet géométrique
-        
-        @rtype  :  string 
-        @return :  identifiant de  l'objet géométrique principal, None si erreur.
+        @param  entry: identifiant du sous-objet géométrique
+
+        @rtype  :  string
+        @return :  identifiant de  l'objet géométrique principal, None si erreur.
         """
         result = None
-        try :
-            if self.isMainShape( entry ):
+        try:
+            if self.isMainShape(entry):
                 result = entry
             else:
-                anObject = self.__getCORBAObject(  entry )
-                shape    = anObject._narrow( GEOM.GEOM_Object )
-                objMain  = shape.GetMainShape()                
-                result   = self.__getEntry( objMain )                
-        except :
-            import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            #print '>>>>CS_Pbruno StudyTree.getMainShapeEntry( entry = %s ) ' %entry
-            #print 'type        = %s ,             value       = %s '%( type, value )
+                anObject = self.__getCORBAObject(entry)
+                shape = anObject._narrow(GEOM.GEOM_Object)
+                objMain = shape.GetMainShape()
+                result = self.__getEntry(objMain)
+        except:
+            import sys
+            # ex_type = sys.exc_info()[0]
+            # ex_value = sys.exc_info()[1]
+            # print('>>>>CS_Pbruno StudyTree.getMainShapeEntry( entry = %s ) ' %entry)
+            # print('type        = %s ,             value       = %s '%( ex_type, ex_value ))
             result = None
-           
+
         return result
-        
-    def sameMainShape(  self,  shapeEntry1, shapeEntry2 ):
+
+    def sameMainShape(self, shapeEntry1, shapeEntry2):
         """
-        Détermine si les objets géometriques fournis en argument sont les 
-        sous-objets d'une même géométrie principale
-                
+        Détermine si les objets géometriques fournis en argument sont les
+        sous-objets d'une même géométrie principale
+
         @type   shapeEntry1: string
-        @param  shapeEntry1: identifiant dans l'arbre d'étude d'un objet géométrique
-        
+        @param  shapeEntry1: identifiant dans l'arbre d'étude d'un objet géométrique
+
         @type   shapeEntry2: string
-        @param  shapeEntry2: identifiant dans l'arbre d'étude d'un objet géométrique
-        
+        @param  shapeEntry2: identifiant dans l'arbre d'étude d'un objet géométrique
+
         @rtype  :  boolean
-        @return :  True si même objet principal, False sinon, None si erreur.
+        @return :  True si même objet principal, False sinon, None si erreur.
         """
         result = None
-        try :
-            mainShape1 = self.getMainShapeEntry( shapeEntry1 )
+        try:
+            mainShape1 = self.getMainShapeEntry(shapeEntry1)
             if mainShape1:
-                mainShape2 = self.getMainShapeEntry( shapeEntry2 )
+                mainShape2 = self.getMainShapeEntry(shapeEntry2)
                 if mainShape2:
                     result = mainShape1 == mainShape2
-        except :
-            import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            #print '>>>>CS_Pbruno StudyTree.sameMainShape(  shapeEntry1 = %s , shapeEntry2 = %s )'%( shapeEntry1, shapeEntry2 )
-            #print 'type        = %s ,             value       = %s '%( type, value )
+        except:
+            import sys
+            # ex_type = sys.exc_info()[0]
+            # ex_value = sys.exc_info()[1]
+            # print('>>>>CS_Pbruno StudyTree.sameMainShape(  shapeEntry1 = %s , shapeEntry2 = %s )'%( shapeEntry1, shapeEntry2 ))
+            # print('type        = %s ,             value       = %s '%( ex_type, ex_value ))
             result = None
-           
+
         return result
-                
-        
+
     # --------------------------------------------------------------------------
-    #   fonctions de manipulation des objets maillages  dans l'arbre d'étude
-    #   ( éléments contenu dans la sous-rubrique 'Mesh' )
-    def __getMeshType( self, shapeEntry ):
+    #   fonctions de manipulation des objets maillages  dans l'arbre d'étude
+    #   ( éléments contenu dans la sous-rubrique 'Mesh' )
+    def __getMeshType(self, shapeEntry):
         """
-        Determination du type de maille en fonction de la géométrie pour les conditions aux limites.
-        
+        Determination du type de maille en fonction de la géométrie pour les conditions aux limites.
+
         @type     shapeEntry : string
-        @param  shapeEntry : identifiant de l'objet géométrique
-        
+        @param  shapeEntry : identifiant de l'objet géométrique
+
         @rtype:   SMESH::ElementType ( voir SMESH_Mesh.idl )
         @return:  type de maillage, None si erreur.
-        """ 
+        """
         result = None
-        
-        try:        
-            anObject = self.__getCORBAObject(  shapeEntry )
-            shape    = anObject._narrow( GEOM.GEOM_Object )
-            
-            if shape: #Ok, c'est bien un objet géométrique
-                tgeo = str( shape.GetShapeType() )
-                
+
+        try:
+            anObject = self.__getCORBAObject(shapeEntry)
+            shape = anObject._narrow(GEOM.GEOM_Object)
+
+            if shape:  # Ok, c'est bien un objet géométrique
+                tgeo = str(shape.GetShapeType())
+
                 meshTypeStr = {
-                    "VERTEX" :         SMESH.NODE,
-                    "EDGE":             SMESH.EDGE,
-                    "FACE":             SMESH.FACE,
-                    "SOLID":            SMESH.VOLUME,
-                    "COMPOUND" :  None
+                    "VERTEX": SMESH.NODE,
+                    "EDGE": SMESH.EDGE,
+                    "FACE": SMESH.FACE,
+                    "SOLID": SMESH.VOLUME,
+                    "COMPOUND":  None
                 }
-                result = meshTypeStr[ tgeo]
-                if result == None:                    
+                result = meshTypeStr[tgeo]
+                if result is None:
                     if not self.geomEngine:
-                        self.geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
+                        self.geomEngine = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
                     if not self.GroupOp:
-                        self.GroupOp  = self.geomEngine.GetIGroupOperations(  salome.myStudyId )
-                        
-                    tgeo = self.GroupOp.GetType( shape )
-                    meshTypeInt = { #Voir le dictionnnaire ShapeType dans geompy.py pour les correspondances type - numero.
-                        7:      SMESH.NODE, 
+                        self.GroupOp = self.geomEngine.GetIGroupOperations(salome.myStudyId)
+
+                    tgeo = self.GroupOp.GetType(shape)
+                    meshTypeInt = {  # Voir le dictionnnaire ShapeType dans geompy.py pour les correspondances type - numero.
+                        7:      SMESH.NODE,
                         6:      SMESH.EDGE,
                         4:      SMESH.FACE,
                         2:      SMESH.VOLUME
                     }
-                    if meshTypeInt.has_key(  int( tgeo ) ):
-                        result = meshTypeInt[ tgeo]                    
+                    if int(tgeo) in meshTypeInt:
+                        result = meshTypeInt[tgeo]
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            logger.debug( '>>>>CS_Pbruno StudyTree.__getMeshType( shapeEntry  = %s ) ' %shapeEntry )
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.__getMeshType( shapeEntry  = %s ) ' % shapeEntry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
+
         return result
-        
-    def getAllMeshReferencingMainShape( self, mainShapeEntry ):
+
+    def getAllMeshReferencingMainShape(self, mainShapeEntry):
         """
-        Retourne une liste de tous les maillages construits à partir de l'objet
-        principal géométrique passé en argument
-        
+        Retourne une liste de tous les maillages construits à partir de l'objet
+        principal géométrique passé en argument
+
         @type     mainShapeEntry : string
-        @param    mainShapeEntry : identifiant( entry ) de l'objet  principal géométrique
-        
+        @param    mainShapeEntry : identifiant( entry ) de l'objet  principal géométrique
+
         @rtype:   list
         @return:  liste des identifiants( entry ) des maillages, liste vide si aucun , None si erreur.
         """
         result = []
-        
+
         try:
-            if self.isMainShape(  mainShapeEntry ):
-                mainShapeSO = salome.IDToSObject( mainShapeEntry )
-                SObjectList = self._myStudy.FindDependances( mainShapeSO )
-                #print '####  mainShapeSO=%s , SObjectList  = %s'%( mainShapeSO, SObjectList )
-                if SObjectList: #Ok, il y a des objet référençant la mainShape
-                    for SObject in SObjectList: # Recherche du type de chacun des objets
+            if self.isMainShape(mainShapeEntry):
+                mainShapeSO = salome.IDToSObject(mainShapeEntry)
+                SObjectList = self._myStudy.FindDependances(mainShapeSO)
+                # print('####  mainShapeSO=%s , SObjectList  = %s'%( mainShapeSO, SObjectList ))
+                if SObjectList:  # Ok, il y a des objet référençant la mainShape
+                    for SObject in SObjectList:  # Recherche du type de chacun des objets
                         SFatherComponent = SObject.GetFatherComponent()
-                        #print '####  SFatherComponent = %s'%SFatherComponent 
-                        if SFatherComponent.GetName() == SMesh: #Ok, l'objet est un objet du composant 'Mesh'
+                        # print('####  SFatherComponent = %s'%SFatherComponent)
+                        if SFatherComponent.GetName() == SMesh:  # Ok, l'objet est un objet du composant 'Mesh'
                             SFather = SObject.GetFather()
-                            #print '####  SFather= %s'%SFather
-                            ##CorbaObject = SFather.GetObject()
+                            # print('####  SFather= %s'%SFather)
+                            # #CorbaObject = SFather.GetObject()
                             FatherEntry = SFather.GetID()
-                            CorbaObject  = self.__getCORBAObject(  FatherEntry )
-                            #print '####  CorbaObject = %s'%CorbaObject 
-                            MeshObject = CorbaObject ._narrow( SMESH.SMESH_Mesh )
-                            #print '####  MeshObject = %s'%MeshObject 
-                            if MeshObject : #Ok, l'objet est un objet 'maillage'
-                                MeshObjectEntry = self.__getEntry( MeshObject )
-                                #print '####  MeshObjectEntry = %s'%MeshObjectEntry 
+                            CorbaObject = self.__getCORBAObject(FatherEntry)
+                            # print('####  CorbaObject = %s'%CorbaObject)
+                            MeshObject = CorbaObject ._narrow(SMESH.SMESH_Mesh)
+                            # print('####  MeshObject = %s'%MeshObject)
+                            if MeshObject:  # Ok, l'objet est un objet 'maillage'
+                                MeshObjectEntry = self.__getEntry(MeshObject)
+                                # print('####  MeshObjectEntry = %s'%MeshObjectEntry)
                                 if MeshObjectEntry:
-                                    result.append( MeshObjectEntry )  # On l'ajoute ds la liste résultat!
-            else: # c'est pas une mainShape !
-                result = None            
-        except :
+                                    result.append(MeshObjectEntry)  # On l'ajoute ds la liste résultat!
+            else:  # c'est pas une mainShape !
+                result = None
+        except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            logger.debug( '>>>>CS_Pbruno StudyTree.getAllMeshReferencingMainShape( mainShapeEntry  = %s ) ' %mainShapeEntry )
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.getAllMeshReferencingMainShape( mainShapeEntry  = %s ) ' % mainShapeEntry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
-        return result 
-        
 
-        
-    def updateMesh( self,  meshEntry, groupeMaEntries, groupeNoEntries ):
+        return result
+
+    def updateMesh(self, meshEntry, groupeMaEntries, groupeNoEntries):
         """
-        Met à jours d'un objet maillage à partir d'une liste de sous-objet géométrique.
-        L'opération consiste à créer des groupes dans le maillage correspondant 
-        aux sous-objets géométrique de la liste.
-        
-        CS_pbruno Attention: ajoute des groupes sans vérifier si auparavant ils ont déjà été crées
-        
+        Met à jours d'un objet maillage à partir d'une liste de sous-objet géométrique.
+        L'opération consiste à créer des groupes dans le maillage correspondant
+        aux sous-objets géométrique de la liste.
+
+        CS_pbruno Attention: ajoute des groupes sans vérifier si auparavant ils ont déjà été crées
+
         @type   meshEntry : string
         @param  meshEntry : identifiant du maillage
-        
+
         @type   groupeMaEntries : liste de string
-        @param  groupeMaEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
+        @param  groupeMaEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
                                   sur lesquel on veut construire des groupes de face.
 
         @type   groupeNoEntries : liste de string
-        @param  groupeNoEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
+        @param  groupeNoEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
                                   sur lesquel on veut construire des groupes de noeuds.
-        
+
         @rtype:   bool
         @return:  True si update OK, False en cas d'erreur
         """
         result = False
         try:
-            #print 'CS_pbruno updateMesh( self,  meshEntry=%s,   groupeMaEntries=%s )'%( meshEntry,   groupeMaEntries )
-            corbaObject = self.__getCORBAObject(  meshEntry  )
-            mesh        = corbaObject._narrow( SMESH.SMESH_Mesh )
-            
-            if mesh: # Ok, c'est bien un maillage
+            # print('CS_pbruno updateMesh( self,  meshEntry=%s,   groupeMaEntries=%s )'%( meshEntry,   groupeMaEntries ))
+            corbaObject = self.__getCORBAObject(meshEntry)
+            mesh = corbaObject._narrow(SMESH.SMESH_Mesh)
+
+            if mesh:  # Ok, c'est bien un maillage
                 shapeName = ""
-                meshType  = None
-                
-                #création groupes de noeud
+                meshType = None
+
+                # création groupes de noeud
                 for shapeEntry in groupeNoEntries:
-                    anObject = self.__getCORBAObject(  shapeEntry )
-                    shape    = anObject._narrow( GEOM.GEOM_Object )
-                    if shape: #Ok, c'est bien un objet géométrique
-                        shapeName = self.getNameAttribute( shapeEntry )
-                        mesh.CreateGroupFromGEOM( SMESH.NODE, shapeName, shape )
+                    anObject = self.__getCORBAObject(shapeEntry)
+                    shape = anObject._narrow(GEOM.GEOM_Object)
+                    if shape:  # Ok, c'est bien un objet géométrique
+                        shapeName = self.getNameAttribute(shapeEntry)
+                        mesh.CreateGroupFromGEOM(SMESH.NODE, shapeName, shape)
                     else:
-                        pass            # CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération
-                        #return False   #                    2)ou on continue et essaye les suivants ( choix actuel
+                        pass  # CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération
+                        # return False   #                    2)ou on continue et essaye les suivants ( choix actuel
 
-                #création groupes de face
+                # création groupes de face
                 for shapeEntry in groupeMaEntries:
-                    meshType = self.__getMeshType( shapeEntry )
-                    if meshType:                        
-                        anObject = self.__getCORBAObject(  shapeEntry )
-                        shape    = anObject._narrow( GEOM.GEOM_Object )
-                        if shape: #Ok, c'est bien un objet géométrique                            
-                            shapeName = self.getNameAttribute( shapeEntry )
-                            mesh.CreateGroupFromGEOM( meshType, shapeName, shape )
+                    meshType = self.__getMeshType(shapeEntry)
+                    if meshType:
+                        anObject = self.__getCORBAObject(shapeEntry)
+                        shape = anObject._narrow(GEOM.GEOM_Object)
+                        if shape:  # Ok, c'est bien un objet géométrique
+                            shapeName = self.getNameAttribute(shapeEntry)
+                            mesh.CreateGroupFromGEOM(meshType, shapeName, shape)
                         else:
-                            pass            #CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération
-                            #return False   #                    2)ou on continue et essaye les suivants ( choix actuel )
+                            pass  # CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération
+                            # return False   #                    2)ou on continue et essaye les suivants ( choix actuel )
                     else:
-                        pass            #CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération 
-                        #return False   #                    2)ou on continue et essaye les suivants ( choix actuel )
+                        pass  # CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération
+                        # return False   #                    2)ou on continue et essaye les suivants ( choix actuel )
 
                 result = True
-                        
+
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            logger.debug( '>>>>CS_Pbruno StudyTree.updateMesh( meshEntry= %s,   groupeMaEntries = %s )' %( meshEntry, groupeMaEntries))
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.updateMesh( meshEntry= %s,   groupeMaEntries = %s )' % (meshEntry, groupeMaEntries))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
         return result
-        
-        
-        
-    
-        
-        
-    def createMesh( self, newMeshName, mainShapeEntry, groupeMaEntries, groupeNoEntries ):
+
+    def createMesh(self, newMeshName, mainShapeEntry, groupeMaEntries, groupeNoEntries):
         """
-        Création d'un objet maillage à partir d'un objet géométrique principal
-        Les groupes dans le maillage sont crée à partir des sous-objets géométriques
-        contenu dans la liste fourni en paramètre d'entré.
+        Création d'un objet maillage à partir d'un objet géométrique principal
+        Les groupes dans le maillage sont crée à partir des sous-objets géométriques
+        contenu dans la liste fourni en paramètre d'entré.
 
         @type   newMeshName : string
         @param  newMeshName : nom du nouveau maillage
-        
+
         @type   mainShapeEntry : string
-        @param  mainShapeEntry : identifiant de l'objet géométrique principal        
-        
+        @param  mainShapeEntry : identifiant de l'objet géométrique principal
+
         @type   groupeMaEntries : liste de string
-        @param  groupeMaEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
+        @param  groupeMaEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
                                   sur lesquel on veut construire des groupes de face.
 
         @type   groupeNoEntries : liste de string
-        @param  groupeNoEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
+        @param  groupeNoEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques
                                   sur lesquel on veut construire des groupes de noeuds.
-        
+
         @rtype:   string
-        @return:  identifiant( entry ) dans l'arbre d'étude du nouveau maillage, None en cas d'erreur.
-        """        
+        @return:  identifiant( entry ) dans l'arbre d'étude du nouveau maillage, None en cas d'erreur.
+        """
         result = False
         try:
-            #print 'CS_pbruno createMesh( self, newMeshName=%s, mainShapeEntry=%s, groupeMaEntries=%s )'%( newMeshName, mainShapeEntry, groupeMaEntries )
+            # print('CS_pbruno createMesh( self, newMeshName=%s, mainShapeEntry=%s, groupeMaEntries=%s )'
+            #      % (newMeshName, mainShapeEntry, groupeMaEntries))
             newMesh = None
-            anObject = self.__getCORBAObject(  mainShapeEntry )            
-            shape    = anObject._narrow( GEOM.GEOM_Object )            
-            if shape:                
-                # Création du nouveau maillage
+            anObject = self.__getCORBAObject(mainShapeEntry)
+            shape = anObject._narrow(GEOM.GEOM_Object)
+            if shape:
+                # Création du nouveau maillage
                 if not self.smeshEngine:
-                    self.smeshEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "SMESH" )
-                    self.smeshEngine.SetCurrentStudy( salome.myStudy )
-                newMesh      = self.smeshEngine.CreateMesh( shape )
-                newMeshEntry = self.__getEntry( newMesh )                                
-                if newMeshEntry:                    
-                    ok = self.setName( newMeshEntry, newMeshName )                    
+                    self.smeshEngine = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
+                    self.smeshEngine.SetCurrentStudy(salome.myStudy)
+                newMesh = self.smeshEngine.CreateMesh(shape)
+                newMeshEntry = self.__getEntry(newMesh)
+                if newMeshEntry:
+                    ok = self.setName(newMeshEntry, newMeshName)
                     if ok:
-                        result = self.updateMesh( newMeshEntry, groupeMaEntries, groupeNoEntries )
+                        result = self.updateMesh(newMeshEntry, groupeMaEntries, groupeNoEntries)
         except:
             import sys
-            type        = sys.exc_info()[0]
-            value       = sys.exc_info()[1]            
-            logger.debug( '>>>>CS_Pbruno StudyTree.createMesh( self, newMeshName=%s, mainShapeEntry=%s, groupeMaEntries=%s )'%( newMeshName, mainShapeEntry, groupeMaEntries))
-            logger.debug( 'type        = %s ,             value       = %s '%( type, value ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.createMesh( self, newMeshName=%s, mainShapeEntry=%s, groupeMaEntries=%s )'
+                         % (newMeshName, mainShapeEntry, groupeMaEntries))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
         return result
 
 
-
-    
-           
-
-    
-    
-    
 # --------------------------------------------------------------------------
 #   INIT
 study = SalomeStudy()
-    
+