0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MayaAdvent Calendar 2024

Day 9

objectSetを下へ下へ

Last updated at Posted at 2024-12-08

mayaのobjectSetは階層化できますね。

image.png

この階層構造を取得したいんですけども、さてさて

試す

階層なのでとりあえず 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'] # 

を取れましたね。

階層が取得できれば、これをもとに再構築するのも出来そうですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?