清理Maya Python的While循环研究

2024-09-22 11:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我为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

Tags: truedefcounttranslationlengthcmdsrelativeadding
1条回答
网友
1楼 · 发布于 2024-09-22 11:28:59

当我运行脚本时,它会创建一个对象网格,如下所示: enter image description here

因此,如果它所需要做的只是创建一个对象网格,那么您的假设是正确的,那么使用while循环是没有意义的。事实上,使用2for个表示“墙”宽度和高度的循环非常容易:

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])

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

相关问题 更多 >