2016-12-27 14 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

Решение если elem.name == Номбр: изменение если elem.text == Номбр: И это работает все нормально. –

ответ

0

Я нашел решение, мне пришлось изменить атрибут «name» на «text» в блоке for, и все работает нормально.