From: pascale.noyret Date: Tue, 3 May 2016 16:00:39 +0000 (+0200) Subject: Telemac 1eres lectures/ecriture X-Git-Tag: V8_1_0~30 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=8d6ce12b081f174c0f8916249cd81f0e0281c83b;p=tools%2Feficas.git Telemac 1eres lectures/ecriture --- diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index aeee88c6..346d8779 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -215,7 +215,7 @@ class JDCEditor(Ui_baseWidget,QWidget): - if jdc_item: + if jdc_item and self.appliEficas.ssIhm==False: self.tree = browser.JDCTree( jdc_item, self ) self.appliEficas.construitMenu() self.saveSplitterSizes() @@ -1139,8 +1139,7 @@ class JDCEditor(Ui_baseWidget,QWidget): newName = None fn = self.fichier if self.fichier is None or saveas: - if path is None: - path=self.CONFIGURATION.savedir + if path is None: path=self.CONFIGURATION.savedir bOK, fn=self.determineNomFichier(path,extension) if bOK == 0 : return (0, None) if fn == None : return (0, None) diff --git a/InterfaceQT4/eficas_go.py b/InterfaceQT4/eficas_go.py index 3416834e..3d8e098d 100644 --- a/InterfaceQT4/eficas_go.py +++ b/InterfaceQT4/eficas_go.py @@ -92,11 +92,24 @@ def lance_eficas_ssIhm_cherche_cr(code=None,fichier=None,ssCode=None,version=Non monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version) print monEditeur.jdc.cr -def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None): +def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,ou=None,cr=False): monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version) - print fichier - fileName=fichier.split(".")[0]+"_reecrit.comm" + if ou == None : + fileName=fichier.split(".")[0]+"_reecrit.comm" + fn=fichier.split(".")[0]+"_cr.txt" + else : + f=fichier.split(".")[0]+"_reecrit.comm" + f1=os.path.basename(f) + fn=fichier.split(".")[0]+"_cr.txt" + f2=os.path.basename(fn) + fileName=os.path.join(ou,f1) + fileCr=os.path.join(ou,f2) monEditeur.saveFileAs(fileName=fileName) + if cr: + f = open(fileCr, 'wb') + f.write(str(monEditeur.jdc.report())) + f.close() + def lance_eficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_STUDY'): """ diff --git a/Telemac/Telemac_Cata.py b/Telemac/Telemac_Cata.py index dd3b1f07..32b4de09 100644 --- a/Telemac/Telemac_Cata.py +++ b/Telemac/Telemac_Cata.py @@ -1,6 +1,7 @@ # coding: utf-8 from Accas import * + class DateJJMMAAAA: def __init__(self): self.ntuple=3 diff --git a/Telemac/prefs_TELEMAC.py b/Telemac/prefs_TELEMAC.py index fe1e1193..056b9d2e 100644 --- a/Telemac/prefs_TELEMAC.py +++ b/Telemac/prefs_TELEMAC.py @@ -37,8 +37,8 @@ docPath=repIni # catalogues=( #('TELEMAC','default',os.path.join(repIni,'Telemac_Cata_nouveau.py'),'TELEMAC','python'), - ('TELEMAC','comm',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','python'), - #('TELEMAC','cas',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','TELEMAC'), + ('TELEMAC','cas',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','TELEMAC'), + #('TELEMAC','comm',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','python'), ) mode_nouv_commande="figee" affiche = "ordre" diff --git a/Telemac/reecrit_comm.py b/Telemac/reecrit_comm.py new file mode 100755 index 00000000..5d613f06 --- /dev/null +++ b/Telemac/reecrit_comm.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +""" + Ce module sert a lancer EFICAS configure pour Code_Aster +""" +# Modules Python +import sys,os + +# Modules Eficas +import prefs +if hasattr(prefs,'encoding'): + # Hack pour changer le codage par defaut des strings + import sys + reload(sys) + sys.setdefaultencoding(prefs.encoding) + del sys.setdefaultencoding + # Fin hack + + +sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) +from InterfaceQT4 import eficas_go + +import subprocess as sub +p = sub.Popen(['ls','baseCasTestFrancais'],stdout=sub.PIPE,stderr=sub.PIPE) +output, errors = p.communicate() +for f in output.split('\n') : +#for f in ('t2d_breach.cas',) : + if f == ' ' : continue + print "Traitement de : ", f + print "_______________________________________" + + # on veut ouvrir un fichier directement au lancement d'Eficas + eficas_go.lance_eficas_ssIhm_reecrit(code='TELEMAC',fichier = 'baseCasTestFrancais/'+f,ou = 'essaiCom',cr=True) + print "________________________________________" diff --git a/convert/convert_TELEMAC.py b/convert/convert_TELEMAC.py index bbe02638..121bd5b7 100644 --- a/convert/convert_TELEMAC.py +++ b/convert/convert_TELEMAC.py @@ -18,12 +18,6 @@ # import re, string from Extensions.i18n import tr -#from Accas import * -print "je pas ssssssssssssssssssssss" -#poum -#import Accas -#print Accas -#print dir(Accas) from convert_python import PythonParser @@ -38,12 +32,14 @@ pattern_listeVide = re.compile(r"^\s*'\s*'\s*$") pattern_ligne=re.compile(r'^\s*(?P[^=:]*)\s*[:=]\s*(?P.*)$') +pattern_variables=re.compile (r"^\s*(?PVARIABLES POUR LES SORTIES GRAPHIQUES)\s*[:=]\s*(?P\w(,\w)*)\s*(?P.*)$") + # Attention aux listes de flottants pattern_liste=re.compile(r'^\s*(?P[+-.\w]+(\s*;\s*[+-.\w]+)+)\s*(?P.*)$') pattern_flottant=re.compile(r'^\s*(?P[+-]?((\d+(\.\d*)?)|(\.\d+))([dDeE][+-]?\d+)?)\s*(?P.*)$') pattern_texteQuote = re.compile (r"^\s*(?P'[^']+(''[^']+)*')\s*(?P.*)$") pattern_texteSimple = re.compile (r"(?P(^|\s)\s*[\w\.-]+)\s*(?P.*)$") -pattern_texteVide = re.compile (r"^\s*(?P'')\s*(?P.*)$") +pattern_texteVide = re.compile (r"^\s*(?P'')\s*(?P.*)$") pattern_ContientDouble=re.compile (r"^.*''.*$") @@ -113,11 +109,19 @@ class TELEMACParser(PythonParser): #print finLigne if pattern_comment_slash.match(finLigne) : finLigne=""; continue valeur="" + if pattern_variables.match(finLigne) : + m=pattern_variables.match(finLigne) + valeur=m.group('valeur') + simp=self.traiteIdent(m.group('ident')) + finLigne=m.group('reste') + self.dictSimp[simp]=valeur + continue + m=pattern_ligne.match(finLigne) if m == None : - print "________________________________________________" + #print "________________________________________________" print 'pb avec ****', finLigne , '**** dans ', ligne - print "________________________________________________" + #print "________________________________________________" break simp=self.traiteIdent(m.group('ident')) @@ -135,10 +139,10 @@ class TELEMACParser(PythonParser): elif pattern_texteSimple.match(finLigne): m=pattern_texteSimple.match(finLigne) else : - print "________________________________________________" + #print "________________________________________________" print 'pb avec ****', finLigne , '**** dans ', ligne print "non match" - print "________________________________________________" + #print "________________________________________________" break valeur=m.group('valeur') @@ -173,7 +177,7 @@ class TELEMACParser(PythonParser): print "************" print "pb avec dans dicoInverseFrancais", simp,'------' print "************" - print poum + #print poum continue listeGenea=self.dicoInverseFrancais[simp] listeGeneaReverse=[] @@ -204,7 +208,7 @@ class TELEMACParser(PythonParser): #print "----------- " - print self.textePy + #print self.textePy return self.textePy #---------------------------------------- @@ -248,14 +252,14 @@ class TELEMACParser(PythonParser): if k not in self.dicoMC.keys() : kA=self.dicoFrancaisAnglais[k] else : kA=k obj=self.dicoMC[kA] - if isinstance(obj,A_FACT.FACT): self.generFACT(obj,kA,valeur) - elif isinstance(obj,A_BLOC.BLOC): self.generBLOC(obj,kA,valeur) - elif isinstance(obj,A_SIMP.SIMP): self.generSIMP(obj,kA,valeur) - else : print "%%%%%%%%%%%\n", "pb generation pour", k, obj, "\n%%%%%%%%%%%" + if isinstance(obj,A_FACT.FACT): self.convertFACT(obj,kA,valeur) + elif isinstance(obj,A_BLOC.BLOC): self.convertBLOC(obj,kA,valeur) + elif isinstance(obj,A_SIMP.SIMP): self.convertSIMP(obj,kA,valeur) + else : print "%%%%%%%%%%%\n", "pb conversion type pour", k, obj, "\n%%%%%%%%%%%" #print "_____________" - def generFACT(self,obj,nom,valeur): + def convertFACT(self,obj,nom,valeur): if nom in TELEMACParser.__dict__.keys() : apply(TELEMACParser.__dict__[nom],(self,)) return @@ -264,15 +268,12 @@ class TELEMACParser(PythonParser): self.textePy += '),\n' - def generBLOC(self,obj,nom,valeur): + def convertBLOC(self,obj,nom,valeur): print "BLOC " print nom - def generSIMP(self,obj,nom,valeur): + def convertSIMP(self,obj,nom,valeur): if nom in ("Prescribed_Flowrates", "Prescribed_Velocities", "Prescribed_Elevations" ): return - print "___________________________" - print nom - print valeur if obj.max==1 : if hasattr(obj.type[0],'ntuple') : lval=[] @@ -310,6 +311,7 @@ class TELEMACParser(PythonParser): if obj.into != [] and obj.into != None and not('R' in obj.type) and not('I' in obj.type): for possible in obj.into : + try : if possible.upper() == valeur.upper(): valeur=possible break @@ -318,6 +320,8 @@ class TELEMACParser(PythonParser): if possible.upper() == v2.upper(): valeur=possible break + except: + print "pb avec le type de ", obj.nom, obj.type, 'et la valeur ', valeur if 'Fichier' in obj.type or 'TXM' in obj.type or 'Repertoire' in obj.type : valeur=str(valeur) diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 1a028a64..614a82c7 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -84,6 +84,7 @@ class TELEMACGenerator(PythonGenerator): #---------------------------------------------------------------------------------------- def writeDefault(self,fn) : + self.texteDico+='\n&ETA\n' fileDico = fn[:fn.rfind(".")] + '.py' f = open( str(fileDico), 'wb') f.write( self.texteDico ) @@ -108,9 +109,9 @@ class TELEMACGenerator(PythonGenerator): """recuperation de l objet MCSIMP""" s=PythonGenerator.generMCSIMP(self,obj) if obj.nom == "Title" : - print s + #print s print str(obj.valeur) - print repr(obj.valeur) + #print repr(obj.valeur) # Attention pas sur --> ds certains cas non traite par MCFACT ? @@ -125,14 +126,14 @@ class TELEMACGenerator(PythonGenerator): sTelemac=s[0:-1] if not( type(obj.valeur) in (types.TupleType,types.ListType) ): if obj.nom in DicoEnumCasEnInverse.keys(): - try : sTelemac=DicoEnumCasEnInverse[obj.nom][obj.valeur] - except : print "generMCSIMP Pb avec ", obj.nom, obj.valeur + try : sTelemac=str(DicoEnumCasEnInverse[obj.nom][obj.valeur]) + except : print "generMCSIMP Pb valeur avec ", obj.nom, obj.valeur if type(obj.valeur) in (types.TupleType,types.ListType) : if obj.nom in DicoEnumCasEnInverse.keys(): sT = "'" for v in obj.valeur: - try : sT +=DicoEnumCasEnInverse[obj.nom][v] +";" - except : print "generMCSIMP Pb avec ", obj.nom, v + try : sT +=str(DicoEnumCasEnInverse[obj.nom][v]) +";" + except : print "generMCSIMP Pb Tuple avec ", obj.nom, v, obj.valeur sTelemac=sT[0:-1]+"'" if nom in DicoEficasToCas.keys() : nom=DicoEficasToCas[nom]