+++ /dev/null
-# -*- coding: utf-8 -*-
-#_____________________________________
-
-import sys, os, re,types
-import traceback
-from PyQt4.QtGui import QMessageBox
-from PyQt4.QtGui import QApplication
-
-from salome.kernel.logger import Logger
-logger = Logger( "EFICAS_SRC.EFICASGUI.eficasSalome.py" )
-
-import eficasConfig
-# eficasConfig definit le EFICAS_ROOT
-# lignes de path ajoutees pour acceder aux packages python du
-# logiciel Eficas. Le package Aster est ajoute explicitement pour
-# acceder au module prefs.py. A
-# ajout de InterfaceQT4 pour permettre l acces a la fenetre Option
-sys.path[:0]=[eficasConfig.eficasPath,
- os.path.join( eficasConfig.eficasPath,'Editeur'),
- os.path.join( eficasConfig.eficasPath,'UiQT4'),
- os.path.join( eficasConfig.eficasPath,'InterfaceQT4'),
- #os.path.join( eficasConfig.eficasPath,'Extensions'),
- eficasConfig.eficasPath,
- ]
-
-
-import Editeur
-from InterfaceQT4 import qtEficas
-
-import salome
-import SalomePyQt
-sgPyQt = SalomePyQt.SalomePyQt()
-langue=str(sgPyQt.stringSetting("language","language"))
-
-
-from salome.kernel.studyedit import getStudyEditor
-
-
-# couleur pour visualisation des geometries
-import colors
-COLORS = colors.ListeColors
-LEN_COLORS = len( COLORS )
-
-from Extensions import localisation
-localisation.localise(None,langue)
-
-
-class MyEficas( qtEficas.Appli ):
- """
- Classe de lancement du logiciel EFICAS dans SALOME
- Cette classe specialise le logiciel Eficas par l'ajout de:
- a)la creation de groupes de mailles dans le composant SMESH de SALOME
- b)la visualisation d'elements geometrique dans le coposant GEOM de SALOME par selection dans EFICAS
- """
- def __init__( self, parent, code = "ASTER", fichier = None, module = "EFICAS",
- version = None, componentName = "Eficas",multi=False):
- """
- Constructeur.
- @type parent:
- @param parent: widget Qt parent
- @type code: string
- @param code: catalogue a lancer ( ASTER, HOMARD OPENTURNS ). optionnel ( defaut = ASTER ).
- @type fichier: string
- @param fichier: chemin absolu du fichier eficas a ouvrir a das le lancement. optionnel
- """
-
- dictPathCode={'ASTER':'Aster','OPENTURNS_STUDY':'Openturns_Study','CARMEL3D':'Carmel3D', 'CARMELCND':'CarmelCND',
- 'OPENTURNS_WRAPPER':'Openturns_Wrapper','MAP':'MAP','SEP':'Sep', 'ZCRACKS':'ZCracks', 'TELEMAC':'Telemac'}
- if code in dictPathCode.keys():
- pathCode=dictPathCode[code]
- sys.path[:0]=[os.path.join(eficasConfig.eficasPath,pathCode)]
-
- if Editeur.__dict__.has_key( 'session' ):
- from Editeur import session
- eficasArg = []
- eficasArg += sys.argv
- if fichier:
- eficasArg += [ fichier ]
- if version:
- eficasArg += [ "-c", version ]
- else :
- print "noversion"
- session.parse( eficasArg )
-
- self.editor = getStudyEditor() # Editeur de l'arbre d'etude
-
- qtEficas.Appli.__init__( self,code=code,salome=1,parent=parent,multi=multi,langue=langue)
-
- #--------------- specialisation EFICAS dans SALOME -------------------
- self.parent = parent
- self.salome = True #active les parties de code specifique dans Salome( pour le logiciel Eficas )
- self.module = module #indique sous quel module dans l'arbre d'etude ajouter le JDC.
- self.componentName = componentName
-
- # donnee pour la creation de groupe de maille
- self.mainShapeNames = {} #dictionnaire pour gerer les multiples fichiers possibles ouverts par
- #eficas ( cle = identifiant du JDC ), une mainshape par fichier ouvert.
- #dictionnaire des sous-geometrie de la geometrie principale ( cle = entry, valeur = name )
- #----------------------------------------------------------------------
-
- self.icolor = 0 # compteur pour memoriser la couleur courante
- self.show()
-
-
- def closeEvent(self,event):
- res=self.fileExit()
- if res==2 :
- event.ignore()
- return
- if hasattr(self,'readercata') :
- del self.readercata
- import math
- try:
- import Numeric
- except:
- import numpy
- Numeric = numpy
-
- from Extensions.param2 import originalMath
- #Numeric.cos=originalMath.numeric_ncos
- #Numeric.sin=originalMath.numeric_nsin
- #Numeric.array=originalMath.numeric_narray
- #math.sin=originalMath.sin
- #math.cos=originalMath.cos
- #math.sqrt=originalMath.sqrt
- #math.ceil=originalMath.ceil
- #math.pi=originalMath.pi
- originalMath.toOriginal()
-
- global appli
- appli = None
- event.accept()
-
-
-# ___________________________ Methodes de l ex Pal __________________________________
-
- #----------------------------------------------------------------
- def getCORBAObjectInComponent( self, entry, composant ):
- #----------------------------------------------------------------
- object = None
- mySO = self.editor.study.FindObjectID(entry)
- if mySO:
- object = mySO.GetObject()
- if not object:
- myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", composant)
- SCom = self.editor.study.FindComponent( composant )
- print myComponent , SCom
- self.editor.builder.LoadWith( SCom , myComponent )
- object = mySO.GetObject()
- if not object :
- logger.debug("selectedEntry: An error occurs")
- return object
-
-
- #----------------------------------------------
- def giveMeshGroups( self,entry,label1,typeMesh):
- #----------------------------------------------
- msg=None
- names=[]
- import SMESH
- try:
- monMaillage =self.getCORBAObjectInComponent(entry,"SMESH")
- if monMaillage != None : # selection d'un groupe de SMESH
- if monMaillage._narrow(SMESH.SMESH_Mesh):
- mailSO = self.editor.study.FindObjectID(entry)
- if mailSO == None : return names, msg
-
-
- subIt = self.editor.study.NewChildIterator(mailSO)
- while subIt.More():
- subSO = subIt.Value()
- subIt.Next()
-
- if (subSO.GetName()[0:9]!=label1) : continue
- subSSMeshit=self.editor.study.NewChildIterator(subSO)
- while subSSMeshit.More():
- subSSMeshSO = subSSMeshit.Value()
- subSSMeshit.Next()
- if subSSMeshSO.GetObject()._narrow(typeMesh):
- names.append(subSSMeshSO.GetName())
- else :
- msg=entry + self.tr(" n est pas un maillage")
- except :
- logger.debug(' giveMeshGroups pb avec ( entry = %s ) ' %entry )
- msg=' giveMeshGroup pb avec ( entry = %s ) '+ entry
- return names, msg
-
- #-------------------------------------
- def isMeshGroup( self,entry):
- #-------------------------------------
- result=False
- import SMESH
- try:
- monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
- if monObjet != None : # selection d'un groupe de SMESH
- if monObjet._narrow(SMESH.SMESH_GroupBase):
- result = True
- except :
- logger.debug(' isMeshGroup pb avec ( entry = %s ) ' %entry )
- return result
-
- #-------------------------------------
- def isMesh( self,entry):
- #-------------------------------------
- result=False
- import SMESH
- try:
- monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
- if monObjet != None : # selection d'un groupe de SMESH
- if monObjet._narrow(SMESH.SMESH_Mesh):
- result = True
- except :
- logger.debug(' isMesh pb avec ( entry = %s ) ' %entry )
- return result
-
- #-------------------------------------
- def getMesh( self,entry):
- #-------------------------------------
- meshObject=None
- import SMESH
- try:
- #if 1 :
- monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
- if monObjet != None : # selection d'un groupe de SMESH
- meshObject=monObjet._narrow(SMESH.SMESH_Mesh)
- except :
- logger.debug(' pb avec ( entry = %s ) ' %entry )
- return meshObject
-
- #-------------------------------------
-
- #-------------------------------------
- def isShape( self,entry):
- #-------------------------------------
- result=False
- import GEOM
- try:
- monObjet =self.getCORBAObjectInComponent(entry,"GEOM")
- if monObjet != None : # selection d'un objet GEOM
- if monObjet._narrow(GEOM.GEOM_Object ):
- result = True
- except :
- logger.debug(' isShape pb avec ( entry = %s ) ' %entry )
- return result
-
- #-----------------------------------------------------------------
- def getMainShapeEntry(self,entry):
- #-----------------------------------------------------------------
- result=None
- try:
- mainShapeEntry = entry.split(':')[:4]
- if len(mainShapeEntry) == 4:
- strMainShapeEntry = '%s:%s:%s:%s'%tuple(mainShapeEntry)
- if self.isMainShape(strMainShapeEntry):
- result = strMainShapeEntry
- except:
- logger.debug( 'Erreur pour SalomeStudy.getMainShapeEntry( entry = %s ) ' %entry )
- result = None
- return result
-
- #-----------------------------------------------------------------
- def isMainShape(self,entry):
- #-----------------------------------------------------------------
- result = False
- try:
- monObjet =self.getCORBAObjectInComponent(entry,"GEOM")
- import GEOM
- shape = monObjet._narrow( GEOM.GEOM_Object )
- if shape.IsMainShape():
- result = True
- except:
- logger.debug( 'Errreur pour SalomeStudy.isMainShape( entry = %s ) ' %entry )
- result = False
- return result
-
-
- #-----------------------------------------------------------------
- def ChercheType( self, shape ):
- #-----------------------------------------------------------------
- tgeo = shape.GetShapeType()
- geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
- #print dir(self.editor.study)
- groupIMeasureOp = geomEngine.GetIMeasureOperations(self.editor.study._get_StudyId())
- if tgeo != "COMPOUND" : return tgeo
-
- strInfo = groupIMeasureOp.WhatIs( shape )
- dictInfo = {}
- l = strInfo.split('\n')
-
- for couple in l:
- nom, valeur = couple.split(':')
- dictInfo[ nom.strip() ] = valeur.strip()
-
- ordre = [ "COMPSOLID", "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX" ]
- for t in ordre:
- if dictInfo[ t ] != '0':
- tgeo = t
- return tgeo
- return None
-
-
- #-----------------------------------------------------------------
- def selectShape( self, editor, entry, kwType = None ):
- #-----------------------------------------------------------------
- """
- selection sous-geometrie dans Salome:
- -test1) si c'est un element sous-geometrique .
- -test2) si appartient a la geometrie principale.
- """
- name, msgError = '',''
- mySO = self.editor.study.FindObjectID(entry)
- if mySO == None :
- return name, msgError
- object = mySO.GetObject()
- if object == None :
- return name, msgError
-
- import GEOM
- shape = object._narrow( GEOM.GEOM_Object )
- if not shape :
- return name, msgError
-
- tGeo=self.ChercheType(shape)
- if not tGeo :
- return name, msgError
- #if kwType == "GROUP_NO" and str(tGeo) != "VERTEX":
- # name,msgError = '',"la selection n est pas un Vertex"
- # return name, msgError
- if kwType == "GROUP_MA" and str(tGeo) == "VERTEX":
- name, msgError = '', "la selection n est pas un groupe de maille"
- return name, msgError
-
- mainShapeEntry = self.getMainShapeEntry( entry )
- if self.mainShapeNames.has_key( editor ):
- #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
- if self.mainShapeNames[editor] == mainShapeEntry:
- name=mySO.GetName()
- else :
- msgError="Le groupe reference la geometrie " + mainShapeEntry + " et non " + self.mainShapeNames[editor]
- else :
- self.mainShapeNames[editor] = mainShapeEntry
- name=mySO.GetName()
-
- return name, msgError
-
-
- #-----------------------------------------------------------------
- def selectMeshGroup( self, editor, selectedEntry, kwType = None ):
- #-----------------------------------------------------------------
- """
- selection groupe de maille dans Salome:
- -test 1) si c'est un groupe de maille
- -test 2) si le maillage fait reference a la geometrie principale
- """
- name, msgError = '',''
-
- mySO=self.editor.study.FindObjectID(selectedEntry )
- from salome.smesh.smeshstudytools import SMeshStudyTools
- monSMeshStudyTools=SMeshStudyTools(self.editor)
- meshSO = monSMeshStudyTools.getMeshFromGroup(mySO)
- if meshSO == None : return name, msgError
-
- # on verifie que l entree selectionnee a le bon type (NODE ou EDGE...)
- tGroup = ""
- groupObject = self.getCORBAObjectInComponent(selectedEntry,"SMESH")
- if not groupObject :
- logger.debug("selectedMeshEntry: An error occurs")
-
- import SMESH
- aGroup = groupObject._narrow( SMESH.SMESH_GroupBase )
- if aGroup: tGroup = aGroup.GetType()
-
- if kwType == "GROUP_NO" and tGroup != SMESH.NODE:
- msgError = self.tr("GROUP_NO attend un groupe de noeud")
- return name, msgError
- elif kwType == "GROUP_MA" and tGroup == SMESH.NODE:
- msgError = self.tr("GROUP_MA attend un point goupe de maille")
- return name, msgError
-
- # on cherche la shape associee
- #PN PN mesh_Object est un SOject
- meshObject = meshSO.GetObject()
- mesh = meshObject._narrow( SMESH.SMESH_Mesh )
- if mesh: #c'est bien un objet maillage
- shape = mesh.GetShapeToMesh()
- if shape:
- ior = salome.orb.object_to_string( shape )
- if ior:
- sObject = self.editor.study.FindObjectIOR( ior )
- mainShapeID = sObject.GetID()
- else :
- mainShapeID=0
- else :
- return name, self.tr("Type d objet non permis")
-
- # on cherche si la shape associee est la bonne
- #print "------------- mainShapeID" , mainShapeID
- if self.mainShapeNames.has_key( editor ):
- #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
- if self.mainShapeNames[editor] == mainShapeID:
- name=mySO.GetName()
- else :
- msgError=self.tr("Le groupe reference la geometrie ") + mainShapeID + self.tr(" et non ") + self.mainShapeNames[editor]
- else :
- self.mainShapeNames[editor] = mainShapeID
- name=mySO.GetName()
-
- #print "------------------------------ name :", name
- #print "------------------------------ name :", name
- #print "------------------------------ name :", name
- return name,msgError
-
-
- def displayMeshGroups(self, meshGroupName):
- """
- visualisation group de maille de nom meshGroupName dans salome
- """
- ok, msgError = False, ''
- try:
- #if 1 :
- sg = salome.ImportComponentGUI('SMESH')
- meshGroupEntries = []
- selMeshEntry = None
- selMeshGroupEntry = None
-
- # liste des groupes de maille de nom meshGroupName
- listSO = self.editor.study.FindObjectByName(meshGroupName, "SMESH")
- #print listSO
- #print "liste des groupes de maille de nom %s: "%(meshGroupName), listSO
-
- if len(listSO)>1:
- return 0,self.tr('Plusieurs objets portent ce nom')
- if len(listSO) ==0 :
- return 0,self.tr('Aucun objet ne porte ce nom')
- SObjet=listSO[0]
- groupEntry = SObjet.GetID()
- myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
- SCom = self.editor.study.FindComponent("SMESH")
- myBuilder = self.editor.study.NewBuilder()
- myBuilder.LoadWith( SCom , myComponent )
- sg.CreateAndDisplayActor(groupEntry)
- #color = COLORS[ self.icolor % LEN_COLORS ]
- #self.icolor = self.icolor + 1
- #sg.SetColor(groupEntry, color[0], color[1], color[2])
- salome.sg.Display(groupEntry)
- salome.sg.FitAll()
- ok = True
-
- except:
- #else :
- msgError = self.tr("Impossible d afficher ")+shapeName
- logger.debug(50*'=')
- return ok, msgError
-
-# ___________________________ Methodes appelees par EFICAS __________________________________
- #----------------------------------------------------------------
- def selectGroupFromSalome( self, kwType = None, editor=None):
- #----------------------------------------------------------------
- """
- Selection d'element(s) d'une geometrie ( sub-shape ) ou d'element(s) de maillage ( groupe de maille) partir de l'arbre salome
- retourne ( la liste des noms des groupes, message d'erreur )
-
- Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel GROUPMA
- """
- names, msg = [], ''
- try:
- atLeastOneStudy = self.editor.study
- if not atLeastOneStudy:
- return names, msg
-
- # recupere toutes les selections de l'utilsateur dans l'arbre Salome
- entries = salome.sg.getAllSelected()
- nbEntries = len( entries )
- if nbEntries >= 1:
- for entry in entries:
- if self.isMeshGroup(entry): # selection d 'un sous maillage
- name, msg = self.selectMeshGroup( editor, entry, kwType )
- elif self.isShape(entry): # selection d'une sous-geometrie
- name, msg = self.selectShape( editor, entry, kwType )
- else:
- name, msg = None,self.tr("Selection SALOME non autorisee.")
- if name:
- names.append( name )
-
- except:
- logger.debug("selectGroupFromSalome: An error occurs")
- #print "=================== selectGroupFromSalome ", names, msg
- #print "=================== selectGroupFromSalome ", names, msg
- #print "=================== selectGroupFromSalome ", names, msg
- return names, msg
-
- #----------------------------------------------------------------
- def selectMeshFile( self, editor=None):
- #----------------------------------------------------------------
- """
- """
- try :
- atLeastOneStudy = self.editor.study
- if not atLeastOneStudy: return "", 'Pas d etude'
-
- # recupere toutes les selections de l'utilsateur dans l'arbre Salome
- entries = salome.sg.getAllSelected()
- nbEntries = len( entries )
- if nbEntries != 1 : return "", 'select a Mesh'
- entry = entries[0]
- if not self.isMesh(entry): return "", 'select a Mesh'
- mySO=self.editor.study.FindObjectID(entry)
- print mySO
- ok, anAttr = mySO.FindAttribute("AttributeName")
- if not ok : return "" ,'Pb de nommage'
- meshFile="/tmp/"+str(anAttr.Value())+'.med'
- myMesh=self.getMesh(entry)
- if myMesh==None : return "" ,'Pb dans la selection '
- myMesh.ExportMED( meshFile, 0)
- return meshFile ,""
- except :
- return "", "Pb dans la selection "
-
- #----------------------------------------------------------------
- def importMedFile( self,fileName, editor=None):
- #----------------------------------------------------------------
- try :
- theStudy = self.editor.study
- if not theStudy: return (0, 'Pas d etude')
- from salome.smesh import smeshBuilder
- smesh = smeshBuilder.New(theStudy)
- aMesh,aResult = smesh.CreateMeshesFromMED(fileName)
- salome.sg.updateObjBrowser(1)
- return 1,""
- except :
- return (O,"Pb a l import")
-
- #----------------------------------------------------------------
- def selectEntryFromSalome( self, kwType = None, editor=None):
- #----------------------------------------------------------------
- """
- Selection d'element a partir de l'arbre salome
- Ne verifie que l unicite de la selection
- retourne ( la liste avec le nom du groupe, message d'erreur )
-
- retourne une liste pour etre coherent avec selectGroupFromSalome
- Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel SalomeEntry
- """
- try:
- if self.editor.study._non_existent():
- raise Exception(self.tr(u"L'étude Salome n'existe plus"))
- entries = salome.sg.getAllSelected()
- nbEntries = len( entries )
- if nbEntries < 1:
- raise Exception(self.tr(u"Veuillez sélectionner une entrée de l'arbre d'étude de Salome"))
- elif nbEntries > 1 :
- raise Exception(self.tr(u"Une seule entrée doit être sélectionnée dans l'arbre d'étude de Salome"))
-
- value = kwType.get_selected_value(entries[0], self.editor)
- msg = self.tr(u"L'entrée de l'arbre d'étude de Salome a été sélectionnée")
- return [value], msg
- except Exception, e:
- QMessageBox.information(self, self.tr(u"Sélection depuis Salome"), unicode(e))
- return [], unicode(e)
-
-
- #---------------------------------------------
- def addJdcInSalome( self, jdcPath ):
- #---------------------------------------------
- """
- Ajoute le Jeu De Commande dans l'arbre d'etude Salome dans la rubrique EFICAS
- Revu pour QT4
- """
- msgError = "Erreur dans l'export du fichier de commande dans l'arbre d'etude Salome"
- ok = False
- try:
- atLeastOneStudy = self.editor.study
- if not atLeastOneStudy:
- return ok, msgError
-
- fileType = { 'ASTER' : "FICHIER_EFICAS_ASTER",
- 'SEP' : "FICHIER_EFICAS_SEP",
- 'MAP' : "FICHIER_EFICAS_MAP",
- 'OPENTURNS': "FICHIER_EFICAS_OPENTURNS",
- 'OPENTURNS_STUDY': "FICHIER_EFICAS_OPENTURNS_STUDY",
- 'OPENTURNS_WRAPPER': "FICHIER_EFICAS_OPENTURNS_WRAPPER",
- 'CARMEL3D': "FICHIER_EFICAS_CARMEL3D",
- 'CARMELCND': "FICHIER_EFICAS_CARMELCND",
- }
-
- folderName = { 'ASTER' : 'AsterFiles',
- 'SEP' : 'OMFiles' ,
- 'CARMEL3D' : 'CARMEL3DFiles' ,
- 'CARMELCND' : 'CARMELCNDFiles' ,
- 'MAP' : 'MapFiles' ,
- 'OPENTURNS_STUDY': 'OpenturnsFiles',
- 'OPENTURNS_WRAPPER': 'OpenturnsFiles'}
-
- folderType = { 'ASTER': "ASTER_FILE_FOLDER",
- 'SEP': "SEP_FILE_FOLDER",
- 'MAP': "MAP_FILE_FOLDER",
- 'CARMEL3D': "CARMEL3D_FILE_FOLDER",
- 'CARMELCND': "CARMELCND_FILE_FOLDER",
- 'OPENTURNS_STUDY':"OPENTURNS_FILE_FOLDER",
- 'OPENTURNS_WRAPPER': "OPENTURNS_FILE_FOLDER"}
-
-
- moduleEntry = self.editor.findOrCreateComponent(self.module, self.componentName)
- itemName = re.split("/",jdcPath)[-1]
-
- if folderName.has_key(self.code) :
- monFolderName=folderName[ self.code ]
- else :
- monFolderName=str(self.code)+"Files"
-
- if folderType.has_key(self.code) :
- monFolderType=fileType[ self.code ]
- else :
- monFolderType=str(self.code)+"_FILE_FOLDER"
-
- if fileType.has_key(self.code) :
- monFileType=fileType[ self.code ]
- else :
- monFileType="FICHIER_EFICAS_"+str(self.code)
-
- fatherEntry = self.editor.findOrCreateItem(
- moduleEntry,
- name = monFolderName,
- #icon = "ICON_COMM_FOLDER",
- fileType = monFolderType)
-
- commEntry = self.editor.findOrCreateItem( fatherEntry ,
- name = itemName,
- fileType = monFileType,
- fileName = jdcPath,
- #icon = "ICON_COMM_FILE",
- comment = str( jdcPath ))
-
- salome.sg.updateObjBrowser(1)
-
- #print 'addJdcInSalome commEntry->', commEntry
- if commEntry:
- ok, msgError = True, ''
- except Exception, exc:
- msgError = "Can't add Eficas file to Salome study tree"
- logger.debug(msgError, exc_info = True)
- QMessageBox.warning(self, self.tr("Warning"),
- self.tr("%s. Raison:\n%s\n\n Voir la log pour plus de détails " % (msgError, exc)))
- return ok, msgError
-
-
- #---------------------------------------
- def displayShape( self, shapeName ):
- #---------------------------------------
- """
- visualisation de nom shapeName dans salome
- """
- ok, msgError = False, ''
- try:
- #if 1 :
- import SalomePyQt
- sgPyQt = SalomePyQt.SalomePyQt()
- myActiveView=sgPyQt.getActiveView()
- if myActiveView < 0 :
- return ok, 'pas de vue courante'
-
- currentViewType=sgPyQt.getViewType(myActiveView)
- if str(currentViewType) != "OCCViewer" : # maillage
- ok, msgError = self.displayMeshGroups(shapeName)
- else: #geometrie
- current_color = COLORS[ self.icolor % LEN_COLORS ]
- from salome.geom.geomtools import GeomStudyTools
- myGeomTools=GeomStudyTools(self.editor)
- ok = myGeomTools.displayShapeByName( shapeName, current_color )
- salome.sg.FitAll()
- self.icolor = self.icolor + 1
- if not ok:
- msgError =self.tr("Impossible d afficher ")+shapeName
- except:
- #else :
- logger.debug(50*'=')
- return ok, msgError
-
- #---------------------------------------
- def ChercheGrpMeshInSalome(self):
- #---------------------------------------
- print "je passe par la"
- import SMESH
- names, msg = [], ''
- try :
- #if 1 :
- entries = salome.sg.getAllSelected()
- nbEntries = len( entries )
- names, msg = None, self.tr("Selection SALOME non autorisee.")
- if nbEntries == 1:
- for entry in entries:
- names,msg=self.giveMeshGroups(entry,"SubMeshes",SMESH.SMESH_subMesh)
- except :
- #else :
- print "bim bam boum"
- return(msg,names)
-
- #---------------------------------------
- def ChercheGrpMailleInSalome(self):
- #---------------------------------------
- import SMESH
- names, msg = [], ''
- try :
- #if 1:
- entries = salome.sg.getAllSelected()
- nbEntries = len( entries )
- names, msg = None, self.tr("Selection SALOME non autorisee.")
- if nbEntries == 1:
- for entry in entries:
- print entry
- names,msg=self.giveMeshGroups(entry,"Groups of",SMESH.SMESH_GroupBase)
- print names
- except :
- #else:
- print "bim bam boum"
- return(msg,names)
-
-
-
-
-
-#-------------------------------------------------------------------------------------------------------
-# Pilotage de la Visu des elements de structures
-#
-
-
- def envoievisu(self,liste_commandes):
- try:
- from salome.geom.structelem import StructuralElementManager, InvalidParameterError
- except ImportError:
- QMessageBox.critical(self, self.tr("Error"),
- self.tr("Impossible d'afficher les elements de structure: "
- "module GEOM n est pas installe."))
- return
- try:
- atLeastOneStudy = self.editor.study
- if not atLeastOneStudy:
- return
- logger.debug(10*'#'+":envoievisu: creating a StructuralElementManager instance")
- structElemManager = StructuralElementManager()
- elem = structElemManager.createElement(liste_commandes)
- elem.display()
- salome.sg.updateObjBrowser(True)
- except InvalidParameterError, err:
- trStr = self.tr("Invalid parameter for group %(group)s: %(expr)s must be "
- "greater than %(minval)g (actual value is %(value)g)")
- msg = str(trStr) % {"group": err.groupName, "expr": err.expression,
- "minval": err.minValue, "value": err.value}
- QMessageBox.warning(self, self.tr("Error"), msg)
- except:
- traceback.print_exc()
- logger.debug(10*'#'+":pb dans envoievisu")
-
-
-class SalomeEntry:
- """
- This class replaces the class Accas.SalomeEntry (defined in EFICAS tool)
- when Eficas is launched in Salome context. It handles the objects that can
- be selected from Salome object browser.
- By default, the selected value is the entry of the selected item in the
- object browser. This class can be subclassed to provide more advanced
- functions.
- """
-
- help_message = u"Une entrée de l'arbre d'étude de Salome est attendue"
-
- def __init__(self, entryStr):
- self._entry = entryStr
-
- @staticmethod
- def __convert__(entryStr):
- return SalomeEntry(entryStr)
-
- @staticmethod
- def get_selected_value(selected_entry, study_editor):
- return selected_entry
-
-
-#-------------------------------------------------------------------------------------------------------
-# Point d'entree lancement EFICAS
-#
-def runEficas( code=None, fichier=None, module = "EFICAS", version=None, componentName = "Eficas",multi=False):
- logger.debug(10*'#'+":runEficas: START")
- #global appli
- logger.debug(10*'#'+":runEficas: code="+str(code))
- logger.debug(10*'#'+":runEficas: fichier="+str(fichier))
- logger.debug(10*'#'+":runEficas: module="+str(module))
- logger.debug(10*'#'+":runEficas: version="+str(version))
-
- #if not appli: #une seul instance possible!
- appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
- module = module, version = version, componentName = componentName,multi=multi )
- #if not appli: #une seul instance possible!
- # appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
- # module = module, componentName = componentName, version=version )
- logger.debug(10*'#'+":runEficas: END")
-
-