]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
Adaptation du eficasSalome.py pour utilisation de eficas Qt V4_1_2alpha
authorgboulant <>
Wed, 4 Jun 2008 08:32:46 +0000 (08:32 +0000)
committergboulant <>
Wed, 4 Jun 2008 08:32:46 +0000 (08:32 +0000)
src/EFICASGUI/eficasSalome.py

index 4a6967ec7b874b3d9cbfcc64db27d52a5e2751e5..66c90cee6e3e5f7753639f2953494c441683fdb7 100644 (file)
@@ -24,14 +24,17 @@ def exit(ier):
 
 import eficasConfig
 
-sys.path[:0]=[os.path.join( eficasConfig.eficasPath,'Aster'),
-              os.path.join( eficasConfig.eficasPath,'Homard'),
-              os.path.join( eficasConfig.eficasPath,'InterfaceQT'),
-              os.path.join( eficasConfig.eficasPath,'InterfaceTK'),
-              os.path.join( eficasConfig.eficasPath,'Openturns'),
-              os.path.join( eficasConfig.eficasPath,'Editeur'),
-              eficasConfig.eficasPath,
-             ]
+sys.path[:0]=[eficasConfig.eficasPath,
+              os.path.join( eficasConfig.eficasPath,'Aster')
+              ]
+              
+#sys.path[:0]=[os.path.join( eficasConfig.eficasPath,'Aster'),
+#              os.path.join( eficasConfig.eficasPath,'Homard'),
+#              # __GBO__ os.path.join( eficasConfig.eficasPath,'InterfaceQT'),
+#              os.path.join( eficasConfig.eficasPath,'Openturns'),
+#              os.path.join( eficasConfig.eficasPath,'Editeur'),
+#              eficasConfig.eficasPath,
+#             ]
 
 
 
@@ -43,21 +46,16 @@ OPENTURNS = "OPENTURNS"
 
 
 import Editeur    
-try :
-   import qt
-   from InterfaceQT import qtEficas
-except :
-   import Tkinter
-   from InterfaceTK import eficas
-   from InterfaceTK import splash
+import qt
+from InterfaceQT import qtEficas
 
 import salome
 import meshGui
 import PALGUI_API
 
-# __MEM_GBO: on préfère importer visuDriver après studyManager car le premier dépend du second.
-# Cependant, le problème est résolu à sa source: le fichier visuDriver importe le studyManager.
-# Ainsi, il n'est plus nécessaire de se préoccuper explicitement de l'ordre des import.  
+# __MEM_GBO: on préfère importer visuDriver après studyManager car le premier dépend du second.
+# Cependant, le problème est résolu à sa source: le fichier visuDriver importe le studyManager.
+# Ainsi, il n'est plus nécessaire de se préoccuper explicitement de l'ordre des import.  
 import studyManager
 import visuDriver
 
@@ -73,24 +71,24 @@ from SelectMeshDiag_ui import SelectMeshDiag
 
 # message utilisateur
 msgWarning                 = "Attention"
