Maya Python 从重复的关节中删除子项
Maya Python Delete children from a duplicated joint
我正在尝试从我在 Maya 中使用 python 复制但不起作用的关节中删除子项。我错过了什么?
import maya.cmds as mc
mc.duplicate('spine02_Joint',n='spineGrpJnt')
mc.parent('spineGrpJnt',w=True)
mc.select('spineGrpJnt')
childJnts = mc.listRelatives(ad=True)
mc.delete(childJnts)
根据我的理解,这应该删除 childJnts 中的所有内容,但它给我错误:'不止一个对象匹配名称:'
我想通了。
代码应该是:
import maya.cmds as mc
mc.duplicate('spine02_Joint',n='spineGrpJnt')
mc.parent('spineGrpJnt',w=True)
mc.select('spineGrpJnt')
childJnts = mc.listRelatives(ad=True,pa=True)
mc.delete(childJnts)
添加 pa=True 到 listRelatives 给了我我想要的。
您可以通过在 duplicate
命令中使用 parentOnly
kwarg 来大大简化您的代码,这样它就可以复制您指定的节点而没有任何子节点
import maya.cmds as mc
new_jnt = mc.duplicate('spine02_Joint', n='spineGrpJnt', parentOnly=True)[0]
mc.parent(new_jnt, w=True)
另一个小提示:大多数(如果不是全部)maya 命令允许您传入要修改的对象以及 return "new" 对象的名称。通过将其存储在变量中,您可以传递变量而不是对象名称的字符串。如果某个对象已存在该名称并且 Maya 以末尾的 1 命名它(例如:'my_object1'),这将特别有用。这样你就不必管理选择和担心可能导致命令在错误的对象上运行的名称——这可能很难跟踪错误...
所以你可以这样写你的原始代码:
import maya.cmds as mc
new_jnt = mc.duplicate('spine02_Joint',n='spineGrpJnt')[0]
mc.parent(new_jnt, w=True)
childJnts = mc.listRelatives(new_jnt, ad=True, pa=True)
mc.delete(childJnts)
我正在尝试从我在 Maya 中使用 python 复制但不起作用的关节中删除子项。我错过了什么?
import maya.cmds as mc
mc.duplicate('spine02_Joint',n='spineGrpJnt')
mc.parent('spineGrpJnt',w=True)
mc.select('spineGrpJnt')
childJnts = mc.listRelatives(ad=True)
mc.delete(childJnts)
根据我的理解,这应该删除 childJnts 中的所有内容,但它给我错误:'不止一个对象匹配名称:'
我想通了。 代码应该是:
import maya.cmds as mc
mc.duplicate('spine02_Joint',n='spineGrpJnt')
mc.parent('spineGrpJnt',w=True)
mc.select('spineGrpJnt')
childJnts = mc.listRelatives(ad=True,pa=True)
mc.delete(childJnts)
添加 pa=True 到 listRelatives 给了我我想要的。
您可以通过在 duplicate
命令中使用 parentOnly
kwarg 来大大简化您的代码,这样它就可以复制您指定的节点而没有任何子节点
import maya.cmds as mc
new_jnt = mc.duplicate('spine02_Joint', n='spineGrpJnt', parentOnly=True)[0]
mc.parent(new_jnt, w=True)
另一个小提示:大多数(如果不是全部)maya 命令允许您传入要修改的对象以及 return "new" 对象的名称。通过将其存储在变量中,您可以传递变量而不是对象名称的字符串。如果某个对象已存在该名称并且 Maya 以末尾的 1 命名它(例如:'my_object1'),这将特别有用。这样你就不必管理选择和担心可能导致命令在错误的对象上运行的名称——这可能很难跟踪错误...
所以你可以这样写你的原始代码:
import maya.cmds as mc
new_jnt = mc.duplicate('spine02_Joint',n='spineGrpJnt')[0]
mc.parent(new_jnt, w=True)
childJnts = mc.listRelatives(new_jnt, ad=True, pa=True)
mc.delete(childJnts)