From d7d352f2edee4717933ba30c9aaf7230bdb1c03d Mon Sep 17 00:00:00 2001 From: Eric Fayolle Date: Thu, 31 Mar 2022 22:55:47 +0200 Subject: [PATCH] Ajout d un fichier exemple de transformation Comm2Xml2Comm --- ReacteurNumerique/exempleComm2Xml2Comm.py | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 ReacteurNumerique/exempleComm2Xml2Comm.py diff --git a/ReacteurNumerique/exempleComm2Xml2Comm.py b/ReacteurNumerique/exempleComm2Xml2Comm.py new file mode 100755 index 00000000..7428017a --- /dev/null +++ b/ReacteurNumerique/exempleComm2Xml2Comm.py @@ -0,0 +1,57 @@ +# fichier exemple pour modifier initial_power +# Modules Python +# Modules Eficas +# la on peut mettre le EFICAS_DIR + +import sys,os +sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) +from InterfaceQT4.editorSsIhm import JDCEditorSsIhm +from InterfaceQT4.eficas_go import getEficasSsIhm + +fichierXMLOut = "modified_edg_REP1300_FULL.xml" +fichierCommOut = "modified_edg_REP1300_FULL.comm" + +### LECTURE DU .comm ### +# Le catalogue est trouvé dans le pref_ReacteurNumerique.py +monEficasSsIhm = getEficasSsIhm(code="ReacteurNumerique", forceXML=True) +monEditeur = JDCEditorSsIhm(monEficasSsIhm,"edg_REP1300_FULL.comm") + +if not(monEditeur.jdc.isValid()): + print ('.comm file is not valid');exit() + +### CREATION DU .xml CORRESPONDANT ### +monEditeur.XMLGenerator.gener(monEditeur.jdc) +# docXML=monEditeur.XMLGenerator.texteXML +# print(docXML) + +### GESTION DU .xml EN MÉMOIRE PAR PYXB ### +#On passe le document XML généré à partir du .comm à pyxb pour créer le Binding python des éléments +#A instruire : l'import est placé ici car placé en tete cela pose un conflit avec le driver chargé par eficas +import cata_RN_EDG_driver as mdm + +jdd = mdm.CreateFromDocument(monEditeur.XMLGenerator.texteXML) +print(jdd.toDOM().toprettyxml()) + +# cf exempleLectureObjetPyxb.py + +### MODIFICATION DU .xml EN UTILISANT LES BINDINGS PYXB ### +initial_inlet_pressure = jdd.Scenario_data[0].initial_inlet_pressure +print('initial_inlet_pressure is : ',initial_inlet_pressure) +sd0=jdd.Scenario_data[0] +sd0.initial_inlet_pressure = sd0.initial_inlet_pressure+0.1 +# Ne pas écrire initial_inlet_pressure+=0.1 sinon l'initial_inlet_pressure n'est plus un objet pyxb mais un double +# --> sd0.initial_inlet_pressure est une property qui accède à l'attribut pyxb correctement +print('initial_inlet_pressure is now : ',sd0.initial_inlet_pressure) + +### SAUVEGARDE DU .xml CORRESPONDANT ### +#with open(fichierXMLOut,"w") as ofile: ofile.write(jdd.toxml()) +with open(fichierXMLOut,"w") as ofile: ofile.write(jdd.toDOM().toprettyxml()) + +### LECTURE DU .xml PAR EFICAS ET GENERATION DU NOUVEAU .comm ### +monEditeur = JDCEditorSsIhm(monEficasSsIhm,fichierXMLOut) +monEditeur.pythonGenerator.gener(monEditeur.jdc,format = 'beautifie') +monEditeur.pythonGenerator.writeFile(fichierCommOut) + + +## Si l'étape XML n'est pas voulue, il est évidement possible de le faire directement avec eficas +# cf: exempleLectureObjetPython.py -- 2.39.2