-msgMainShapeSelection      = "On travaille sur la géométrie principale : "
-msgSubShapeBadMainShape    = "La sélection géométrique SALOME ne correspond pas à une sous-géométrie de la géométrie principale : "
-msgMeshGroupBadMainShape   = "Le groupe de maillage sélectionné dans SALOME ne référence pas la bonne géométrie principale : "
-msgIncompleteSelection     = "Tous les éléments de la sélection SALOME n'ont pu étre ajoutée"
-msgUnAuthorizedSelecion    = "Sélection SALOME non authorisé. Autorisé : sous-géométrie, groupe de maille"
-msgErrorAddJdcInSalome     = "Erreur dans l'export du fichier de commande dans l'arbre d'étude Salome"
-msgErrorDisplayShape       = "Erreur dans l'affichage de la forme géométrique sélectionnée"
-msgErrorDisplayMeshGroup   = "Erreur dans l'affichage du groupe de maillage sélectionné"
-msgErrorNeedSubShape       = "Sélection d'un élément sous géométrique seulement"
-
-
-msgErrorGroupMaSelection    = "Sélection GROUP_MA ne peut pas prendre un point ou un noeud"
+msgMainShapeSelection      = "On travaille sur la géométrie principale : "
+msgSubShapeBadMainShape    = "La sélection géométrique SALOME ne correspond pas à une sous-géométrie de la géométrie principale : "
+msgMeshGroupBadMainShape   = "Le groupe de maillage sélectionné dans SALOME ne référence pas la bonne géométrie principale : "
+msgIncompleteSelection     = "Tous les éléments de la sélection SALOME n'ont pu étre ajoutée"
+msgUnAuthorizedSelecion    = "Sélection SALOME non authorisé. Autorisé : sous-géométrie, groupe de maille"
+msgErrorAddJdcInSalome     = "Erreur dans l'export du fichier de commande dans l'arbre d'étude Salome"
+msgErrorDisplayShape       = "Erreur dans l'affichage de la forme géométrique sélectionnée"
+msgErrorDisplayMeshGroup   = "Erreur dans l'affichage du groupe de maillage sélectionné"
+msgErrorNeedSubShape       = "Sélection d'un élément sous géométrique seulement"
+
+
+msgErrorGroupMaSelection    = "Sélection GROUP_MA ne peut pas prendre un point ou un noeud"
 msgWarningGroupNoSelection  = "Attention, GROUP_NO devrait prendre un point ou un noeud"
 
 
 
 
