import logging
from dictErreurs import EcritErreur
from dictErreurs import jdcSet
+from renamemocle import decaleLignesdeNBlancs
+from removemocle import removeMotCleInFact
#--------------------------------------------------------------------------
def ChangementValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
#--------------------------------------------------------------------------
if command not in jdcSet : return
-
boolChange=0
for c in jdc.root.childNodes:
if c.name != command : continue
def SuppressionValeurs(jdc, command,motcle,liste):
#--------------------------------------------------------------------------
- if command.name not in jdcSet : return
+ if command not in jdcSet : return
boolChange=0
for c in jdc.root.childNodes:
if c.name != command : continue
jdc.getLines()[indexLigneGlob]=MaLigne
indexLigneGlob=indexLigneGlob+1
if boolChange : jdc.reset(jdc.getSource())
+
+#----------------------------------------------
+def AppelleMacroSelonValeurConcept(jdc,macro,genea):
+#----------------------------------------------
+ if macro not in jdcSet : return
+ boolChange=0
+ fact=genea[0]
+ motcle=genea[1]
+ chaine="CO"
+ for c in jdc.root.childNodes:
+ if c.name != macro : continue
+ for mcF in c.childNodes:
+ if mcF.name != fact : continue
+ l=mcF.childNodes[:]
+ l.reverse()
+ for ll in l:
+ trouveValeur=0
+ for mc in ll.childNodes:
+ if mc.name != motcle:continue
+ TexteMC=mc.getText(jdc)
+ liste_ligne_MC=TexteMC.splitlines()
+ indexLigneGlob=mc.lineno-2
+ trouveTexteMC=0
+ trouveegal=0
+ trouvechaine=0
+ trouveparent=0
+ trouvequote=0
+ while indexLigneGlob < mc.endline :
+ indexLigneGlob=indexLigneGlob+1
+ MaLigneTexte=jdc.getLines()[indexLigneGlob]
+
+ # on commence par chercher TABLE par exemple
+ # si on ne trouve pas on passe a la ligne suivante
+ if ( trouveTexteMC == 0 ) :
+ indice=MaLigneTexte.find(motcle)
+ if indice < 0 : continue
+ trouveTexteMC=1
+ else :
+ indice=0
+
+ # on cherche =
+ aChercher=MaLigneTexte[indice:]
+ if (trouveegal == 0 ):
+ indice=aChercher.find("=")
+ if indice < 0 : continue
+ trouveegal = 1
+ else :
+ indice = 0
+
+ # on cherche CO
+ aChercher2=aChercher[indice:]
+ if (trouvechaine == 0 ):
+ indice=aChercher2.find(chaine)
+ if indice < 0 : continue
+ trouvechaine = 1
+ else :
+ indice = 0
+
+ #on cherche (
+ aChercher3=aChercher2[indice:]
+ if (trouveparent == 0 ):
+ indice=aChercher3.find('(')
+ if indice < 0 : continue
+ trouveparent = 1
+ else :
+ indice = 0
+
+ #on cherche la '
+ aChercher4=aChercher3[indice:]
+ if (trouvequote == 0 ):
+ indice=aChercher4.find("'")
+ if indice < 0 : continue
+ trouvequote = 1
+ else :
+ indice = 0
+
+ trouveValeur=1
+ aChercher5=aChercher4[indice+1:]
+ indice=aChercher5.find("'")
+ valeur=aChercher5[:indice]
+ break
+
+ if trouveValeur==0 :
+ logging.error("Pb du traducteur pour la macro MACR_LIGNE_COUPE")
+ return
+
+ ligneaTraiter=jdc.getLines()[c.lineno-1]
+ debut=ligneaTraiter[0:c.colno]
+ suite=valeur+"="
+ fin=ligneaTraiter[c.colno:]
+ ligne=debut+suite+fin
+ jdc.getLines()[c.lineno-1]=ligne
+ nbBlanc=len(valeur)+1
+ if c.lineno < c.endline:
+ decaleLignesdeNBlancs(jdc,c.lineno,c.endline-1,nbBlanc)
+ removeMotCleInFact(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TABLE")
parseKeywords(root)
####################### traitement erreurs #######################
- GenereErreurPourCommande(jdc,("MACR_LIGN_COUPE","POST_RCCM","DIST_LIGN_3D"))
+ GenereErreurPourCommande(jdc,("POST_RCCM","DIST_LIGN_3D"))
####################### traitement CALC_META #######################
renameMotCleInFact(jdc,"CALC_META","ETAT_INIT","META_INIT","META_INIT_ELNO")
moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","E", ("ELAS",))
moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","NU", ("ELAS",))
moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","RHO",("ELAS",))
+ AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","ELAS","NU=0.,",((("ELAS","NU"),"nexistepasMCsousMCF"),))
####################### traitement IMPR_CO #######################
chercheOperInsereFacteurSiRegle(jdc,"IMPR_CO","CONCEPT",((("CO",),"existe"),))
####################### traitement CALC_CHAM_ELEM #######################
removeCommandeSiRegleAvecErreur(jdc,"CALC_CHAM_ELEM",((("OPTION","SOUR_ELGA_ELEC",jdc),"MCaPourValeur"),))
+ ####################### traitement MACR_LIGNE_COUPE #######################
+ AppelleMacroSelonValeurConcept(jdc,"MACR_LIGN_COUPE",("LIGN_COUPE","TABLE","CO"))
+
+
+
+
f=open(outfile,'w')
f.write(jdc.getSource())
f.close()