From: gboulant <> Date: Wed, 4 Jun 2008 08:32:46 +0000 (+0000) Subject: Adaptation du eficasSalome.py pour utilisation de eficas Qt X-Git-Tag: V4_1_2alpha X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=4628dc4bdf9bc9c012078d746270c40a25ac0cd4;p=tools%2Feficas.git Adaptation du eficasSalome.py pour utilisation de eficas Qt --- diff --git a/src/EFICASGUI/eficasSalome.py b/src/EFICASGUI/eficasSalome.py index 4a6967ec..66c90cee 100644 --- a/src/EFICASGUI/eficasSalome.py +++ b/src/EFICASGUI/eficasSalome.py @@ -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" ) + +