尝试将MEL脚本转换为Python

时间:2017-11-17 06:40:31

标签: python mel

我目前有一个用于MEL的随机对象生成器脚本。我试图将其转换为Python。这是一项家庭作业,我被困在一个特定的部分。我试图为每个轴添加一个随机比例。我继续得到"只能连接列表(不是" str")列出#"。这就是我到目前为止所拥有的:

#to use: my_rock_gen(1, poly_rock1)

#import python libraries
import maya.cmds as MC
import random

#define procedure with number of rocks and name

def my_rock_gen(number_of_rocks=0, rock_name="poly_rock1"):

    #loop to generate rocks
    for n in range(number_of_rocks):

        #start with creating polygon object, basic cube
        rock=MC.polyCube (name=rock_name)

        #smooth it once
        MC.polySmooth (rock, dv=2)        

        #give random scales
        random_sx= random.uniform (.3, 3)
        random_sy= random.uniform (.3, 3)
        random_sz= random.uniform (.3, 3)

        #set random values to scales
        MC.setAttr ((rock + ".scaleX"), random_sx)"

我被困在最后一点。在MEL这里是我最后两部分的内容:

//set random scale range
float $random_sx = `rand .3 3`;
float $random_sy = `rand .3 3`;
float $random_sz = `rand .3 3`;

//set random values to scales
setAttr ($rock[0] + ".sx") $random_sx;
setAttr ($rock[0] + ".sx") $random_sy;
setAttr ($rock[0] + ".sx") $random_sz;

$ rock [0]是使用脚本的开头部分创建的。我只是无法弄清楚setAttr部分的语法应该如何。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

rock是一个列表,请尝试

rock = [MC.setAttr((x),random_sx) for x in rock] 

在列表的元素上设置attr(这里没有maya)