-# couleur pour visualisation des géometrie CS_CBO
+# couleur pour visualisation des géometrie CS_CBO
 COLORS = ( studyManager.RED, 
          studyManager.GREEN,
          studyManager.BLUE,
@@ -173,9 +171,9 @@ class SelectMeshDiagImpl( SelectMeshDiag ):
 class MyEficas( qtEficas.Appli ):
     """
     Classe de lancement du logiciel EFICAS dans SALOME.
-    Cette classe spécialise le logiciel Eficas par l'ajout de:        
-    a)la création de groupes de mailles dans le composant SMESH de SALOME
-    b)la visualisation d'éléments géométrique dans le coposant GEOM de SALOME par sélection dans EFICAS
+    Cette classe spécialise le logiciel Eficas par l'ajout de:        
+    a)la création de groupes de mailles dans le composant SMESH de SALOME
+    b)la visualisation d'éléments géométrique dans le coposant GEOM de SALOME par sélection dans EFICAS
     """
     def __init__( self, parent, code = None, fichier = None, module = studyManager.SEficas, version=None):
         """
@@ -186,10 +184,10 @@ class MyEficas( qtEficas.Appli ):
                 
         
         @type   code: string
-        @param  code: catalogue à lancer ( ASTER, HOMARD OPENTURNS ). optionnel ( défaut = ASTER ).
+        @param  code: catalogue à lancer ( ASTER, HOMARD OPENTURNS ). optionnel ( défaut = ASTER ).
         
         @type   fichier: string
-        @param  fichier: chemin absolu du fichier eficas à ouvrir à dès le lancement. optionnel
+        @param  fichier: chemin absolu du fichier eficas à ouvrir à dès le lancement. optionnel
         """
                         
         if Editeur.__dict__.has_key( 'session' ):
@@ -207,23 +205,23 @@ class MyEficas( qtEficas.Appli ):
                         
         qtEficas.Appli.__init__( self,code=code,salome=1,parent=parent)
         
-        #--------------- spécialisation EFICAS dans SALOME  -------------------                
+        #--------------- spécialisation EFICAS dans SALOME  -------------------                
         self.parent = parent        
-        self.salome = True      #active les parties de code spécifique dans Salome( pour le logiciel Eficas )
-        self.module = module    #indique sous quel module dans l'arbre d'étude ajouter le JDC.
+        self.salome = True      #active les parties de code spécifique dans Salome( pour le logiciel Eficas )
+        self.module = module    #indique sous quel module dans l'arbre d'étude ajouter le JDC.
         
         
-        # donnée pour la création de groupe de maille
-        self.mainShapeNames   = {} #dictionnaire pour gérer les multiples fichiers possibles ouverts par 
-        self.mainShapeEntries = {} #eficas ( clé = identifiant du JDC ), une mainshape par fichier ouvert.    
-        self.subShapes        = {} #dictionnaire des sous-géométrie de la géométrie principale ( clé = entry, valeur = name ) 
+        # donnée pour la création de groupe de maille
+        self.mainShapeNames   = {} #dictionnaire pour gérer les multiples fichiers possibles ouverts par 
+        self.mainShapeEntries = {} #eficas ( clé = identifiant du JDC ), une mainshape par fichier ouvert.    
+        self.subShapes        = {} #dictionnaire des sous-géométrie de la géométrie principale ( clé = entry, valeur = name ) 
         #----------------------------------------------------------------------    
         
         # visualisation groupes de mailles
-        self.workingMesh = {} #dictionnaire clé = identifiant JDC / valeur = entry Mesh
+        self.workingMesh = {} #dictionnaire clé = identifiant JDC / valeur = entry Mesh
         #----------------------------------------------------------------------        
         
-        self.icolor = 0  # compteur pour mémoriser la couleur courante
+        self.icolor = 0  # compteur pour mémoriser la couleur courante
         self.show()
         
         
@@ -237,15 +235,15 @@ class MyEficas( qtEficas.Appli ):
      
     def __studySync( self ):
         """
-        IMPORTANT( à appeler préalablement à chaque appel du gestionnaire d'étude ) : spécifique au lancement de Eficas dans Salome,
-        permet au gestionnaire d'étude ( studyManager.palStudy ) de pointer sur la bonne étude.
+        IMPORTANT( à appeler préalablement à chaque appel du gestionnaire d'étude ) : spécifique au lancement de Eficas dans Salome,
+        permet au gestionnaire d'étude ( studyManager.palStudy ) de pointer sur la bonne étude.
         
-        Un retour à False indique qu'il n'y a aucune étude active, dans ce cas ne faire aucune opération avec le gestionnaire d'étude( 
+        Un retour à False indique qu'il n'y a aucune étude active, dans ce cas ne faire aucune opération avec le gestionnaire d'étude( 
         gros plantage sinon )
         """                
         activeStudyId = salome.sg.getActiveStudyId()
         
-        if activeStudyId == 0: # pas d'étude active
+        if activeStudyId == 0: # pas d'étude active
             return False
         
         if activeStudyId != salome.myStudyId:
@@ -256,12 +254,12 @@ class MyEficas( qtEficas.Appli ):
         
     def __createOCCView( self ):
         """
-        Création vue Occ
+        Création vue Occ
         """        
         #salome.salome_init()
         import iparameters
 
-        # On détermine le nombre de GUI states déjà présents dans l'arbre d'étude
+        # On détermine le nombre de GUI states déjà présents dans l'arbre d'étude
         GUIStateID = 1
 
         ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", GUIStateID))
@@ -293,7 +291,7 @@ class MyEficas( qtEficas.Appli ):
                         
     def __selectWorkingMesh( self, meshGroupEntries ):
         """
-        Sélection intéractive du maillage sur lequel on travail
+        Sélection intéractive du maillage sur lequel on travail
         """
         selMeshEntry, keep = None, False
         diag = SelectMeshDiagImpl( meshGroupEntries, self.parent  )
@@ -306,7 +304,7 @@ class MyEficas( qtEficas.Appli ):
 
     def __selectMainShape( self, groupeMaNamesIn, groupeNoNamesIn, editor ):
         """
-        Sélection intéractive de la main shape
+        Sélection intéractive de la main shape
         """
         groupeMaNamesOut, groupeNoNamesOut = [], []
         selectedMainShape  =  None
@@ -340,7 +338,7 @@ class MyEficas( qtEficas.Appli ):
             
             self.mainShapeEntries[ editor ] = selectedMainShape
                     
-            # filtre sur la main shape sélectionnée
+            # filtre sur la main shape sélectionnée
             for name in groupeMaNamesIn:
                 try:
                     if selectedMainShape in mainShapes[ name ] :
@@ -362,11 +360,11 @@ class MyEficas( qtEficas.Appli ):
 
     def __selectShape( self, editor, selectedEntry, kwType = None ):
         """
-        sélection sous-géométrie dans Salome:
-        -test1) si c'est un élément sous-géométrique .
-        -test2) si appartient à la géométrie principale.
+        sélection sous-géométrie dans Salome:
+        -test1) si c'est un élément sous-géométrique .
+        -test2) si appartient à la géométrie principale.
         
-        met à jours la liste self.subShapes si test ok
+        met à jours la liste self.subShapes si test ok
         """        
         name, msgError = '',''
         
@@ -401,9 +399,9 @@ class MyEficas( qtEficas.Appli ):
         
     def __selectMeshGroup( self, editor, selectedEntry, kwType = None ):
         """
-        sélection groupe de maille dans Salome:
+        sélection groupe de maille dans Salome:
         -test 1) si c'est un groupe de maille 
-        -test 2) si le maillage fait référence à la géométrie principale 
+        -test 2) si le maillage fait référence à la géométrie principale 
         """        
         name, msgError = '',''                
                 
@@ -432,8 +430,8 @@ class MyEficas( qtEficas.Appli ):
                                                             self.mainShapeEntries[ editor ] )
                     msgError = msgMeshGroupBadMainShape + self.mainShapeNames[ editor ]
             else:
