Майя, возвращающая TypeError: объект 'NoneType' не повторяется - PullRequest
0 голосов
/ 10 марта 2020

Я очень новичок в Python и пытаюсь облегчить мою жизнь в майя. Я решил, что попробую написать простые циклы для вещей, которые я делаю много. Например, сброс всех опорных точек. Когда я пытаюсь выполнить это, я получаю эту ошибку "# Ошибка: Ошибка типа: строка файла 6: объект 'NoneType' не повторяется #"

from maya import cmds

def resetPivots():
    selectAll = cmds.select(allDagObjects = True)

    for obj in selectAll:
        cmds.manipPivot(reset = True)

resetPivots()

Любая помощь и объяснение будут очень признательны.

: edit:

Как выяснилось, cmds.select(allDagObjects=True) имеет возвращаемое значение None, но вы можете передать выбор в список. Я обновил код до этого, но я снова застрял:

from maya import cmds

def resetPivots(selection=False):
    cmds.select(all = True)
    selectAll = cmds.ls(sl = True, dag = True)
    print(selectAll)
    for obj in selectAll:
        center=cmds.objectCenter(obj, gl = True)
        print(center)
        cmds.manipPivot(p = (center))

resetPivots()

Итак, я получаю координаты центров всех моих объектов, но ничего не происходит, когда списки передаются на cmds.manipPivot()

Кроме того, слишком много строк для того, что я пытаюсь сделать?

1 Ответ

1 голос
/ 11 марта 2020

я заменил ваше manippivot на xform и отфильтровал ваш selectAll, чтобы взять только объект с фигурами, вы можете расширить его до трансформации или других форм плагина

from maya import cmds


def resetPivots(selection=False):
    if selection:
        selectAll = cmds.ls(sl = True, dag = True, type='shape')
    else:
        selectAll = cmds.ls(dag = True, type='shape')        
    for obj in selectAll:
        center = cmds.objectCenter(obj, gl = True)
        obj_tr = cmds.listRelatives(obj, p=True)[0]
        cmds.xform(obj_tr, scalePivot=center, ws=True)
        cmds.xform(obj_tr, rotatePivot=center, ws=True)

resetPivots()
...