簡體   English   中英

循環只打印最后一個值

[英]Loop only prints last value

我在 Abaqus 中使用了一些有效的 python 代碼,但我無法從中創建一個循環。 有人可以幫我解決這個相當簡單的問題嗎? 我想為不同的 SetsScrews 打印 x、y、z 坐標(稱為 partxcord 等)。 它只打印最后一個 SetsScrews。 我錯過了什么? 先感謝您。

SetsScrews = ["Screw['T6_R']", "Screw['T7_R']", "Screw['T8_R']"]

for i in range(len(SetsScrews)):
   # Select nodeset
   PartLevel = mdb.models[modelname].rootAssembly.sets[SetsScrews[i]]
   print('ParTLEVEL=', PartLevel)

   # Calculate the amount of nodes in nodeset
   numNodes = len(PartLevel.nodes)

  # Create lists to write data to
  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)
partlabel=[]
partxcord=[]
partycord=[]
partzcord=[]

這些應該在循環之外初始化,也許用螺絲名制作一個字典,然后在那里添加這些列表

或者你的縮進也可能是一個問題

如果你只想打印坐標,那么你只需要在內循環結束后打印。 此外,您可以存儲所有零件的坐標。 請參考以下代碼:

SetsScrews = ["Screw['T6_R']", "Screw['T7_R']", "Screw['T8_R']"]
# create the list to save all coordinates
aLabels,axcoords,aycoords,azcoords = [],[],[],[]
for i in range(len(SetsScrews)):
    # Select nodeset
    PartLevel = mdb.models[modelname].rootAssembly.sets[SetsScrews[i]]
    print('ParTLEVEL=', PartLevel)
    
    # Calculate the amount of nodes in nodeset
    numNodes = len(PartLevel.nodes)

    # Create lists to write data to
    partlabel,partxcord,partycord,partzcord=[],[],[],[]
    print('Screw= ', SetsScrews[i])
    for curNode in PartLevel.nodes:
        partlabel.append(curNode.label)
        partxcord.append(curNode.coordinates[0])
        partycord.append(curNode.coordinates[1])
        partzcord.append(curNode.coordinates[2])
        # you can print it here...
        print(curNode.label,curNode.coordinates[0],curNode.coordinates[1],curNode.coordinates[2])
    
    # or you can print all data here and save it
    print('partlabel= ', partlabel)
    print('partxcord= ', partxcord)
    print('partycord= ', partycord)
    print('partzcord= ', partzcord)
    aLabels.append(partlabel)
    axcoords.append(partxcord)
    aycoords.append(partycord)
    azcoords.append(partzcord)

現在,在兩個for循環的末尾,您擁有aLabels, axcoords, aycoords, azcoords這些列表中的所有坐標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM