Maya Python:如何引用文件并立即从引用的文件中选择子文件

Maya Python:如何引用文件并立即从引用的文件中选择子文件,python,maya,Python,Maya,我需要为自动化编写python脚本,我需要执行以下操作: 引用文件 引用文件后,立即选择其子文件之一。 例如:参考文件的结构如下: 钻机玻璃钢 ->控制组 ->型玻璃钢 我的尝试是: import maya.cmds as cmds cmds.file("M:/.../rig.ma", r=True, ignoreVersion = True, namespace = "Rig") 上面的代码引用了rig文件,我的问题是:如何在导入rig文件后立即选择control_grp 大多数情况下,引

我需要为自动化编写python脚本,我需要执行以下操作:

引用文件 引用文件后,立即选择其子文件之一。 例如:参考文件的结构如下:

钻机玻璃钢 ->控制组 ->型玻璃钢 我的尝试是:

import maya.cmds as cmds

cmds.file("M:/.../rig.ma", r=True, ignoreVersion = True, namespace = "Rig")

上面的代码引用了rig文件,我的问题是:如何在导入rig文件后立即选择control_grp

大多数情况下,引用文件内容将作为名称空间的一部分出现,名称前面用名称和冒号标识,例如“reference:pCube1”。如果在中引用文件时控制名称空间,则可以在名称空间内搜索,而不是创建集合-但是,根据您或您的用户在“引用”对话框中设置选项的方式,您可能无法提前知道名称空间

如果您有名称空间,则很容易:

rig_namespace = "rig" # or whatever you call it
control_grp = "control_grp")  # name of the object you want
cmds.select(rig_namespace + ":" + control_grp)
如果不确定要搜索哪个名称空间,可以在将引用加载到python集中之前保存场景的内容,然后在引用进入后对内容进行新设置。使用set difference函数,您可以从后加载集中减去预加载集,从而获得引用文件附带的所有内容。然后,可以使用cmds.select从文件中获取要查找的项目

获取导入的文件内容 从导入的文件中获取控制装备
import maya.cmds as cmds
before = set(cmds.ls(type='transform'))
cmds.file(r"path/to/file.ma", reference=True)
after = set(cmds.ls(type='transform'))
imported = after - before
print imported 
controls = set(cmds.ls("*control_grp*", type = transform)) # wildcards in 
case maya has added numbers or prefixes
imported_controls = controls & imported # this gets only controls just added
cmds.select(*imported_controls) # you need the asterisk to unpack the set