X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=generator%2Fgenerator_asterv5.py;h=d544321fa40b8b96ddcb20094c2dd5f2733cc46a;hb=f1fe188d679966c43c6e965bde6d63bd89451262;hp=d634158a2a68f112c88c02adf365b9b13326fa19;hpb=8032f97d8fa3b30348497c1dc96c987aaffce80f;p=tools%2Feficas.git diff --git a/generator/generator_asterv5.py b/generator/generator_asterv5.py index d634158a..d544321f 100644 --- a/generator/generator_asterv5.py +++ b/generator/generator_asterv5.py @@ -1,22 +1,22 @@ -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2013 EDF R&D # -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# ====================================================================== """ Ce module contient le plugin generateur de fichier au format asterv5 pour EFICAS. @@ -24,7 +24,8 @@ """ import traceback import types,string - +from Extensions.i18n import tr +from Extensions.eficas_exception import EficasException from Noyau import N_CR from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL @@ -34,14 +35,14 @@ from Formatage import Formatage def entryPoint(): """ - Retourne les informations nécessaires pour le chargeur de plugins + Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire + Ces informations sont retournees dans un dictionnaire """ return { # Le nom du plugin 'name' : 'asterv5', - # La factory pour créer une instance du plugin + # La factory pour creer une instance du plugin 'factory' : AsterGenerator, } @@ -51,19 +52,18 @@ class AsterGenerator: Ce generateur parcourt un objet de type JDC et produit un fichier au format asterv5 - L'acquisition et le parcours sont réalisés par la méthode + L'acquisition et le parcours sont realises par la methode generator.gener(objet_jdc,format) - L'écriture du fichier au format asterv5 est réalisée par appel de la méthode + L'ecriture du fichier au format asterv5 est realisee par appel de la methode generator.writefile(nom_fichier) - Ses caractéristiques principales sont exposées dans des attributs + Ses caracteristiques principales sont exposees dans des attributs de classe : - - - extensions : qui donne une liste d'extensions de fichier préconisées + - extensions : qui donne une liste d'extensions de fichier preconisees """ - # Les extensions de fichier préconisées + # Les extensions de fichier preconisees extensions=('.comm',) def __init__(self,cr=None): @@ -73,7 +73,7 @@ class AsterGenerator: else: self.cr=N_CR.CR(debut='CR generateur format asterv5', fin='fin CR format asterv5') - # Le texte au format asterv5 est stocké dans l'attribut text + # Le texte au format asterv5 est stocke dans l'attribut text self.text='' def writefile(self,filename): @@ -83,11 +83,11 @@ class AsterGenerator: def gener(self,obj,format='brut'): """ - Retourne une représentation du JDC obj sous une - forme qui est paramétrée par format. + Retourne une representation du JDC obj sous une + forme qui est parametree par format. Si format vaut 'brut', retourne une liste de listes de ... - Si format vaut 'standard', retourne un texte obtenu par concaténation de la liste - Si format vaut 'beautifie', retourne le meme texte beautifié + Si format vaut 'standard', retourne un texte obtenu par concatenation de la liste + Si format vaut 'beautifie', retourne le meme texte beautifie """ liste= self.generator(obj) if format == 'brut': @@ -98,16 +98,16 @@ class AsterGenerator: jdc_formate = Formatage(liste,sep=':',l_max=72) self.text=jdc_formate.formate_jdc() else: - raise "Format pas implémenté : "+format + raise EficasException(tr("Format pas implemente : %s", format)) return self.text def generator(self,obj): """ Cette methode joue un role d'aiguillage en fonction du type de obj - On pourrait utiliser les méthodes accept et visitxxx à la - place (dépend des gouts !!!) + On pourrait utiliser les methodes accept et visitxxx à la + place (depend des gouts !!!) """ - # ATTENTION a l'ordre des tests : il peut avoir de l'importance (héritage) + # ATTENTION a l'ordre des tests : il peut avoir de l'importance (heritage) if isinstance(obj,PROC_ETAPE): return self.generPROC_ETAPE(obj) elif isinstance(obj,MACRO_ETAPE): @@ -130,7 +130,7 @@ class AsterGenerator: return self.generETAPE_NIVEAU(obj) elif isinstance(obj,COMMENTAIRE): return self.generCOMMENTAIRE(obj) - # Attention doit etre placé avant PARAMETRE (raison : héritage) + # Attention doit etre place avant PARAMETRE (raison : heritage) elif isinstance(obj,PARAMETRE_EVAL): return self.generPARAMETRE_EVAL(obj) elif isinstance(obj,PARAMETRE): @@ -142,12 +142,12 @@ class AsterGenerator: elif isinstance(obj,JDC): return self.generJDC(obj) else: - raise "Type d'objet non prévu",obj + raise EficasException(tr("Type d'objet non prevu : %s", repr(obj))) def generJDC(self,obj): """ - Cette méthode convertit un objet JDC en une liste de chaines de - caractères à la syntaxe asterv5 + Cette methode convertit un objet JDC en une liste de chaines de + caracteres à la syntaxe asterv5 """ l=[] if obj.definition.l_niveaux == (): @@ -159,7 +159,7 @@ class AsterGenerator: for etape_niveau in obj.etapes_niveaux: l.extend(self.generator(etape_niveau)) if l != [] : - # Si au moins une étape, on ajoute le retour chariot sur la dernière étape + # Si au moins une etape, on ajoute le retour chariot sur la derniere etape if type(l[-1])==types.ListType: l[-1][-1] = l[-1][-1]+'\n' elif type(l[-1])==types.StringType: @@ -168,8 +168,8 @@ class AsterGenerator: def generCOMMANDE_COMM(self,obj): """ - Cette méthode convertit un COMMANDE_COMM - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit un COMMANDE_COMM + en une liste de chaines de caracteres à la syntaxe asterv5 """ l_lignes = string.split(obj.valeur,'\n') txt='' @@ -179,15 +179,15 @@ class AsterGenerator: def generEVAL(self,obj): """ - Cette méthode convertit un EVAL - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit un EVAL + en une liste de chaines de caracteres à la syntaxe asterv5 """ - return 'EVAL("'+ obj.valeur +'")' + return 'EVAL(u"'+ obj.valeur +'")' def generCOMMENTAIRE(self,obj): """ - Cette méthode convertit un COMMENTAIRE - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit un COMMENTAIRE + en une liste de chaines de caracteres à la syntaxe asterv5 """ l_lignes = string.split(obj.valeur,'\n') txt='' @@ -197,8 +197,8 @@ class AsterGenerator: def generPARAMETRE_EVAL(self,obj): """ - Cette méthode convertit un PARAMETRE_EVAL - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit un PARAMETRE_EVAL + en une liste de chaines de caracteres à la syntaxe asterv5 """ if obj.valeur == None: return obj.nom + ' = None ;\n' @@ -207,8 +207,8 @@ class AsterGenerator: def generPARAMETRE(self,obj): """ - Cette méthode convertit un PARAMETRE - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit un PARAMETRE + en une liste de chaines de caracteres à la syntaxe asterv5 """ if type(obj.valeur) == types.StringType: return obj.nom + " = '" + obj.valeur + "';\n" @@ -217,8 +217,8 @@ class AsterGenerator: def generETAPE_NIVEAU(self,obj): """ - Cette méthode convertit une étape niveau - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit une etape niveau + en une liste de chaines de caracteres à la syntaxe asterv5 """ l=[] if obj.etapes_niveaux == []: @@ -231,8 +231,8 @@ class AsterGenerator: def generETAPE(self,obj): """ - Cette méthode convertit une étape - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit une etape + en une liste de chaines de caracteres à la syntaxe asterv5 """ try: if obj.reuse != None: @@ -259,7 +259,7 @@ class AsterGenerator: def generFORM_ETAPE(self,obj): """ - Méthode particulière pour les objets de type FORMULE + Methode particuliere pour les objets de type FORMULE """ l=[] nom = obj.get_nom() @@ -275,8 +275,8 @@ class AsterGenerator: def generMACRO_ETAPE(self,obj): """ - Cette méthode convertit une macro-étape - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit une macro-etape + en une liste de chaines de caracteres à la syntaxe asterv5 """ if obj.definition.nom == 'FORMULE' : return self.gen_ast_formule(obj) try: @@ -307,7 +307,7 @@ class AsterGenerator: def gen_ast_formule(self,obj): """ - Méthode gen_ast particuliere aux objets de type FORMULE + Methode gen_ast particuliere aux objets de type FORMULE """ label='!FORMULE(' try: @@ -328,8 +328,8 @@ class AsterGenerator: def generPROC_ETAPE(self,obj): """ - Cette méthode convertit une étape - en une liste de chaines de caractères à la syntaxe asterv5 + Cette methode convertit une etape + en une liste de chaines de caracteres à la syntaxe asterv5 """ l=[] label=obj.definition.nom+'(' @@ -349,7 +349,7 @@ class AsterGenerator: def generMCSIMP(self,obj) : """ - Convertit un objet MCSIMP en une liste de chaines de caractères à la + Convertit un objet MCSIMP en une liste de chaines de caracteres à la syntaxe asterv5 """ if type(obj.valeur) == types.TupleType : @@ -359,14 +359,15 @@ class AsterGenerator: if type(val) == types.InstanceType : if isinstance(val,PARAMETRE): # il ne faut pas prendre la string que retourne gen_ast - # mais seulement le nom dans le cas d'un paramètre + # mais seulement le nom dans le cas d'un parametre s = s + val.nom else: s = s + self.generator(val) elif self.wait_geom(obj): s = s + val elif type(val) == types.FloatType : - s = s + self.repr_float(val) + #s = s + self.repr_float(val) + s = s + str(val) else : s = s + `val` s = s + ')' @@ -376,14 +377,15 @@ class AsterGenerator: if type(obj.valeur) == types.InstanceType : if isinstance(obj.valeur,PARAMETRE): # il ne faut pas prendre la string que retourne gen_ast - # mais seulement str dans le cas d'un paramètre + # mais seulement str dans le cas d'un parametre s = obj.valeur.nom else: s = self.generator(obj.valeur) elif self.wait_geom(obj): s = obj.valeur elif type(obj.valeur) == types.FloatType : - s = self.repr_float(obj.valeur) + #s = self.repr_float(obj.valeur) + s = str(obj.valeur) else : s = `obj.valeur` s=obj.nom+':'+s+' ' @@ -397,9 +399,9 @@ class AsterGenerator: def repr_float(self,valeur): """ - Cette fonction représente le réel valeur comme une chaîne de caractères - sous forme mantisse exposant si nécessaire cad si le nombre contient plus de 5 caractères - NB : valeur est un réel au format Python ou une chaîne de caractères représentant un réel + Cette fonction represente le reel valeur comme une chaîne de caracteres + sous forme mantisse exposant si necessaire cad si le nombre contient plus de 5 caracteres + NB : valeur est un reel au format Python ou une chaîne de caracteres representant un reel """ if type(valeur) == types.StringType : valeur = eval(valeur) if valeur == 0. : return '0.0' @@ -409,10 +411,10 @@ class AsterGenerator: if abs(valeur) > 0.01 : return repr(valeur) t=repr(valeur) if string.find(t,'e') != -1 or string.find(t,'E') != -1 : - # le réel est déjà sous forme mantisse exposant ! + # le reel est dejà sous forme mantisse exposant ! # --> on remplace e par E t=string.replace(t,'e','E') - # --> on doit encore vérifier que la mantisse contient bien un '.' + # --> on doit encore verifier que la mantisse contient bien un '.' if string.find(t,'.')!= -1: return t else: @@ -426,7 +428,7 @@ class AsterGenerator: t=t[1:] cpt = 0 if string.atof(t[0]) == 0.: - # réel plus petit que 1 + # reel plus petit que 1 neg = 1 t=t[2:] cpt=1 @@ -437,7 +439,7 @@ class AsterGenerator: for c in t[1:]: s=s+c else: - # réel plus grand que 1 + # reel plus grand que 1 s=s+t[0]+'.' if string.atof(t[1:]) == 0.: l=string.split(t[1:],'.') @@ -458,14 +460,14 @@ class AsterGenerator: def generASSD(self,obj): """ - Convertit un objet dérivé d'ASSD en une chaine de caractères à la + Convertit un objet derive d'ASSD en une chaine de caracteres à la syntaxe asterv5 """ return obj.get_name() def generMCFACT(self,obj): """ - Convertit un objet MCFACT en une liste de chaines de caractères à la + Convertit un objet MCFACT en une liste de chaines de caracteres à la syntaxe asterv5 """ l=[] @@ -483,7 +485,7 @@ class AsterGenerator: def generMCList(self,obj): """ - Convertit un objet MCList en une liste de chaines de caractères à la + Convertit un objet MCList en une liste de chaines de caracteres à la syntaxe asterv5 """ l=[] @@ -493,7 +495,7 @@ class AsterGenerator: def generMCBLOC(self,obj): """ - Convertit un objet MCBLOC en une liste de chaines de caractères à la + Convertit un objet MCBLOC en une liste de chaines de caracteres à la syntaxe asterv5 """ l=[]