2016-12-27 54 views
-1

我有一个mxd文件来打印报告,它具有地图和文本元素,我试图更改文本元素的值,但我无法做到它。这是代码:更改Esri中文本元素值的问题Arcmap

import arcpy 
import os 
import datetime 

def Actualiza_Texto(nombre, valor): 
    elementos = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT") 
    for elem in elementos: 
     if elem.name == nombre: 
     if type(valor) == str: 
      elem.text = unicode(valor, "utf-8", errors="ignore") 
     else: 
      elem.text = unicode(valor) 

Web_Map_as_JSON = arcpy.GetParameterAsText(0) 
tRazonSocial = arcpy.GetParameterAsText(1) 

ahora = datetime.datetime.now() 
output = 'Calculo_{}_{}_{}_{}_{}_{}.{}'.format(ahora.year,ahora.month,ahora.day, ahora.hour,ahora.minute,ahora.second, "PDF") 
templateMxd = os.path.join('c:/', "Carta_Vertical_1.mxd") 
result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd) 
mxd = result.mapDocument 

Actualiza_Texto('tRazonSocial', tRazonSocial) 
arcpy.AddMessage(tRazonSocial) 
Output_File = os.path.join(arcpy.env.scratchFolder, output) 
Actualiza_Texto('tDocumento', Output_File) 
arcpy.mapping.ExportToPDF(mxd, Output_File) 
arcpy.AddMessage("Se entrega el resultado como parametro {}".format(Output_File)) 
arcpy.SetParameterAsText(2, Output_File) 

filePath = mxd.filePath 
del mxd, result 
os.remove(filePath) 
arcpy.AddMessage("***FIN***") 

所有参数到达不错,但它不会改变文本元素的值。

+0

你确定文本元素的名字是否正确? – Erica

+0

是的,我有,我也找到了解决方案。 –

+0

解决方案 if elem.name == nombre: 更改为 如果elem.text == nombre: 它工作得很好。 –

回答

0

我找到了解决方案,我不得不改变“名称”属性的“文本”在块和所有工作正常。