]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
PN
authorPascale Noyret <pascale.noyret@edf.fr>
Tue, 10 Oct 2006 14:22:43 +0000 (14:22 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Tue, 10 Oct 2006 14:22:43 +0000 (14:22 +0000)
Traducteur/changeValeur.py
Traducteur/jdcparser.py

index 31ce3459e37272f5d9a93d3c7673f3bd8b41a84a..b0241a1ff1103863edb5e80a072e824b2633bbb7 100644 (file)
@@ -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")
index 2a9d764c7d686a407d31b6b412f8310b06c075a1..9aed5beaa03afcb5073d51f33a2c168b6e1a0c37 100644 (file)
@@ -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()