if generator.plugins.has_key(format):
# Le generateur existe on l'utilise
self.generator=generator.plugins[format]()
- jdc_formate=self.generator.gener(self.jdc,format='beautifie',configuration=self.appliEficas.CONFIGURATION)
+ jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION)
if not self.generator.cr.estvide():
self.affiche_infos("Erreur à la generation")
QMessageBox.critical( self, "Erreur a la generation","EFICAS ne sait pas convertir ce JDC")
QMessageBox.critical( self, "Format "+format+" non reconnu","EFICAS ne sait pas convertir le JDC selon le format "+format)
return ""
- #------------#
- def run(self):
- #------------#
+ #-------------------------#
+ def run(self,exec="oui"):
+ #-------------------------#
format=self.appliEficas.format_fichier
self.textePython=""
if generator.plugins.has_key(format):
# Le generateur existe on l'utilise
self.generator=generator.plugins[format]()
- self.dicoRun=self.generator.generRUN(self.jdc,format='beautifie',configuration=self.appliEficas.CONFIGURATION)
+ self.dicoRun=self.generator.generRUN(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION)
if not self.generator.cr.estvide():
self.affiche_infos("Erreur à la generation")
QMessageBox.critical( self, "Erreur a la generation","EFICAS ne sait pas convertir ce JDC")
txt= apply(JDCEditor.__dict__[code],(self,))
if txt !="" :
self.textePython=self.textePython+txt
- os.system(self.textePython)
+ if exec="oui" :
+ os.system(self.textePython)
+ else
+ return self.textePython
+
+ def saveRun(self):
+ texte=self.run(exec="non")
+ print texte
+
def PYGMEE(self) :
if self.dicoRun['PYGMEE']== "" : return ""
Ui_Eficas.__init__(self)
self.setupUi(self)
self.ajoutIcones()
- if code=='ASTER' : self.ASTER()
+ if code in Appli.__dict__.keys():
+ listeTexte=apply(Appli.__dict__[code],(self,))
+
self.viewmanager = MyTabview(self)
self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents'))
self.connecterSignaux()
self.connect(self.actionTraduitV8V9,SIGNAL("activated()"),self.traductionV8V9)
+ def MAP(self):
+ self.actionExecution = QAction(self)
+ icon6 = QIcon(self.RepIcon+"/compute.png")
+ self.actionExecution.setIcon(icon6)
+ self.actionExecution.setObjectName("actionExecution")
+ self.menuJdC.addAction(self.actionExecution)
+ self.toolBar.addAction(self.actionExecution)
+ self.actionExecution.setText(QApplication.translate("Eficas", "Execution", None, QApplication.UnicodeUTF8))
+ self.connect(self.actionExecution,SIGNAL("activated()"),self.run)
+ self.actionEnregistrer_Python = QAction(self)
+ self.actionEnregistrer_Python.setObjectName("actionEnregistrer_Python")
+ self.menuFichier.addAction(self.actionEnregistrer_Python)
+ self.actionEnregistrer_Python.setText(QApplication.translate("Eficas", "Sauve Python", None,QApplication.UnicodeUTF8))
+ self.connect(self.actionEnregistrer_Python,SIGNAL("activated()"),self.saveRun)
def ajoutIcones(self) :
# Pour pallier les soucis de repertoire d icone
self.actionCopier.setIcon(icon4)
icon5 = QIcon(self.RepIcon+"/Paste24.png")
self.actionColler.setIcon(icon5)
- icon6 = QIcon(self.RepIcon+"/compute.png")
- self.actionExecution.setIcon(icon6)
def connecterSignaux(self) :
self.connect(self.action_Ouvrir,SIGNAL("activated()"),self.fileOpen)
self.connect(self.actionEnregistrer,SIGNAL("activated()"),self.fileSave)
self.connect(self.actionEnregistrer_sous,SIGNAL("activated()"),self.fileSaveAs)
- self.connect(self.actionEnregistrer_Python,SIGNAL("activated()"),self.SaveRun)
self.connect(self.actionFermer,SIGNAL("activated()"),self.fileClose)
self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll)
self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit)
self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut)
self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy)
self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste)
- self.connect(self.actionExecution,SIGNAL("activated()"),self.run)
self.connect(self.actionSupprimer,SIGNAL("activated()"),self.supprimer)
self.connect(self.actionRapport_de_Validation,SIGNAL("activated()"),self.jdcRapport)
def run(self):
self.viewmanager.run()
- def SaveRun(self):
- self.viewmanager.run()
+ def saveRun(self):
+ self.viewmanager.saveRun()
def supprimer(self):
self.viewmanager.handleSupprimer()
editor=self.dict_editors[index]
editor.run()
+ def saveRun(self):
+ index=self.myQtab.currentIndex()
+ if index < 0 : return
+ editor=self.dict_editors[index]
+ editor.saveRun()
+
def handleCloseAll(self):
res=0
self.appliEficas.sauveRecents()
<addaction name="actionFermer_tout" />
<addaction name="separator" />
<addaction name="actionQuitter" />
- <addaction name="actionEnregistrer_Python" />
</widget>
<widget class="QMenu" name="menuEdition" >
<property name="title" >
<addaction name="actionRapport_de_Validation" />
<addaction name="actionFichier_Source" />
<addaction name="actionFichier_Resultat" />
- <addaction name="actionExecution" />
</widget>
<widget class="QMenu" name="menu_Aide" >
<property name="title" >
<addaction name="actionCouper" />
<addaction name="actionCopier" />
<addaction name="actionColler" />
- <addaction name="actionExecution" />
</widget>
<action name="action_Nouveau" >
<property name="icon" >
<string>Supprimer</string>
</property>
</action>
- <action name="actionExecution" >
- <property name="icon" >
- <iconset>
- <normaloff>compute.png</normaloff>compute.png</iconset>
- </property>
- <property name="text" >
- <string>Execution</string>
- </property>
- </action>
- <action name="actionSauve_Python" >
- <property name="text" >
- <string>Sauve Python</string>
- </property>
- </action>
- <action name="actionEnregistrer_Python" >
- <property name="text" >
- <string>Enregistrer Python</string>
- </property>
- </action>
</widget>
<resources/>
<connections/>
# PYGMEEDict contient une equivalence entre le catalogue Map et les lignes generees
# comme entete (commentaire ?) dans le fichier d'input de pygmee
#
+
+CONFIGliste=('NAME_SCHEME', 'PATH_ASTER', 'PATH_BENHUR', 'PATH_MODULE', 'PATH_PYGMEE', 'PATH_STUDY', 'REPINI')
PYGMEEDict={
"_PYGMEE_FUSEAU1_b_forme_FICHIER" : "#fuseau 1 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant ",
"FUSEAU2" : "#fuseau 2 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant",
# Les extensions de fichier permis?
extensions=('.comm',)
- def gener(self,obj,format='brut',configuration=None):
- self.PATH_PYGMEE=configuration.PATH_PYGMEE
- self.PATH_BENHUR=configuration.PATH_BENHUR
- self.PATH_ASTER=configuration.PATH_ASTER
- self.PATH_MODULE=configuration.PATH_MODULE
- self.NAME_SCHEME=configuration.NAME_SCHEME
- self.PATH_STUDY=configuration.PATH_STUDY
+ def gener(self,obj,format='brut',config=None):
+ self.config=config
self.dictMCVal={}
self.listeTemp=[]
self.text=PythonGenerator.gener(self,obj,format)
self.generePythonMap()
return self.text
- def generRUN(self,obj,format='brut',configuration=None):
- self.PATH_PYGMEE=configuration.PATH_PYGMEE
- self.PATH_BENHUR=configuration.PATH_BENHUR
- self.PATH_ASTER=configuration.PATH_ASTER
- self.PATH_MODULE=configuration.PATH_MODULE
- self.NAME_SCHEME=configuration.NAME_SCHEME
- self.PATH_STUDY=configuration.PATH_STUDY
+ def generRUN(self,obj,format='brut',config=None):
self.dictMCVal={}
self.listeTemp=[]
self.text=PythonGenerator.gener(self,obj,format)
txt=txt+str(dicoPygmee[mot])+"\n"
if ('_PYGMEE_LANCEMENT' in dicoPygmee.keys()) and dicoPygmee['_PYGMEE_LANCEMENT'] == 'oui':
+ print txt
return txt
else :
return ""
def BENHUR(self) :
print "Generation de BENHUR"
dicoBenhur=self.dictMCVal["BENHUR"]
- finesse=str(dicoBenhur['_BENHUR_FINESSE'])
-
- nom_fichier_BHR=self.PATH_STUDY+"/"+self.NAME_SCHEME+"_benhur_"+finesse+".bhr"
-
if ("PYGMEE" in self.dictMCVal.keys()) and '_PYGMEE_TAILLE' in self.dictMCVal['PYGMEE']:
- taille_VER=self.dictMCVal["PYGMEE"]['_PYGMEE_TAILLE']
+ dicoBenhur["_PYGMEE_TAILLE"]=self.dictMCVal["PYGMEE"]['_PYGMEE_TAILLE']
else :
- taille_VER=0
+ dicoBenhur["_PYGMEE_TAILLE"]=0
print "Attention la variable Taille_VER non definie"
-
- nom_etude=self.PATH_STUDY+"/"+self.NAME_SCHEME+"_benhur_"+finesse
- nom_GMSH_in=self.PATH_BENHUR+"/regular_mesh_3D_"+finesse+".msh"
- nom_GMSH_out=nom_etude+".msh"
- nom_GMSH_in="regular_mesh_3D_"+finesse+".msh"
- nom_GMSH_out=nom_etude+".msh"
- nom_LOG=nom_etude+".log"
- nom_BMP=nom_etude+".bmp"
- nom_LEVELSET=nom_etude+"_levelset.txt"
- nom_GMSH_out=nom_etude+".msh"
- nom_LOG=nom_etude+".log"
- nom_BMP=nom_etude+".bmp"
- nom_LEVELSET=nom_etude+"_levelset.txt"
- nom_fichier_fuseau=self.PATH_PYGMEE+"/benhur_input.txt"
-
-
- txt="OPTIONS\n"
- txt=txt+"3D BENHUR SCALE\n"
- txt=txt+"I - Morphologie (MESSALA)\n"
- txt=txt+"1) dimension du VER cubique [m] (entree)\n"
- txt=txt+str(taille_VER)
- txt=txt+"\n2) fraction volumique seuil écrétant le fuseau (entree)\n"
- txt=txt+".11\n"
- txt=txt+"3) fichier decrivant le fuseau granulaire descendant (entree)\n"
- txt=txt+"-\n"
- txt=txt+"4) fichier decrivant la position et la taille des boules (sortie)\n"
- txt=txt+nom_fichier_fuseau
- txt=txt+"\n5) fichier CAO de la morphologie (sortie)\n"
- txt=txt+"-\n"
- txt=txt+"6) facteur de correction de fraction volumique (entree)\n"
- txt=txt+"1.0\n"
- txt=txt+" \n"
- txt=txt+"II - Maillage (BENHUR)\n"
- txt=txt+"1) fichier entree décrivant le maillage support (entree)\n"
- txt=txt+nom_GMSH_in
- txt=txt+"\n2) fichier sortie du maillage (sortie)\n"
- txt=txt+nom_GMSH_out
- txt=txt+"\n3) fichier commentaire sur les statistiques décrivant le maillage (sortie)\n"
- txt=txt+nom_LOG
- txt=txt+"\n4) fichier BMP décrivant une coupe binarisée du VER (sortie)\n"
- txt=txt+nom_BMP
- txt=txt+"\n5) fichier TXT donnant la level set du contour aux noeuds (sortie)\n"
- txt=txt+nom_LEVELSET
- txt=txt+"\n\n\n"
-
+
+ nom_fichier_BHR=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"_benhur_"+str(dicoBenhur["_BENHUR_FINESSE"])+".bhr"
+
+ #Lecture du fichier a trous
+ f = file(self.config.REPINI+"/benhur_pygmee.txt","r")
+ chaine = f.read()
+ f.close()
+ chaine2=self.remplaceCONFIG(chaine)
+ chaine=self.remplaceDICO(chaine2,dicoBenhur)
if ('_BENHUR_LANCEMENT' in dicoBenhur.keys()) and dicoBenhur['_BENHUR_LANCEMENT'] == 'oui':
- return(nom_fichier_BHR,txt)
+ return(nom_fichier_BHR,chaine)
else:
return ""
+ def remplaceCONFIG(self,chaine) :
+ for mot in CONFIGliste :
+ rplact="%_"+mot+"%"
+ result=chaine.replace(rplact,self.config.__dict__[mot])
+ chaine=result
+ return chaine
+
+ def remplaceDICO(self,chaine,dico) :
+ for mot in dico.keys() :
+ rplact="%"+mot+"%"
+ result=chaine.replace(rplact,str(dico[mot]))
+ print rplact
+ print str(dico[mot])
+ chaine=result
+ return chaine
+
+
def ASTER(self) :
print "Generation de ASTER"
dicoAster=self.dictMCVal["ASTER"]
- nom_racine=self.PATH_MODULE+"/"+self.NAME_SCHEME+"/"+self.NAME_SCHEME
+ nom_racine=self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME
nom_mat=nom_racine+"_aster.mat"
lambda_matrice=self.dictMCVal["ASTER"]['_ASTER_CONDUCTIVITE_M']
lambda_inclusions=self.dictMCVal["ASTER"]['_ASTER_CONDUCTIVITE_I']
f.write("\n")
f.close()
if ('_ASTER_LANCEMENT' in dicoAster.keys()) and dicoAster['_ASTER_LANCEMENT'] == 'oui':
- commande="cd "+self.PATH_MODULE+";"
- commande=commande + self.PATH_ASTER + "/as_run "+self.PATH_MODULE+"/"+self.NAME_SCHEME+"/"+self.NAME_SCHEME+"_aster.export"
+ commande="cd "+self.config.PATH_MODULE+";"
+ commande=commande + self.config.PATH_ASTER + "/as_run "+self.config.PATH_MODULE
+ commande=commande + "/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.export"
print commande
os.system(commande)
else:
print "Generation de GMSH"
dicoGmsh=self.dictMCVal["GMSH"]
if ('_GMSH_LANCEMENT' in dicoGmsh.keys()) and dicoGmsh['_GMSH_LANCEMENT'] == 'oui':
- commande="cd "+self.PATH_MODULE+";"
- commande=commande + "gmsh "+self.PATH_MODULE+"/"+self.NAME_SCHEME+"/"+self.NAME_SCHEME+"_aster.resu.msh"
+ commande="cd "+self.config.PATH_MODULE+";"
+ commande=commande + "gmsh "+self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.resu.msh"
print commande
os.system(commande)
else: