Salome HOME
1e616ce9ceefb99c87f1ccf7e87e6de930569b83
[tools/eficas.git] / generator / generator_cuve2dg.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 """
22     Ce module contient le plugin generateur de fichier au format 
23     homard pour EFICAS.
24
25 """
26 import traceback
27 import types,string,re
28
29 from Noyau import N_CR
30 from Noyau.N_utils import repr_float
31 from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
32 from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
33 from Accas import GEOM,ASSD,MCNUPLET
34 from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
35 from Formatage import Formatage
36 from generator_python import PythonGenerator
37
38 def entryPoint():
39    """
40        Retourne les informations nécessaires pour le chargeur de plugins
41
42        Ces informations sont retournées dans un dictionnaire
43    """
44    return {
45         # Le nom du plugin
46           'name' : 'cuve2dg',
47         # La factory pour créer une instance du plugin
48           'factory' : Cuve2dgGenerator,
49           }
50
51
52 class Cuve2dgGenerator(PythonGenerator):
53    """
54        Ce generateur parcourt un objet de type JDC et produit
55        un texte au format eficas et 
56        un texte au format homard 
57
58    """
59    # Les extensions de fichier préconisées
60    extensions=('.comm',)
61
62    def __init__(self,cr=None):
63       # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
64       if cr :
65          self.cr=cr
66       else:
67          self.cr=N_CR.CR(debut='CR generateur format homard pour homard',
68                          fin='fin CR format homard pour homard')
69       # Le texte au format homard est stocké dans l'attribut text
70       self.text=''
71       self.textCuve=''
72
73    def gener(self,obj,format='brut'):
74       self.text=''
75       self.textCuve=''
76       self.dico_mot={}
77       self.dico_genea={}
78       self.text=PythonGenerator.gener(self,obj,format)
79       return self.text
80
81    def generMCSIMP(self,obj) :
82        self.dico_mot[obj.nom]=obj.valeur
83        clef=""
84        for i in obj.get_genealogie() :
85            clef=clef+"_"+i
86        self.dico_genea[clef]=obj.valeur
87        s=PythonGenerator.generMCSIMP(self,obj)
88        return s
89
90    def writeCuve2DG(self):
91       print "je passe dans writeCuve2DG"
92       self.genereTexteCuve()
93       f = open( "/tmp/data_template", 'wb')
94       print self.texteCuve
95       f.write( self.texteCuve )
96       f.close()
97
98    def genereTexteCuve(self):
99       self.texteCuve=""
100       self.texteCuve+="############################################################################################"+"\n"
101       self.texteCuve+="# OPTIONS : Fichier Option.don"+"\n"
102       self.texteCuve+="############################################################################################"+"\n"
103       if self.dico_mot.has_key('IncrementTemporel'):
104          self.texteCuve+="INCRTPS = "+ str(self.dico_mot["IncrementTemporel"])+"\n"
105       if self.dico_mot.has_key('ProfilTemporel_Pression'):
106          self.imprime(2,(self.dico_mot["ProfilTemporel_Pression"]))
107       
108
109    def imprime(self,nbdeColonnes,valeur):
110       self.liste=[]
111       self.transforme(valeur)
112       i=0
113       while i < len(self.liste):
114           for k in range(nbdeColonnes) :
115               self.texteCuve+=str(self.liste[i+k]) +"  "
116           self.texteCuve+="\n"
117           i=i+k+1
118                
119
120    def transforme(self,valeur):
121       for i in valeur :
122           if type(i) == tuple :
123              self.transforme(i)
124           else :
125              self.liste.append(i)
126           
127
128
129