You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在Maya中保留指定关节并删除其余可删除对象

解决Maya场景清理:删除除指定关节外的所有对象

没问题!你已经完成了最关键的一步——筛选出要保留的关节,接下来只需要简单几步就能清理掉场景里其他所有不需要的对象。我帮你优化并补全代码:

# 清空当前选择
cmds.select(clear=True)
# 获取所有名称以JOINT_GAME开头的关节(加上type='joint'确保只匹配关节类型)
JointsForExport = cmds.ls("JOINT_GAME*", type='joint')
# 选中这些需要保留的关节
cmds.select(JointsForExport)
# 反选所有未被选中的对象(即需要删除的内容)
cmds.select(invert=True)
# 强制删除选中对象(force=True可处理锁定/隐藏的对象,不需要可移除)
cmds.delete(force=True)

代码细节说明:

  • cmds.ls("JOINT_GAME*", type='joint'):我给你加了type='joint'参数,这样能精准匹配关节类型,避免误选到其他同名前缀的非关节对象(比如曲线、几何体等),让筛选更稳妥。
  • cmds.select(invert=True):这一步是核心——它会选中场景中所有不在保留列表里的对象,刚好是我们要清理的目标。
  • cmds.delete(force=True):如果你的场景里有锁定或隐藏的对象,这个参数能强制删除它们;如果不需要处理这类对象,直接去掉force=True即可。

安全提示:

执行删除前建议先做个测试,打印出要删除的对象列表确认无误后再执行删除:

# 先打印待删除对象,确认后再删除
cmds.select(clear=True)
JointsForExport = cmds.ls("JOINT_GAME*", type='joint')
cmds.select(JointsForExport)
cmds.select(invert=True)
to_delete = cmds.ls(selection=True)
print("即将删除的对象:", to_delete)
# 确认后取消注释下面一行执行删除
# cmds.delete(force=True)

内容的提问来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:52:46