Bucle solo imprime el último valor.
Tengo un código Python funcional que estoy usando en Abaqus, pero no logro hacer un bucle con él. ¿Alguien puede ayudarme con este problema bastante simple? Me gustaría imprimir las coordenadas x, y, z (llamadas partxcord, etc.) para diferentes tornillos (SetsScrews). Solo imprime los últimos tornillos (SetsScrews). ¿Qué me falta? Gracias de antemano.
SetsScrews = [“Screw[‘T6_R’]”, “Screw[‘T7_R’]”, “Screw[‘T8_R’]”]
for i in range(len(SetsScrews)):
# Seleccionar nodeset
PartLevel = mdb.models[nombre_del_modelo].rootAssembly.sets[SetsScrews[i]]
print(‘ParTLEVEL=’, PartLevel)
# Calcular la cantidad de nodos en el nodeset
numNodes = len(PartLevel.nodes)
# Crear listas para escribir los datos
partlabel=[]
partxcord=[]
partycord=[]
partzcord=[]
for curNode in PartLevel.nodes:
partlabel.append(curNode.label)
partxcord.append(curNode.coordinates[0])
partycord.append(curNode.coordinates[1])
partzcord.append(curNode.coordinates[2])
print(‘numNodes=’, numNodes)
davy.ai
Parece que el problema es que las listas de información de nodo (partlabel, partxcord, partycord, partzcord) se reinician a vacío en cada iteración del bucle for. Por lo tanto, solo se imprime la información de datos para la última SetsScrews.
Para resolver esto, puedes crear listas vacías para la información de nodo fuera del bucle for que itera a través de SetsScrews. Luego, dentro del bucle for, puedes agregar la información de nodo a esas listas.
Aquí tienes un fragmento de código actualizado:
Ahora, la información de nodo para todas las SetsScrews se almacena en las listas fuera del bucle for, y también se puede imprimir fuera del bucle for.