首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >For Loop在Maya中复制对象- Python 2

For Loop在Maya中复制对象- Python 2
EN

Stack Overflow用户
提问于 2017-07-15 02:49:37
回答 2查看 2.9K关注 0票数 4

我已经使用maya超过5年了,现在我想开始使用python为我想要在Maya中执行的特定操作编写脚本。我确实有一些在JS中编写脚本的经验。

简要介绍一下我已经做过的事情:

我想使用python for循环在Maya中创建多个对象,以改变它们的位置或旋转。我在这方面做得很成功。

现在我想在Maya中按名称选择一个对象,并使用for循环复制它,旋转/移动/缩放。我遇到的问题是,当我复制目标对象时,我无法更改它的名称。

通常使用JS时,我只会使用"i“,并将其添加到循环'nameOfObject'+ i中的名称末尾

Python只允许名称是字符串,输入整数值会导致语法错误。

有没有办法执行此操作?

我的代码:

代码语言:javascript
运行
复制
import maya.cmds as cmds
from random import randint

for i in range(0,50):
    cmds.duplicate('solitude')
    cmds.rotate(0,i*20,0)

它创建了50个相同的对象,但我需要选择新创建的对象,而不需要对整个对象进行硬编码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-15 03:01:01

我认为这种类型的错误很常见,请尝试执行以下操作:

代码语言:javascript
运行
复制
cmds.duplicate('solitude'+str(i))
票数 1
EN

Stack Overflow用户

发布于 2017-07-16 10:21:54

我知道你已经接受了一个答案,如果你在场景中没有几个重复的节点,那么使用迭代器编号和源节点的名称是可行的……

一个更“防弹”的解决方案是捕获duplicate命令返回到一个变量中的内容,然后使用该项目进行旋转。这样,就不需要构造副本的名称,因为无论maya决定为其命名什么,实际上都已具有该副本的名称。

如果这是您需要做的很多事情,您还可以在执行复制和旋转之前捕获您的选择以用作源节点。因此,您可以通过选择一个项目,然后运行代码来使用以下代码。

代码语言:javascript
运行
复制
import maya.cmds as mc

src = mc.ls(sl=True)[0]
dup = src
for i in xrange(50):
    dup = mc.duplicate(dup)[0]
    mc.rotate(0,i*20,0, dup)

另外,还有一个小问题--你似乎没有在代码中使用randint……你可能会在其他地方使用它,尽管...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45109839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档