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

如何在Maya中用Python选择无层级关联的NURBS曲线

选择Maya中无层级关联的NURBS曲线

要实现仅选择既无父层级组、自身也无下级对象的NURBS曲线,需要先筛选出符合条件的变换节点(Maya中可交互选择的是transform节点,nurbsCurve是其底层形状节点),再进行层级校验,具体代码如下:

# 获取所有带有NURBS曲线形状的变换节点
all_nurbs_transforms = [t for t in cmds.ls(type='transform') if cmds.listRelatives(t, shapes=True, type='nurbsCurve')]

# 筛选出无父节点且无子节点的目标曲线
target_curves = [
    curve for curve in all_nurbs_transforms
    if not cmds.listRelatives(curve, parent=True)
    and not cmds.listRelatives(curve, children=True)
]

# 选中符合条件的曲线
cmds.select(target_curves)

代码说明:

  • 第一步筛选出所有包含nurbsCurve形状的变换节点,确保我们处理的是可选择的曲线对象(而非不可直接选中的底层形状节点)。
  • 通过cmds.listRelatives(curve, parent=True)检查曲线是否有父节点,确保它直接位于场景根层级,不在任何组内。
  • 通过cmds.listRelatives(curve, children=True)检查曲线是否有子对象,确保它自身没有下级层级关联。
  • 最后执行cmds.select选中所有符合条件的曲线。

原代码失效原因:

你之前的代码使用了r=True(递归遍历)参数,会把所有子层级中的曲线都纳入结果,同时没有对曲线的父/子层级进行校验,因此会选中组内的曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:15:52