【问题标题】:Loop only prints last value循环只打印最后一个值
【发布时间】:2022-01-23 17:36:02
【问题描述】:

我有一些在 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)

【问题讨论】:

  • 第 5 行的 mdb 是什么?请确保您也有正确的缩进

标签: python loops abaqus


【解决方案1】:
partlabel=[]
partxcord=[]
partycord=[]
partzcord=[]

这些应该在循环之外初始化,也许用螺丝名制作一个字典,然后在那里添加这些列表

或者你的缩进也可能是个问题

【讨论】:

    【解决方案2】:

    如果你只想打印坐标,那么你只需要在内循环结束后打印。此外,您可以存储所有零件的坐标。请参考以下代码:

    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 这些列表中的所有坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2017-07-28
      • 2019-08-01
      • 2019-12-22
      • 1970-01-01
      • 2022-06-15
      相关资源
      最近更新 更多