-                # on authorise quand même les groupes de maillage ne faisant 
-                # pas référence à une géométrie principale (dixit CS_CBO )
+                # on authorise quand même les groupes de maillage ne faisant 
+                # pas référence à une géométrie principale (dixit CS_CBO )
                 name = studyManager.palStudy.getName( selectedEntry )
                                           
         return name, msgError
@@ -443,7 +441,7 @@ class MyEficas( qtEficas.Appli ):
         
     def __updateSubShapes( self, editor, groupeNames ):
         """
-        mise à jours de la liste self.subShapes à partir de la liste des noms de groupe fourni en entré
+        mise à jours de la liste self.subShapes à partir de la liste des noms de groupe fourni en entré
         """
         for name in groupeNames:
             entries = studyManager.palStudy.getEntriesFromName( studyManager.SGeom, name )            
@@ -455,7 +453,7 @@ class MyEficas( qtEficas.Appli ):
         
     def __getAllGroupeMa(self, item ):
         """
-        Récupère tous les GROUPE_MA dans le JDC courant
+        Récupère tous les GROUPE_MA dans le JDC courant
         """
         groupMa = ()                
         try:
@@ -470,7 +468,7 @@ class MyEficas( qtEficas.Appli ):
                elif type( itemValue ) == list:
                    groupMa += tuple(itemValue)
                elif type( itemValue ) == types.InstanceType and itemValue.has_key('GROUP_MA'):
-                    # pour créer le groupe de mailles dans DEFI_GROUP> CREA_GROUP_MA> GROUP_MA
+                    # pour créer le groupe de mailles dans DEFI_GROUP> CREA_GROUP_MA> GROUP_MA
                    groupMa += ( itemValue['GROUP_MA'], )
                 else :
                    # sert pour DEFI_GROUP_MA / UNION
@@ -504,7 +502,7 @@ class MyEficas( qtEficas.Appli ):
    
     def __getAllGroupeNo(self, item ):
         """
-        Récupère tous les GROUPE_NO dans le JDC courant
+        Récupère tous les GROUPE_NO dans le JDC courant
         """
         groupNo = ()                
         try:
