Maya返回类型错误:“非类型”对象不可编辑

2024-05-05 01:59:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python非常陌生,正在努力让我在Maya中的生活更轻松。我想我应该试着为我经常做的事情编写简单的循环。例如,重置所有枢轴。当我尝试运行此命令时,会出现以下错误“#错误:类型错误:文件第6行:'NoneType'对象不可编辑#”

from maya import cmds

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

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

resetPivots()

任何帮助和解释都将不胜感激

:编辑:

事实证明,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()时,什么都没有发生

此外,对于我正在尝试做的事情来说,这是不是太多了


Tags: 对象fromimporttrueobj编辑错误事情
1条回答
网友
1楼 · 发布于 2024-05-05 01:59:50

我将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()

相关问题 更多 >