Maya 循环清理 Python 研究

Cleaning While Loop for Maya Python Study

我为 Maya python 研究做了一个 while 循环。它工作得很好,但它是多余的,我认为必须有一种方法可以更好地缩短它们或让它看起来更好。你们能给我一个关于我应该做什么的建议吗?您认为使用另一个 def 函数会比这更好吗?

def addWalls(self, length, width, floorNum, bboxScale):
    # count variables
    count = 1
    floorCount = 1

    # length loop
        while count < length:
            # Adding floors on wall
            while floorCount < floorNum:
                cmds.duplicate(instanceLeaf=True)
                cmds.xform(relative=True, translation=[0, 0, bboxScale[2]])
                floorCount += 1
            floorCount = 1

            # Adding next wall
            cmds.duplicate(instanceLeaf=True)
            cmds.xform(relative=True, translation=[0, -bboxScale[1], -bboxScale[2] * (floorNum - 1)])
            count += 1

            # Final adding floors
            if count == length:
                while floorCount < floorNum:
                    cmds.duplicate(instanceLeaf=True)
                    cmds.xform(relative=True, translation=[0, 0, bboxScale[2]])
                    floorCount += 1
                floorCount = 1

当我 运行 你的脚本时,它会创建一个对象网格,如下所示:

因此,如果它需要做的只是制作对象网格,那么您的假设是正确的,使用 while 循环毫无意义。事实上,使用代表“墙的”宽度和高度的 2 for 循环来实现它真的很容易:

import maya.cmds as cmds

spacing = 5
width_count = 15
height_count = 15

for z in range(width_count):
    for y in range(height_count):
        cmds.duplicate(instanceLeaf=True)
        cmds.xform(ws=True, t=[0, y * spacing, z * spacing])

它会用更短且更易读的脚本产生相同的结果。如果你想在那里有更多的灵活性,只需要简单的调整。