如何将itertool与元组一起使用,以将关节移动到不同位置?

时间:2018-11-06 16:59:16

标签: python maya

我刚刚开始学习一些用于装配的Python,而我的大学并没有真正专注于此,我对尝试使用的几种代码组合感到有些困惑。

我想将每个关节的许多关节移动到不同的位置,而不是连续20次执行cmds.move(),而我希望将迭代与元组一起使用以使线条更整洁。

这是我用Python编写的一小段代码:

# import commands from maya package
from maya import cmds

moveTailJoints = {
    'tail_001_jnt': {(0, 2.607, -20.579)},
}

for driver, driven in moveTailJoints.iteritems():
    cmds.move(
        driver.format(),
        driven.format()
    )

这是最好的方法吗?

1 个答案:

答案 0 :(得分:0)

欢迎您!

几件事: 您不需要位置值{(0, 2.607, -20.579)}周围的嵌套字典,因为它没有任何用途。

您可以使用dict内置的.items()方法遍历对象和位置。

您在这里不太清楚,但是我假设这些位置值是世界坐标?如果是这样,则需要在cmds.move方法中包括绝对标志。另外,您也可以使用cmds.xform将对象移动到世界空间位置。

import maya.cmds as cmds

moveTailJoints = {
    'tail_001_jnt':(0, 1, 0),
    'tail_002_jnt':(0, 2, 0),
    'tail_003_jnt':(0, 3, 0),
    'tail_004_jnt':(0, 4, 0)   
}

for obj, pos in moveTailJoints.items():
    tx, ty, tz = pos
    cmds.move(tx, ty, tz, obj, a=True)

有关命令用法的更多示例,请查看Maya文档:

http://help.autodesk.com/view/MAYAUL/2018/ENU/?guid=__CommandsPython_index_html