From: salome <> Date: Fri, 30 Sep 2005 17:41:46 +0000 (+0000) Subject: Intégration eficas_novice X-Git-Tag: EFICAS_before_burge~8 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2b1b3215c0821d29718b6c82a9c76cbeee52bf89;p=modules%2Feficas.git Intégration eficas_novice --- diff --git a/Makefile.in b/Makefile.in index c2a8ba15..228277ba 100644 --- a/Makefile.in +++ b/Makefile.in @@ -20,7 +20,12 @@ EFICASCatalog.xml \ EFICAS_en.xml \ eficashomard.png \ eficas.png \ -eficaster.png +eficaster.png \ +eficasternovice.png \ +moins.png \ +plus.png \ +select1.png \ + BIN_SCRIPT= \ VERSION diff --git a/resources/EFICAS_en.xml b/resources/EFICAS_en.xml index a21d30b9..0e01f3ba 100644 --- a/resources/EFICAS_en.xml +++ b/resources/EFICAS_en.xml @@ -16,7 +16,8 @@ - + + @@ -24,6 +25,7 @@ + diff --git a/resources/eficasternovice.png b/resources/eficasternovice.png new file mode 100644 index 00000000..ba943d96 Binary files /dev/null and b/resources/eficasternovice.png differ diff --git a/resources/moins.png b/resources/moins.png new file mode 100644 index 00000000..7be1bc4f Binary files /dev/null and b/resources/moins.png differ diff --git a/resources/plus.png b/resources/plus.png new file mode 100644 index 00000000..518109df Binary files /dev/null and b/resources/plus.png differ diff --git a/resources/select1.png b/resources/select1.png new file mode 100644 index 00000000..a1a4ee1d Binary files /dev/null and b/resources/select1.png differ diff --git a/src/EELIH/c_geometrie.py b/src/EELIH/c_geometrie.py index 8a906093..fff226a9 100644 --- a/src/EELIH/c_geometrie.py +++ b/src/EELIH/c_geometrie.py @@ -15,9 +15,6 @@ class C_geometrie: """ controleur de la classe Geometrie, permet la sélection de la géométrie dans l'arbre d'étude de Salome. Met à jour les champs correspondants (sous-géométries, ...) - - geometrie = référence sur le panneau géométrie - - dicoSousGeom = clé = IORString - valeur = name """ def __init__(self, appli, geometrie): self.appli = appli @@ -126,32 +123,6 @@ class C_geometrie: listeSousGeom.sort() self.appli.etude.setSousGeometrie(listeSousGeom) - # on cree le bon nombre de panneaux maillages : autant qu'il y a de sous geometries - #self.createMeshPanel() - #print "-----------------------------" - #print "-----------------------------" - #print "-----------------------------" - #print "-----------------------------" - #print "-----------------------------" - #print "-----------------------------" - #print "-----------------------------" - #print "liste des panneaux =" - #print self.appli.mw.listePanels - -# def createMeshPanel(self): -# """ -# cree autant de panneaux maillages que de sous geometries -# """ -# self.listeMaillages = [] -# for i in self.appli.etude.sousGeometrie: -# mesh = maillage.Maillage(self.appli.mw.ws, self.appli) -# self.listeMaillages.append(mesh) -# self.appli.mw.listePanels.append(mesh) -# #self.appli.mw.listePanels.insert(0, self.appli.mw.listePanels[0] + 1) -# #del self.appli.mw.listePanels[1] - -# self.updateGeomMaillage(mesh, i) - def getSousGeometrie(self): """ retourne les sous-géométries de la géométrie sélectionnée dans l'arbre d'étude de Salome @@ -172,118 +143,3 @@ class C_geometrie: # insertion pour le panneau pression for cmb in self.geometrie.appli.mw.pression.controleurNouvelleLigneTable.controleurTable.listeComboGeom: cmb.insertStrList(self.geometrie.appli.etude.sousGeometrie) - - def updateGeomMaillage(self, maillage, sousGeom): - """ - affecte le label indiquant la géométrie sélectionnée du panneau maillage - affecte la listbox du panneau maillage avec les valeurs des maillages trouvés dans l'arbre d'étude - Salome correspondant à la géométrie sélectionnée - """ - # affectation de la géométrie sélectionnée au label du panneau maillage - maillage.lblGeom2.setText(str(self.appli.etude.geometrie[0])) - - # affectation de la sous géométrie au label du panneau maillage - maillage.lblSousGeom2.setText(str(sousGeom)) - - # récupération des mailles correspondants - import eelihCL - maillage.cl=eelihCL.CLinit() - # récupération de l'IOR des sous géométries - GEOMIor = [] - for iorSousGeom in self.dicoSousGeom.keys(): - GEOMIor.append(iorSousGeom) - maillage.cl.GetOrCreateCL(iorSousGeom) - #self.appli.mw.maillage.cl.traiteCL() - maillage.cl.get_geoms() - maillage.cl.get_maillages() -# - maillage.cl.MainShapes(0) -# - listeMaillage = maillage.cl.Possibles(0, str(self.appli.etude.geometrie[0])) - # insertion des maillages trouvés dans la listbox du panneau maillage - # si aucun maillage on disable la listbox - # sinon on disable le lineedit pour donner le nom d'un nouveau maillage - if listeMaillage != []: - maillage.lbMaillage.insertStrList(listeMaillage) - #maillage.lbMaillage.setEnabled(1) - #maillage.lblMaillage.setEnabled(1) - #maillage.lblNouveauMaillage.setEnabled(0) - #maillage.lnNouveauMaillage.setEnabled(0) - #else: - #maillage.lnNouveauMaillage.setEnabled(1) - #maillage.lblNouveauMaillage.setEnabled(1) - #maillage.lbMaillage.setEnabled(0) - #maillage.lblMaillage.setEnabled(0) - - - def convertit_group_maille_from_salome(self,liste_in): - """ - convertit les groupes de maille - """ - newr=[] - if [ 1 == 1 ]: - for entree in liste_in : - travail=[] - travail.append(entree) - if dict_geom_numgroupe.has_key(entree): - r=dict_geom_numgroupe[entree] - else: - r=SMESH_utils.getAsterGroupMa(salome.myStudy,travail) - dict_geom_numgroupe[entree]=r - for i in r : - newr.append(i) - else : - print "pas de groupe de maille associé" - showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de maille") - return newr - - def convertit_entrees_en_valeurs(self,liste_faces): - """ - convertit les entry de l'arbre d'étude en valeur - """ - valeur=self.convertit_group_maille_from_salome(liste_faces) - if valeur == []: - print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - print "Pb pas de fonction de conversion de la valeur Salome en valeur Aster" - print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - print "VALEUR", valeur - if len(valeur) == 1: - valeur = "'" + str(valeur[0]) + "'" - return valeur - - def add_selection(self): - """ - retourne le nom des objets sélectionnés dans l'arbre d'étude - """ - entrychaine=salome.sg.getAllSelected() - if len(entrychaine) >= 1: - print "1 seule géométrie doit être sélectionnée" - - - # liste des faces sélectionnées dans ddl et pression -# liste_faces = [] -# for face in self.appli.etude.ddls: -# if face[0] not in liste_faces: -# liste_faces.append(face[0]) - -# for face in self.appli.etude.chargements: -# if face[0] not in liste_faces: -# liste_faces.append(face[0]) -# if liste_faces != '': - liste_faces = [] - #liste_faces.append('0:1:2:1:1') - #liste_faces.append('0:1:2:1:2') - - # récupération de toutes les sous géométries - for sousGeom in self.appli.etude.sousGeometrie: - SO = salome.myStudy.FindObject(str(sousGeom)) - liste_faces.append(SO.GetID()) - - touteslesvaleurs = self.convertit_entrees_en_valeurs(liste_faces) - #liste_faces = [] - #liste_faces.append('0:1:2:1:2') - #touteslesvaleurs = self.convertit_entrees_en_valeurs(liste_faces) - return touteslesvaleurs - -dict_geom_numgroupe = { } -dict_geom_numface = { } diff --git a/src/EELIH/c_maillage.py b/src/EELIH/c_maillage.py index b351a92e..6da0bebe 100644 --- a/src/EELIH/c_maillage.py +++ b/src/EELIH/c_maillage.py @@ -1,13 +1,11 @@ # -*- coding: utf-8 -*- from panelbase import * - class C_maillage: """ controleur de la classe Maillage, traite les maillages correspondants à la géométrie sélectionnée ou crée un maillage avec le nom saisi - - maillage = référence sur le panneau maillage """ def __init__(self, maillage): self.maillage = maillage diff --git a/src/EELIH/geometrie.py b/src/EELIH/geometrie.py index 49553aa1..9c1c4100 100644 --- a/src/EELIH/geometrie.py +++ b/src/EELIH/geometrie.py @@ -14,8 +14,6 @@ class Geometrie(PanelBase): """ Hérite de la classe mère PanelBase Définit le panneau pour le choix de la géométrie sur laquelle on veut travailler - - pbSelection = bouton pour la sélection dans l'arbre d'étude Salome - - ln = lineedit pour l'affichage de la sélection """ def __init__(self, parent, appli): # hérite de la classe mère des panneaux diff --git a/src/EELIH/publication.py b/src/EELIH/publication.py index 0398e959..00164cb9 100644 --- a/src/EELIH/publication.py +++ b/src/EELIH/publication.py @@ -132,8 +132,6 @@ class Publication(PanelBase): mesh = maillage.Maillage(self.appli.mw.ws, self.appli) self.listeMaillages.append(mesh) self.appli.mw.listePanels.append(mesh) - #self.appli.mw.listePanels.insert(0, self.appli.mw.listePanels[0] + 1) - #del self.appli.mw.listePanels[1] self.updateGeomMaillage(mesh, i) @@ -157,29 +155,17 @@ class Publication(PanelBase): for iorSousGeom in self.appli.mw.geometrie.controleurGeom.dicoSousGeom.keys(): GEOMIor.append(iorSousGeom) maillage.cl.GetOrCreateCL(iorSousGeom) - #self.appli.mw.maillage.cl.traiteCL() maillage.cl.get_geoms() maillage.cl.get_maillages() -# + maillage.cl.MainShapes(0) -# + listeMaillage = maillage.cl.Possibles(0, str(self.appli.etude.geometrie[0])) # insertion des maillages trouvés dans la listbox du panneau maillage # si aucun maillage on disable la listbox # sinon on disable le lineedit pour donner le nom d'un nouveau maillage if listeMaillage != []: maillage.lbMaillage.insertStrList(listeMaillage) - #maillage.lbMaillage.setEnabled(1) - #maillage.lblMaillage.setEnabled(1) - #maillage.lblNouveauMaillage.setEnabled(0) - #maillage.lnNouveauMaillage.setEnabled(0) - #else: - #maillage.lnNouveauMaillage.setEnabled(1) - #maillage.lblNouveauMaillage.setEnabled(1) - #maillage.lbMaillage.setEnabled(0) - #maillage.lblMaillage.setEnabled(0) - - dict_geom_numgroupe = { } dict_geom_numface = { } diff --git a/src/EFICASGUI/EFICASGUI.py b/src/EFICASGUI/EFICASGUI.py index a4d8df4f..17e41c85 100644 --- a/src/EFICASGUI/EFICASGUI.py +++ b/src/EFICASGUI/EFICASGUI.py @@ -114,8 +114,22 @@ def customPopup(popup, theContext, theObject, theParent): import eficasSalome def runEficas(ws): + print "--------------------------------------------------" + print currentStudyId eficasSalome.runEficas(ws,"ASTER",studyId=currentStudyId) +def runEELIH(ws,code="ASTER"): + # Enregistrement dans l étude + import eficasEtude + import appli + print "++++++++++++++++++++++++++++++++++++++++++++++++++++" + print currentStudyId + + MaRef=eficasEtude.Eficas_In_Study(code,studyId=currentStudyId) + # flag = E pour Eficas (enregistrement manuel du fichier de commandes) + flag = 'E' + moi=appli.Appli(MaRef, flag) + def runEficaspourHomard(ws): print "runEficas" eficasSalome.runEficas(ws,"HOMARD") @@ -148,8 +162,10 @@ def runEficasFichier(ws): dict_command={ 941:runEficas, + 943:runEELIH, 946:runEficaspourHomard, 4041:runEficas, + 4043:runEELIH, 4046:runEficaspourHomard, 9042:runEficasFichier, } diff --git a/src/EFICASGUI/SMESH_utils.py b/src/EFICASGUI/SMESH_utils.py index d5be97dd..99a72696 100644 --- a/src/EFICASGUI/SMESH_utils.py +++ b/src/EFICASGUI/SMESH_utils.py @@ -4,7 +4,7 @@ # Author : Paul RASCLE, EDF # Project : SALOME # Copyright : EDF 2003 -# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/EFICASGUI/SMESH_utils.py,v 1.5 2005/02/03 15:15:09 salome Exp $ +# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/EFICASGUI/SMESH_utils.py,v 1.6 2005/08/18 09:05:55 salome Exp $ #============================================================================= from omniORB import CORBA @@ -35,6 +35,13 @@ def entryToIor(myStudy,entry): ior = orb.string_to_object(iorString) return ior +def iorStringToIor(iorString): + """ + retourne une référence ior de l'iorString passée en argument + """ + ior = orb.string_to_object(iorString) + return ior + def entryToIorString(myStudy,entry): """ Retourne la sérialisation de l'ior de l'entry passée en @@ -50,6 +57,7 @@ def entryToIorString(myStudy,entry): print "invalid entry: ",entry SO = None if SO != None: + boo,iorso = myBuilder.FindAttribute(SO,"AttributeIOR") if boo == 0: print "no IOR attribute on study object: ", entry @@ -162,16 +170,19 @@ def getSMESHSubShapeIndexes(myStudy, entryList, typenoeudorcell = 0): for idShape in entryList: try: anObject=entryToIor(myStudy,idShape) - Shape=anObject._narrow(GEOM.GEOM_Object) + if not anObject: # l'objet n'a pas encore chargé + strContainer, strComponentName = "FactoryServer", "GEOM" + myComponent = salome.lcc.FindOrLoadComponent( strContainer, strComponentName ) + SCom=myStudy.FindComponent( strComponentName ) + myBuilder = myStudy.NewBuilder() + myBuilder.LoadWith( SCom , myComponent ) + anObject=entryToIor(myStudy,idShape) + + Shape=anObject._narrow(GEOM.GEOM_Object) iorStringMain=orb.object_to_string(Shape) except : print "pb avec l IOR: pas un objet" - if iorStringMain == None: - # C'est le cas ou on a loade un fichier hdf et on est pas passe par geom - # par exemple .... - return refList - myCL=myCLinit.GetOrCreateCL(iorStringMain) refShape = singleEntryToName(myStudy,idShape) if refShape != None: @@ -220,3 +231,33 @@ def VisuGroupe(myStudy,GroupesListe): aGuiDS.ClearSelection() aGuiDS.DisplayByNameInGeom(GroupesListe) +def getSubGeometry(myStudy, list): + IORMainShape = entryToIorString(myStudy,list[1]) + + SO = myStudy.FindObjectIOR(IORMainShape) + childIt = myStudy.NewChildIterator(SO) + childIt.InitEx(1) + childListe = [] + while childIt.More(): + childSO = childIt.Value() + childListe.append(childSO.GetName()) + childIt.Next() + return childListe + +def getSubGeometryIorAndName(myStudy, list): + """ + retourne un dictionnaire avec clé = IOR + valeur = name + """ + dico = {} + IORMainShape = entryToIorString(myStudy,list[1]) + + SO = myStudy.FindObjectIOR(IORMainShape) + childIt = myStudy.NewChildIterator(SO) + childIt.InitEx(1) + while childIt.More(): + childSO = childIt.Value() + if childSO.GetIOR() != '': + dico[childSO.GetIOR()] = childSO.GetName() + childIt.Next() + return dico diff --git a/src/EFICASGUI/dataEficas.py b/src/EFICASGUI/dataEficas.py index 49e352b5..d5683cfa 100644 --- a/src/EFICASGUI/dataEficas.py +++ b/src/EFICASGUI/dataEficas.py @@ -49,3 +49,20 @@ def init(top,code="ASTER",fichier=None,studyId=None): moi=MyEficas(top,code=code) moi.contexte() + +def initNovice(code="ASTER",fichier=None,studyId=None): + # Enregistrement dans l étude + import eficasEtude + MaRef=eficasEtude.Eficas_In_Study(code,studyId=studyId) + + #import eficas + class MyEficas(appli.Appli): + #def exit(self, event=None): + #appli.Appli.exit(self, event=None) + + def contexte(self): + self.salome=MaRef + + moi=MyEficas() + mainwindow.MainWindow(moi) + moi.contexte() \ No newline at end of file diff --git a/src/EFICASGUI/eficasCL.py b/src/EFICASGUI/eficasCL.py index 40c791b2..c415b221 100644 --- a/src/EFICASGUI/eficasCL.py +++ b/src/EFICASGUI/eficasCL.py @@ -5,6 +5,7 @@ import GEOM import SalomePyQt import MonChoixMaillage import string +import EFICASGUI Tag_RefOnShape = 1 dict_CL={} @@ -12,27 +13,25 @@ dict_CL={} class CLinit: def __init__(self): geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") - self.GroupOp = geom.GetIGroupOperations(salome.myStudyId) + #self.GroupOp = geom.GetIGroupOperations(salome.myStudyId) + self.GroupOp = geom.GetIGroupOperations(EFICASGUI.currentStudyId) self.smesh=None self.geomcompID=None self._d = SalomePyQt.SalomePyQt().getDesktop() self.correspondanceNomIOR = {} self.correspondanceNomIORshape = {} self.dict_listedep={} - print "fin init" def clean(self): dict_CL={} def GetOrCreateCL(self,myShapeName): - print "GetOrCreateCL" , myShapeName if not (dict_CL.has_key(myShapeName)): dict_CL[myShapeName] = CL() return dict_CL[myShapeName] def traiteCL(self): - #print "Debut de TraiteCL" self.get_geoms() self.get_maillages() # Récupere tous les Mesh @@ -123,7 +122,6 @@ class CLinit: for MainID in self.Liste_geoms[GEOMIor]: aSO = salome.myStudy.FindObjectID(MainID) if aSO==None: - print "pb dans MainShapes" return listeNoms attrName = aSO.FindAttribute("AttributeName")[1] anAttr = attrName._narrow(SALOMEDS.AttributeName) @@ -133,6 +131,7 @@ class CLinit: anAttr = IORAttr._narrow(SALOMEDS.AttributeIOR) GEOMShapeIOR = anAttr.Value() self.correspondanceNomIORshape[Name]=GEOMShapeIOR + return listeNoms @@ -166,11 +165,15 @@ class CLinit: return type def get_maillages(self): + salome.myStudy = salome.myStudyManager.GetStudyByID( EFICASGUI.currentStudyId ) + + self.Liste_maillages={} if self.smesh == None : self.smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") self.smesh.SetCurrentStudy(salome.myStudy) stringIOR=salome.orb.object_to_string(self.smesh) + SO_smesh=salome.myStudy.FindObjectIOR(stringIOR) if SO_smesh != None: ChildIterator = salome.myStudy.NewChildIterator(SO_smesh) diff --git a/src/EFICASGUI/eficasEtude.py b/src/EFICASGUI/eficasEtude.py index fa2f8b69..0067f2a8 100644 --- a/src/EFICASGUI/eficasEtude.py +++ b/src/EFICASGUI/eficasEtude.py @@ -4,7 +4,7 @@ # Author : Pascale NOYRET, EDF # Project : SALOME # Copyright : EDF 2003 -# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/EFICASGUI/eficasEtude.py,v 1.3 2005/06/03 07:25:24 salome Exp $ +# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/EFICASGUI/eficasEtude.py,v 1.4 2005/06/22 18:50:13 salome Exp $ #============================================================================= import salome @@ -44,6 +44,8 @@ class Eficas_In_Study: if self.commId != None: self.aGuiDS.setExternalFileAttribute(self.commId,"FICHIER_EFICAS_"+self.code+suf,fichier) salome.sg.updateObjBrowser(0) + print "((((((((((((((((((((((((((((((((((((((" + print "fin range in study" def creeConfigTxt(self,fichier,dico): sauvegarde = asksaveasfilename(title="fichier config.txt", @@ -58,4 +60,6 @@ class Eficas_In_Study: f.write(ligne) f.close() self.rangeInStudy(sauvegarde) + print "===============================" + print "fin crreConfigTxt" diff --git a/src/Makefile.in b/src/Makefile.in index 4cbcbf35..d62801ee 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -4,7 +4,7 @@ # Author : Paul RASCLE, EDF # Project : SALOME # Copyright : EDF 2001 -# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/Makefile.in,v 1.2 2004/12/10 16:43:25 salome Exp $ +# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/Makefile.in,v 1.3 2005/08/03 10:06:01 salome Exp $ #============================================================================== # source path @@ -15,6 +15,6 @@ VPATH=.:@srcdir@ @COMMENCE@ -SUBDIRS = EFICAS EFICASGUI +SUBDIRS = EFICAS EFICASGUI EELIH @MODULE@