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])
它会用更短且更易读的脚本产生相同的结果。如果你想在那里有更多的灵活性,只需要简单的调整。
我为 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])
它会用更短且更易读的脚本产生相同的结果。如果你想在那里有更多的灵活性,只需要简单的调整。