]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
Ajout d un fichier exemple de transformation Comm2Xml2Comm
authorEric Fayolle <eric.fayolle@edf.fr>
Thu, 31 Mar 2022 20:55:47 +0000 (22:55 +0200)
committerEric Fayolle <eric.fayolle@edf.fr>
Fri, 8 Apr 2022 08:44:07 +0000 (10:44 +0200)
ReacteurNumerique/exempleComm2Xml2Comm.py [new file with mode: 0755]

diff --git a/ReacteurNumerique/exempleComm2Xml2Comm.py b/ReacteurNumerique/exempleComm2Xml2Comm.py
new file mode 100755 (executable)
index 0000000..7428017
--- /dev/null
@@ -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