From: Pascale Noyret Date: Tue, 10 Oct 2006 14:22:43 +0000 (+0000) Subject: PN X-Git-Tag: CC_param_poursuite~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1a4d1d282570e89c411955e4aca35a6de3f184c8;p=modules%2Feficas.git PN --- diff --git a/Traducteur/changeValeur.py b/Traducteur/changeValeur.py index 31ce3459..b0241a1f 100644 --- a/Traducteur/changeValeur.py +++ b/Traducteur/changeValeur.py @@ -2,13 +2,14 @@ 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 @@ -114,7 +115,7 @@ def ChangementValeurAvecAvertissement(jdc, command,motcle,DictNouvVal,liste): 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 @@ -156,3 +157,99 @@ def SuppressionValeurs(jdc, command,motcle,liste): 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") diff --git a/Traducteur/jdcparser.py b/Traducteur/jdcparser.py index 2a9d764c..9aed5bea 100644 --- a/Traducteur/jdcparser.py +++ b/Traducteur/jdcparser.py @@ -43,7 +43,7 @@ def traduc(infile,outfile): 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") @@ -97,6 +97,7 @@ def traduc(infile,outfile): 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"),)) @@ -182,6 +183,12 @@ def traduc(infile,outfile): ####################### 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()