获取最后创建的项目选择

时间:2016-06-24 00:55:55

标签: python maya

我运行一个命令,在其中创建一个新的摄像头,但是在所述函数的末尾,没有选择,也没有该函数在它运行之后选择该对象。 那么有什么命令可以查询最后创建的项目吗?

我尝试使用`cmds.listHistory'但如果已有选择,那只会显示结果..

我能以何种方式解决这个问题?

另外,假设我使用

使用以下命令
cameraShape...
aaa = "cameraShape1"
mel.eval('<Some mel-based command> cameraShape.transformX cameraShape.transformY cameraShape.transformZ;')

但当我尝试用另一种方式编写该命令时,例如: mel.eval('<Some mel-based command> %s.transformX %s.transformY %s.transformZ;' %aaa)

我说错误

# Error: not enough arguments for format string
# Traceback (most recent call last):
#   File "<maya console>", line 1, in <module>
# TypeError: not enough arguments for format string #

我在哪里写错了?我尝试写%aaa, aaa, aaa仍然发生相同的错误

2 个答案:

答案 0 :(得分:2)

为什么不能将新相机填入变量而不依赖于选择?

new_camera, new_camera_shape = cmds.camera()

使用%格式化时,您没有使用正确的语法:

"My name is %s" % "Jon Snow" # Works for single
"My name is %s and I was born in %s" % ("Jon Snow", "Winterfell") # Multiple

就我个人而言,我更喜欢format(),因为它假设它与Python 3更加向前兼容:

"My name is {0} and I was born in {1}".format("Jon Snow", "Winterfell")

检测新对象:

scene_before = cmds.ls(l=True, transforms=True)

# Run command to import object here

scene_after = cmds.ls(l=True, transforms=True)

new_objs = list( set(scene_after).difference(scene_before) )

答案 1 :(得分:0)

如果要保留最后创建的对象。您可以创建一个包含变量历史记录的类,您可以在其他脚本中追加最后创建的对象。

class History:
    idCounter = []
    def __init__(self, name):
        History.idCounter.append(name)
        print(History.idCounter)

for name in ['nana', 'tata', 'zaza']:
    objectCreated = History(name)