From 0c33a6c5b2effbaf5cf12b1a63916bf5da8f887c Mon Sep 17 00:00:00 2001 From: YOANN AUDOUIN Date: Mon, 30 Nov 2020 15:15:14 +0100 Subject: [PATCH] [telemac] Corrections pour telemac --- InterfaceQT4/editorSsIhm.py | 15 +++--- InterfaceQT4/viewManagerSsIhm.py | 18 +++---- Telemac/CMakeLists.txt | 12 +++++ Telemac/prefs_TELEMAC.py | 26 ++--------- convert/convert_TELEMAC.py | 80 ++++++-------------------------- generator/generator_TELEMAC.py | 25 ++++++---- 6 files changed, 66 insertions(+), 110 deletions(-) diff --git a/InterfaceQT4/editorSsIhm.py b/InterfaceQT4/editorSsIhm.py index d6f8b9d4..cdf8db47 100755 --- a/InterfaceQT4/editorSsIhm.py +++ b/InterfaceQT4/editorSsIhm.py @@ -123,7 +123,7 @@ class JDCEditorSsIhm : self.maConfiguration.mesconvertisseurs = convert try : self.XMLgenerator=generator.plugins['xml']() except : self.XMLgenerator=None - + if self.formatFichierOut in generator.plugins.keys(): self.generator = generator.plugins[self.formatFichierOut]() @@ -145,8 +145,9 @@ class JDCEditorSsIhm : try : #if 1 : self.jdc = self.readFile(self.fichier) - except : + except Exception as e: print ("mauvaise lecture du fichier") + print(e) if self.salome : try : self.appliEficas.addJdcInSalome( self.fichier) except : print ("mauvais enregistrement dans Salome") @@ -168,7 +169,7 @@ class JDCEditorSsIhm : self.jdc.lang = self.appliEficas.langue self.jdc.aReafficher=False txt_exception = None - if not jdc: + if not jdc: if self.extensionFichier == '.xml' : if self.appliEficas.maConfiguration.withXSD: self.jdc.analyseXML() else : print ('run MDM with -x option (MDM for XML)'); exit() @@ -266,7 +267,7 @@ class JDCEditorSsIhm : if units is not None: jdc.recorded_units=units jdc.old_recorded_units=units - # chgt le 15/10/19 + # chgt le 15/10/19 # Attention positionne contexte ? # est ce qu on ne doit pas changer le format en Accas si on vient d accas ? jdc.editor=self @@ -378,7 +379,7 @@ class JDCEditorSsIhm : def viewJdcRegles(self): #-----------------------# # on ajoute les regles - texte_global, test_global = self.jdc.verifRegles() + texte_global, test_global = self.jdc.verifRegles() self._viewText(texte_global, "JDC_REGLES") #-----------------------# @@ -437,7 +438,7 @@ class JDCEditorSsIhm : print('Sauvegarde du Fichier', 'Le fichier'+str(fn) + 'n a pas pu etre sauvegarde :' , str(why)) self.afficheInfos('Le fichier'+str(fn) + 'n a pas pu etre sauvegarde ' , 'red') return 0 - + #-----------------------------------------------------------# def getTextJDC(self,format = None,pourRun=0,formatLigne="beautifie"): @@ -493,7 +494,7 @@ class JDCEditorSsIhm : hash_checksum.update(newtexte.encode('utf-8')) checksum = hash_checksum.hexdigest() ligne = ligne="#CHECKSUM:"+checksum+":FIN CHECKSUM" - except : + except : try : newtexte=texte.replace('"','\\"') commande='echo "'+newtexte+'"|md5sum' diff --git a/InterfaceQT4/viewManagerSsIhm.py b/InterfaceQT4/viewManagerSsIhm.py index 030f86a8..e115c544 100644 --- a/InterfaceQT4/viewManagerSsIhm.py +++ b/InterfaceQT4/viewManagerSsIhm.py @@ -79,7 +79,7 @@ class MyViewManagerSsIhm(object): #-------------------------------- # Symetrique de ViewManager mais pas d heritage entre les 2 # dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille -# ici en revanche.... c est moins sur . voir avec le fichier +# ici en revanche.... c est moins sur . voir avec le fichier # -------------------------------- def __init__(self,appliEficas): @@ -95,7 +95,7 @@ class MyViewManagerSsIhm(object): def handleOpen(self,fichier=None, units=None): # ------------------------------------------------------ result = None - if fichier is None: + if fichier is None: print ('nom de fichier obligatoire') return None @@ -124,7 +124,7 @@ class MyViewManagerSsIhm(object): self.dictEditors[monHandler]=editor return monHandler else: - print ('impossible de construire le jdc') + print ('impossible de construire le jdc') return None # -------------------------------------------------------------------------------- @@ -166,7 +166,7 @@ class MyViewManagerSsIhm(object): # --------------------------------------------- def handleViewJdcSource(self,handler): # --------------------------------------------- - print (handler) + #print (handler) if not (handler in self.dictEditors) : print ('editor non trouve') return @@ -176,7 +176,7 @@ class MyViewManagerSsIhm(object): # --------------------------------------------- def handleViewJdcRapport(self,handler): # --------------------------------------------- - print (handler) + #print (handler) if not (handler in self.dictEditors) : print ('editor non trouve') return @@ -193,7 +193,7 @@ class MyViewManagerSsIhm(object): # --------------------------------------------- def handleViewJdcRapport(self,handler): # --------------------------------------------- - print (handler) + #print (handler) if not (handler in self.dictEditors) : print ('editor non trouve') return @@ -203,7 +203,7 @@ class MyViewManagerSsIhm(object): # --------------------------------------------- def generDico(self,handler): # --------------------------------------------- - print (handler) + #print (handler) if not (handler in self.dictEditors) : print ('editor non trouve') return @@ -213,7 +213,7 @@ class MyViewManagerSsIhm(object): # --------------------------------------------- def isJdcValid(self,handler): # --------------------------------------------- - print (handler) + #print (handler) if not (handler in self.dictEditors) : print ('editor non trouve') return @@ -223,7 +223,7 @@ class MyViewManagerSsIhm(object): # --------------------------------------------- def fileSaveAs(self,handler,fileName): # --------------------------------------------- - print (handler) + #print (handler) if not (handler in self.dictEditors) : print ('editor non trouve') return diff --git a/Telemac/CMakeLists.txt b/Telemac/CMakeLists.txt index ab237d8c..831eba38 100644 --- a/Telemac/CMakeLists.txt +++ b/Telemac/CMakeLists.txt @@ -70,6 +70,18 @@ install ( FILES aideAuxConvertisseurs.py waqtel_labelCataToIhm_en.qm waqtel_labelCataToIhm_fr.qm waqtel_cata_auto.py + gaia_dicoCasEnToCata.py + gaia_dicoCasFrToCata.py + gaia_enum_auto.py + gaia_labelCataToIhm_en.qm + gaia_labelCataToIhm_fr.qm + gaia_cata_auto.py + khione_dicoCasEnToCata.py + khione_dicoCasFrToCata.py + khione_enum_auto.py + khione_labelCataToIhm_en.qm + khione_labelCataToIhm_fr.qm + khione_cata_auto.py prefs.py prefs_TELEMAC.py properties.py diff --git a/Telemac/prefs_TELEMAC.py b/Telemac/prefs_TELEMAC.py index 622b68bb..89f12253 100644 --- a/Telemac/prefs_TELEMAC.py +++ b/Telemac/prefs_TELEMAC.py @@ -35,20 +35,8 @@ lang = 'ang' # Codage des strings qui accepte les accents (en remplacement de 'ascii') encoding = 'iso-8859-1' -docPath = repIni -try: - import TelApy - rep_cata = os.path.join(os.environ['HOMETEL'], - 'scripts', - 'python27', - 'eficas') -except ImportError as excp: - print('Using eficas local catalog') - rep_cata = repIni -except Exception as excep: - print("Missing HOMETEL in environment") - rep_cata = repIni +rep_cata = repIni cata_telemac = { 'telemac2d': os.path.join(rep_cata, 'telemac2d_cata_auto.py'), @@ -59,8 +47,8 @@ cata_telemac = { 'waqtel': os.path.join(rep_cata, 'waqtel_cata_auto.py'), 'stbtel': os.path.join(rep_cata, 'stbtel_cata_auto.py'), 'postel3d': os.path.join(rep_cata, 'postel3d_cata_auto.py'), + 'gaia': os.path.join(rep_cata, 'gaia_cata_auto.py'), } -print(cata_telemac) translator_telemac = {\ 'telemac2d': os.path.join(rep_cata, 'telemac2d_labelCataToIhm'), @@ -71,12 +59,10 @@ translator_telemac = {\ 'waqtel': os.path.join(rep_cata, 'waqtel_labelCataToIhm'), 'stbtel': os.path.join(rep_cata, 'stbtel_labelCataToIhm'), 'postel3d': os.path.join(rep_cata, 'postel3d_labelCataToIhm'), + 'gaia': os.path.join(rep_cata, 'gaia_labelCataToIhm'), } # catalogues = (\ - #('TELEMAC','default',os.path.join(repIni,'Telemac_Cata_nouveau.py'),'TELEMAC','python'), - #('TELEMAC','cas',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','TELEMAC'), - #('2D','cas',os.path.join(repIni,'Telemac2d_Cata_auto.py'),'TELEMAC','TELEMAC'), ('TELEMAC', 'telemac2d', cata_telemac['telemac2d'], 'TELEMAC', 'TELEMAC'), ('TELEMAC', 'telemac3d', cata_telemac['telemac3d'], 'TELEMAC', 'TELEMAC'), ('TELEMAC', 'tomawac', cata_telemac['tomawac'], 'TELEMAC', 'TELEMAC'), @@ -85,10 +71,7 @@ catalogues = (\ ('TELEMAC', 'waqtel', cata_telemac['waqtel'], 'TELEMAC', 'TELEMAC'), ('TELEMAC', 'stbtel', cata_telemac['stbtel'], 'TELEMAC', 'TELEMAC'), ('TELEMAC', 'postel3d', cata_telemac['postel3d'], 'TELEMAC', 'TELEMAC'), - #('2222D','cas',os.path.join(repIni,'telemac2d_V6_cata.py'),'TELEMAC','TELEMAC'), - #('TELEMAC','cas',os.path.join(repIni,'Telemac_Cata.py'),'python','TELEMAC3'), - #('YOANN', 'cas', os.path.join(repIni, 'Cata.py'), 'TELEMAC', 'TELEMAC'), - #('TELEMAC','comm',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC2','python'), + ('TELEMAC', 'gaia', cata_telemac['gaia'], 'TELEMAC', 'TELEMAC'), ) mode_nouv_commande = "figee" affiche = "ordre" @@ -101,5 +84,6 @@ translatorFichier_sisyphe = translator_telemac['sisyphe'] translatorFichier_waqtel = translator_telemac['waqtel'] translatorFichier_stbtel = translator_telemac['stbtel'] translatorFichier_postel3d = translator_telemac['postel3d'] +translatorFichier_gaia = translator_telemac['gaia'] closeFrameRecherche = True differencieSiDefaut = True diff --git a/convert/convert_TELEMAC.py b/convert/convert_TELEMAC.py index b77b3639..1e2ea8a3 100644 --- a/convert/convert_TELEMAC.py +++ b/convert/convert_TELEMAC.py @@ -45,17 +45,17 @@ pattern_finit_par_virgule_ou_affect=re.compile(r'^.*(,|;|=|:)\s*$') pattern_ligne=re.compile(r'^\s*(?P[^=:]*)\s*[:=]\s*(?P.*)$') -pattern_variables=re.compile (r"^\s*(?PVARIABLES FOR GRAPHIC PRINTOUTS|VARIABLES POUR LES SORTIES GRAPHIQUES)\s*[:=]\s*(?P[A-Za-z]+(\d*|\*)(,[A-Za-z]+(\d*|\*))*)\s*(?P.*)$") +pattern_variables=re.compile(r"^\s*(?PC_VSM_PRINTOUT_SELECTION|COUPLAGE AVEC|COUPLING WITH|VARIABLES FOR GRAPHIC PRINTOUTS|VARIABLES POUR LES SORTIES GRAPHIQUES|VARIABLES TO BE PRINTED|VARIABLES A IMPRIMER|VARIABLES FOR 3D GRAPHIC PRINTOUTS|VARIABLES POUR LES SORTIES GRAPHIQUES 3D|VARIABLES POUR LES SORTIES GRAPHIQUES 2D|VARIABLES FOR 2D GRAPHIC PRINTOUTS)\s*[:=]\s*(?P[']?)(?P[A-Za-z]+(\d*|\*)([,;][A-Za-z]+(\d*|\*))*)\s*(?P=quote)(?P.*)$") # Attention aux listes de flottants pattern_liste=re.compile(r'^\s*(?P[+-.\w]+(\s*;\s*[+-.\w]+)+)\s*(?P.*)$') pattern_liste_texte=re.compile(r"^\s*(?P('.*(';\s*))+('.*'\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_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_ContientDouble=re.compile (r"^.*''.*$") +pattern_ContientDouble=re.compile(r"^.*''.*$") # le pattern texte reconnait #nom1 nom 2 : ou = chaine entre ' @@ -90,7 +90,7 @@ class TELEMACparser(Pythonparser): a file with a different or inexistent definition of variables. """ - + def convert(self, outformat, appliEficas=None): @@ -108,13 +108,13 @@ class TELEMACparser(Pythonparser): self.TelemacdicoEn = appliEficas.readercata.TelemacdicoEn except : self.TelemacdicoEn = {} - print ('pas de TelemacdicoEn') + print('pas de TelemacdicoEn') try : self.DicoEnumCasFrToEnumCasEn = appliEficas.readercata.DicoEnumCasFrToEnumCasEn except : self.DicoEnumCasFrToEnumCasEn = {} print ('pas de DicoEnumCasFrToEnumCasEn') - + if appliEficas.langue=='fr' : #from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn @@ -190,7 +190,13 @@ class TELEMACparser(Pythonparser): if pattern_variables.match(finLigne) : m=pattern_variables.match(finLigne) simpCas=self.traiteIdent(m.group('ident')) - valeur=m.group('valeur') + if simpCas in ["COUPLING WITH", "COUPLAGE AVEC"]: + if "," in m.group('valeur'): + valeur=m.group('valeur').split(",") + else: + valeur=m.group('valeur').split(";") + else: + valeur=m.group('valeur') finLigne=m.group('reste') self.dictSimp[simpCas]=valeur continue @@ -474,59 +480,3 @@ class TELEMACparser(Pythonparser): #listeOut.insert(i,kF) listeOut.insert(i,k) return listeOut - -# def BOUNDARY_CONDITIONS(self): -# texte_Boundaries="BOUNDARY_CONDITIONS=_F(LIQUID_BOUNDARIES=( " -# if 'PRESCRIBED_ELEVATIONS' in self.dictSimp: -# valeursPE=self.dictSimp["PRESCRIBED_ELEVATIONS"] -# if not type(valeursPE)==list : valeursPE = (valeursPE,) -# longueur=len(self.dictSimp["PRESCRIBED_ELEVATIONS"]) -# else : valeursPE=None -# if 'PRESCRIBED_FLOWRATES' in self.dictSimp: -# valeursPF=self.dictSimp["PRESCRIBED_FLOWRATES"] -# if not type(valeursPF)==list : valeursPF = (valeursPF,) -# longueur=len(self.dictSimp["PRESCRIBED_FLOWRATES"]) -# else : valeursPF=None -# if 'PRESCRIBED_VELOCITIES' in self.dictSimp: -# valeursPV=self.dictSimp["PRESCRIBED_VELOCITIES"] -# if not type(valeursPV)==list : valeursPV = (valeursPV,) -# longueur=len(self.dictSimp["PRESCRIBED_VELOCITIES"]) -# else : valeursPV=None -# -# if valeursPE == None and valeursPF == None and valeursPV == None : -# texte_Boundaries +="),\n" -# return -# -# if valeursPE == None or valeursPF == None or valeursPV == None : -# listNulle=[] -# for i in range(longueur) : listNulle.append('0') -# -# -# if valeursPE == None : valeursPE = listNulle -# if valeursPF == None : valeursPF = listNulle -# if valeursPV == None : valeursPV = listNulle -# -# -# for e in range(len(valeursPE)): -# if valeursPE[e] != "" or valeursPE[e] != "\n" : -# if eval(valeursPE[e],{}) != 0 : -# texte_Boundaries += "_F(BOUNDARY_TYPE = 'Prescribed Elevations',\n" -# texte_Boundaries += "PRESCRIBED_ELEVATIONS = " + str(valeursPE[e]) + "),\n" -# continue -# -# if valeursPF[e] != "" or valeursPF[e] != "\n" : -# if eval(valeursPF[e],{}) != 0 : -# texte_Boundaries += "_F(BOUNDARY_TYPE = 'Prescribed Flowrates',\n" -# texte_Boundaries += "PRESCRIBED_FLOWRATES = " + str(valeursPF[e]) + "),\n" -# continue -# -# if valeursPV[e] != "" or valeursPV[e] != "\n" : -# if eval(valeursPV[e],{})!=0 : -# texte_Boundaries += "_F( BOUNDARY_TYPE= 'Prescribed Velocity',\n" -# texte_Boundaries += "PRESCRIBED_VELOCITIES = " + str(valeursPV[e]) + "),\n" -# continue -# print ("pb texte_Boundaries avec la valeur numero ", e) -# -# texte_Boundaries +="),)," -# self.textePy += texte_Boundaries -# diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 6935d537..096486db 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -59,12 +59,12 @@ class TELEMACGenerator(PythonGenerator): #---------------------------------------------------------------------------------------- def gener(self,obj,format='brut',config=None,appliEficas=None,statut="Leger"): - + self.statut = statut self.langue = appliEficas.langue try : self.TelemacdicoEn = appliEficas.readercata.TelemacdicoEn - except : - print ('Attention : pas de TelemacdicoEn declare') + except : + print ('Attention : pas de TelemacdicoEn declare') self.TelemacdicoEn = {} self.DicoEnumCasEnInverse = {} #from enum_Telemac2d_auto import self.TelemacdicoEn @@ -74,7 +74,7 @@ class TELEMACGenerator(PythonGenerator): valEficas = self.TelemacdicoEn[motClef][valTelemac] d[valEficas] =valTelemac self.DicoEnumCasEnInverse[motClef]=d - if self.langue == 'fr' : + if self.langue == 'fr' : #from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn self.DicoEnumCasFrToEnumCasEn = appliEficas.readercata.DicoEnumCasFrToEnumCasEn for motClef in self.DicoEnumCasFrToEnumCasEn: @@ -94,7 +94,7 @@ class TELEMACGenerator(PythonGenerator): except : print ('Attention pas de dicoCasToCata declare') self.dicoCasToCata={} - self.dicoCataToCas={} + self.dicoCataToCas={} for motClef in self.dicoCasToCata: self.dicoCataToCas[self.dicoCasToCata[motClef]]=motClef @@ -185,7 +185,7 @@ class TELEMACGenerator(PythonGenerator): #nomMajuscule=obj.nom.upper() #nom=nomMajuscule.replace('_',' ') #if nom in listeSupprime or s == "" : return s - if s == "None," : s=None + if s == "None," : s=None if s == "" or s==None : return s sTelemac=s[0:-1] @@ -241,7 +241,7 @@ class TELEMACGenerator(PythonGenerator): # cas des Tuples if obj.waitTuple() and s3 != '' and s3 != 'None': s3=s - if s3[-1] == ',': s3=s3[:-1] + if s3[-1] == ',': s3=s3[:-1] if obj.nom not in self.dicoCataToCas : @@ -249,12 +249,21 @@ class TELEMACGenerator(PythonGenerator): return s nom=self.dicoCataToCas[obj.nom] - if nom in ["VARIABLES FOR GRAPHIC PRINTOUTS", "VARIABLES POUR LES SORTIES GRAPHIQUES", "VARIABLES TO BE PRINTED","VARIABLES A IMPRIMER"] : + if nom in ["VARIABLES FOR GRAPHIC PRINTOUTS", "VARIABLES POUR LES SORTIES GRAPHIQUES", + "VARIABLES TO BE PRINTED","VARIABLES A IMPRIMER", + "VARIABLES FOR 3D GRAPHIC PRINTOUTS", "VARIABLES POUR LES SORTIES GRAPHIQUES 3D", + "VARIABLES POUR LES SORTIES GRAPHIQUES 2D", "VARIABLES FOR 2D GRAPHIC PRINTOUTS", + "C_VSM_PRINTOUT_SELECTION"]: if s3 != '' and s3 != 'None': s3=s3.replace(';',',') s3="'"+ s3 +"'" else: s3 = "''" + if nom in ["COUPLING WITH", "COUPLAGE AVEC"]: + s3 = s3.strip().replace("\n","")\ + .replace(" ", "")\ + .replace("\t", "")\ + .replace("';'", ",") if s3 == "" or s3 == " " : s3 = " " ligne=nom+ " : " + s3 + "\n" if len(ligne) > 72 : ligne=self.redecoupeLigne(nom,s3) -- 2.39.2