es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)

Tags:  , ,

Answer

  1. Avatar for 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:

    SetsScrews = ["Screw['T6_R']","Screw['T7_R']","Screw['T8_R']"]
    partlabel=[]
    partxcord=[]
    partycord=[]
    partzcord=[]
    
    for i in range(len(SetsScrews)):
        # Seleccionar conjunto de nodos
        PartLevel = mdb.models[modelname].rootAssembly.sets[SetsScrews[i]]
        print('ParTLEVEL=', PartLevel)
    
        # Calcular la cantidad de nodos en el conjunto de nodos
        numNodes = len(PartLevel.nodes)
    
        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)
    
    # Imprimir la información de nodo para todas las SetsScrews
    for i in range(len(partlabel)):
        print(partlabel[i], partxcord[i], partycord[i], partzcord[i])
    

    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.

Comments are closed.