1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 Ce module contient le plugin generateur de fichier au format
26 import types,string,re,os
28 from generator_python import PythonGenerator
32 Retourne les informations necessaires pour le chargeur de plugins
34 Ces informations sont retournees dans un dictionnaire
39 # La factory pour creer une instance du plugin
40 'factory' : SEPGenerator,
44 class SEPGenerator(PythonGenerator):
46 Ce generateur parcourt un objet de type JDC et produit
47 un texte au format eficas et
51 # Les extensions de fichier permis?
54 def gener(self,obj,format='brut',config=None):
56 # Cette instruction génère le contenu du fichier de commandes (persistance)
57 self.text=PythonGenerator.gener(self,obj,format)
58 # Cette instruction génère le contenu du fichier de paramètres python
63 return self.texteTubePy
67 Prépare le contenu du fichier de paramètres python. Le contenu
68 peut ensuite être obtenu au moyen de la fonction getTubePy().
70 #self.__genereSEP_withVariables()
71 self.__genereSEP_withDico()
73 def __genereSEP_withVariables(self) :
75 Les paramètres sont transcrits sous forme de variables nom=valeur.
77 self.texteTubePy="# Parametres generes par Eficas \n"
78 for MC in self.dictMCVal.keys():
79 ligne = MC +"="+ repr(self.dictMCVal[MC])+'\n'
80 self.texteTubePy=self.texteTubePy+ligne
82 print self.texteTubePy
84 # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
85 fichier=os.path.join(os.path.dirname(__file__),"tube.py")
87 for ligne in f.readlines():
88 self.texteTubePy=self.texteTubePy+ligne
91 def __genereSEP_withDico(self) :
93 Les paramètres sont transcrits sous la forme d'un dictionnaire nom=valeur.
95 from Sep import properties
96 self.texteTubePy="# -*- coding: utf-8 -*-\n"
97 self.texteTubePy+="# ======================================================================================\n"
98 self.texteTubePy+="# FICHIER GENERE PAR EFICAS - OUTIL MÉTIER SOUS-EPAISSEUR - "
99 self.texteTubePy+="VERSION "+str(properties.version)+" du "+str(properties.date)+"\n"
100 self.texteTubePy+="# ======================================================================================\n"
101 self.texteTubePy+="\n"
102 self.texteTubePy+="# Parametres Utilisateur Eficas \n"
103 self.texteTubePy+="parameters={}\n"
105 for MC in self.dictMCVal.keys():
106 ligne = "parameters['"+MC+"']="+ repr(self.dictMCVal[MC])+'\n'
107 self.texteTubePy=self.texteTubePy+ligne
109 # On ajoute des paramètres de configuration pour contrôle de
110 # cohérence avec la procédure outil métier
111 self.texteTubePy+="# Parametres de Configuration Eficas \n"
112 ligne = "parameters['OMVERSION']="+str(properties.version)+"\n"
113 self.texteTubePy+=ligne
115 # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
116 self.texteTubePy+="\n"
117 self.texteTubePy+="# Exécution de la procédure outil métier \n"
118 self.texteTubePy+="import os,sys\n"
119 self.texteTubePy+="sys.path.insert(0,os.environ['OM_ROOT_DIR'])\n"
120 self.texteTubePy+="import om_data\n"
121 self.texteTubePy+="om_data.setParameters(parameters)\n"
122 self.texteTubePy+="def run():\n"
123 self.texteTubePy+=" import om_smeca\n"
124 self.texteTubePy+="\n"
125 self.texteTubePy+='if __name__ == "__main__":\n'
126 self.texteTubePy+=" run()\n"
129 print self.texteTubePy
138 # __GBO__: surcharge de PythonGenerator:
139 # voir example generator_cuve2dg.py (genea)
140 def generMCSIMP(self,obj) :
142 Convertit un objet MCSIMP en texte python
143 Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
146 for i in obj.getGenealogie() :
148 #self.dictMCVal[obj.nom]=obj.valeur
149 self.dictMCVal[clef]=obj.valeur
151 s=PythonGenerator.generMCSIMP(self,obj)
154 # __GBO__: surcharge de PythonGenerator
155 def generMACRO_ETAPE(self,obj):
157 if obj.nom == "S_EP_INTERNE" :
159 if obj.nom == "M_COUDE" :
161 s=PythonGenerator.generMACRO_ETAPE(self,obj)