@@ -518,7 +516,7 @@ class MyEficas( qtEficas.Appli ):
                elif type( itemValue ) == list:
                    groupNo += tuple(itemValue)
                elif type( itemValue ) == types.InstanceType and itemValue.has_key('GROUP_NO'):
-                    # pour créer le groupe de Noeuds dans DEFI_GROUP> CREA_GROUP_NO> GROUP_NO
+                    # pour créer le groupe de Noeuds dans DEFI_GROUP> CREA_GROUP_NO> GROUP_NO
                    groupNo += ( itemValue['GROUP_NO'], )
             else:
                 children = item._GetSubList()
@@ -540,10 +538,10 @@ class MyEficas( qtEficas.Appli ):
     #-----------------------  LISTE DES NOUVEAUX CAS D'UTILISATIONS -----------    
     def selectGroupFromSalome( self, kwType = None, editor=None):
         """
-        Sélection d'élément(s) d'une géométrie ( sub-shape ) ou d'élément(s) de maillage ( groupe de maille) à partir de l'arbre salome
+        Sélection d'élément(s) d'une géométrie ( sub-shape ) ou d'élément(s) de maillage ( groupe de maille) à partir de l'arbre salome
         retourne ( la liste des noms des groupes, message d'erreur )
         
-        Note: Appelé par EFICAS lorsqu'on clique sur le bouton ajouter à la liste du panel AFF_CHAR_MECA        
+        Note: Appelé par EFICAS lorsqu'on clique sur le bouton ajouter à la liste du panel AFF_CHAR_MECA        
         """
         names, msg = [], ''
         #try:            
@@ -552,14 +550,14 @@ class MyEficas( qtEficas.Appli ):
             atLeastOneStudy = self.__studySync()
             if not atLeastOneStudy:
                 return names, msg
-            # récupère toutes les sélections de l'utilsateur dans l'arbre Salome
+            # récupère toutes les sélections de l'utilsateur dans l'arbre Salome
             entries = salome.sg.getAllSelected()
             nbEntries = len( entries )
             if nbEntries >= 1:
                 for entry in entries:
-                    if studyManager.palStudy.isMeshGroup( entry ): #sélection d'un groupe de maille
+                    if studyManager.palStudy.isMeshGroup( entry ): #sélection d'un groupe de maille
                         name, msg = self.__selectMeshGroup( editor, entry, kwType )
-                    elif studyManager.palStudy.isShape( entry ): #sélection d'une sous-géométrie
+                    elif studyManager.palStudy.isShape( entry ): #sélection d'une sous-géométrie
                         name, msg = self.__selectShape( editor, entry, kwType )
                     else:
                         name, msg = '', msgUnAuthorizedSelecion
@@ -577,7 +575,7 @@ class MyEficas( qtEficas.Appli ):
         
     def addJdcInSalome(  self, jdcPath ):
         """
-        Ajoute le Jeu De Commande ASTER ou HOMARD dans l'arbre d'étude Salome dans la rubrique EFICAS
+        Ajoute le Jeu De Commande ASTER ou HOMARD dans l'arbre d'étude Salome dans la rubrique EFICAS
         """
         ok, msgError = False, msgErrorAddJdcInSalome
         #try:            
@@ -629,10 +627,9 @@ class MyEficas( qtEficas.Appli ):
     def createOrUpdateMesh( self, editor ):
         """
             Ouverture d'une boite de dialogue : Creation de groupes de mailles dans un maillage existant ou un nouveau maillage.                         
-            Note: Appelé par EFICAS à la sauvegarde du JDC.
+            Note: Appelé par EFICAS à la sauvegarde du JDC.
         """
         try:            
-            self.editor=editor
             atLeastOneStudy = self.__studySync()
             if not atLeastOneStudy:
                 return
@@ -646,9 +643,9 @@ class MyEficas( qtEficas.Appli ):
             
             #print 'CS_pbruno createOrUpdateMesh groupeNoNames', groupeNoNames
                         
