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,
+# ]
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
# 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,
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):
"""
@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' ):
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()
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:
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))
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 )
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
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 ] :
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 = '',''
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 = '',''
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
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 )
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:
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
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:
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()
#----------------------- 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:
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
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:
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
#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:
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 = []
ok, msgError = False, ''
try:
sg = salome.ImportComponentGUI('SMESH')
- currentjdcID = self.editor
+ currentjdcID = self.editor.nb.getcurselection()
meshGroupEntries = []
selMeshEntry = None
selMeshGroupEntry = None
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?
# 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 )
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:
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 )
+
+