mayaのobjectSetは階層化できますね。
この階層構造を取得したいんですけども、さてさて
試す
階層なのでとりあえず listRelativesを試してみる。
cmds.listRelatives("set3",ad =True)
なにも返ってきませんでした。
sets コマンドの説明を眺めてみてもー
うーん、なさそうですね。
再帰処理で下ってく
今回はAPIを眺める事はせず、pythonで再帰処理させて下へ下へと掘り進んでみます。
def getSetsHierarchy(setName,parentSets,setNameList):
## setName に属しているobjectSetの取得
setMembers = cmds.sets(setName,q=True) or []
setMembers = cmds.ls(setMembers, type = "objectSet") or []
## 次に掘り進む用リスト。 スタートから現在掘り進んでるとこまで
tmpParentSets = list(parentSets)
tmpParentSets.append(setName)
## setName に属しているobjectSetをリストに追加
for setMember in setMembers:
setLongName = "|".join(tmpParentSets)+ "|" + setMember
setNameList.append(setLongName)
##自身を呼び出して掘り進む
setNameList = getSetsHierarchy(setMember,tmpParentSets,setNameList)
return setNameList
さて実行してみると
getSetsHierarchy("set3",[],[])
# Result: ['set3|set7', 'set3|set7|set8', 'set3|set4', 'set3|set4|set5', 'set3|set4|set5|set6', 'set3|set2', 'set3|set2|set1'] #
を取れましたね。
階層が取得できれば、これをもとに再構築するのも出来そうですね。