-            # mise à jours de la liste des sous-géométrie ( self.subShapes )
+            # mise à jours de la liste des sous-géométrie ( self.subShapes )
             if not self.mainShapeEntries.has_key( editor ):
-                # l'utilisateur n'a sélectionné aucune sous-géométrie et donc pas de géométrie principale
+                # l'utilisateur n'a sélectionné aucune sous-géométrie et donc pas de géométrie principale
                 groupeMaNames, groupeNoNames  = self.__selectMainShape( groupeMaNames, groupeNoNames, editor )
                 
             if groupeMaNames or groupeNoNames:                                                
@@ -656,7 +653,7 @@ class MyEficas( qtEficas.Appli ):
                 print 'CS_pbruno createOrUpdateMesh groupeNoNames', groupeNoNames            
                 self.__updateSubShapes( editor, groupeMaNames + groupeNoNames )
     
-                # recupération des identifiants( entries ) associés aux noms des groupes        
+                # recupération des identifiants( entries ) associés aux noms des groupes        
                 groupeMaEntries = []
                 groupeNoEntries = []                            
                 
@@ -689,7 +686,7 @@ class MyEficas( qtEficas.Appli ):
         ok, msgError = False, ''
         try:
             sg = salome.ImportComponentGUI('SMESH')
-            currentjdcID = self.editor
+            currentjdcID = self.editor.nb.getcurselection()
             meshGroupEntries = []
             selMeshEntry = None
             selMeshGroupEntry = None
@@ -706,12 +703,12 @@ class MyEficas( qtEficas.Appli ):
                 if len(meshGroupEntries)>1:
                 
                     # choix d'un maillage
-                    if not self.workingMesh.has_key(currentjdcID): # aucun maillage de défini par défaut encore
+                    if not self.workingMesh.has_key(currentjdcID): # aucun maillage de défini par défaut encore
                         #selMeshEntry = "0:1:3:5" #CS_pbruno todo : choix maillage + test si c un maillage
                         selMeshEntry, keep = self.__selectWorkingMesh(meshGroupEntries)
                         if keep:
                             self.workingMesh[currentjdcID] = selMeshEntry
-                    else: # déja un de défini par défaut
+                    else: # déja un de défini par défaut
                         selMeshEntry = self.workingMesh[currentjdcID]
                             
                     # le groupe de maille est il ds ce maillage?
@@ -726,7 +723,7 @@ class MyEficas( qtEficas.Appli ):
                     
                 # on affiche le groupe ds la vue VTK
                 if selMeshGroupEntry:
-                    #CS_pbruno: marche QUE si le module SMESH est activé
+                    #CS_pbruno: marche QUE si le module SMESH est activé
                     myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
                     SCom        = studyManager.palStudy._myStudy.FindComponent("SMESH")
                     studyManager.palStudy._myBuilder.LoadWith( SCom , myComponent  )                             
@@ -742,7 +739,7 @@ class MyEficas( qtEficas.Appli ):
             
     def displayShape(  self, shapeName ):
         """
-        visualisation géométrie de nom shapeName dans salome
+        visualisation géométrie de nom shapeName dans salome
         """
         ok, msgError = False, ''
         try:
@@ -793,12 +790,12 @@ class MyEficas( qtEficas.Appli ):
            self.rangeInStudy(sauvegarde)
           print "==============================="
         """
-        pass #CS_pbruno à implémenter
+        pass #CS_pbruno à implémenter
            
            
     def buildCabriGeom( self, name, **param ):
         """
-        visualisation dans GEOM d'une géométrie CABRI
+        visualisation dans GEOM d'une géométrie CABRI
         """
         import cabri        
         qt.QApplication.setOverrideCursor( qt.QCursor.waitCursor )
@@ -867,3 +864,5 @@ logger=ExtLogger( "eficasSalome.py" )
 
 
 
+
+