maya セット(Sets)の概念を理解する

セットとクイック選択セットの 2 つある

ちなみにセットは非破壊(戻せる)、アセットは破壊(戻せない)機能のようだ。

Python

 import maya.cmds as cmds

 いくつかのオブジェクトを作成するーサンプルとして
 cmds.sphere( n="sphere1" ) 
 cmds.cone( n="cone1" ) 

 現在アクティブなものでセットを作成する
 cmds.select( 'sphere1' ) 
 newSet1 = cmds.sets() 
 cmds.select( 'cone1' ) 
 newSet2 = cmds.sets()

 セットのメンバーをクエリする
 cmds.sets( newSet1, q=True )

 2つのセットを含むセットを作成します
 cmds.sets( newSet1, newSet2, name="setOfSets" )

 セットを選択するには、-noExpandフラグを使用する必要があります。さもないと
 代わりにセットのメンバーが選択されます。
 cmds.select( newSet1, noExpand=True ) 
 cmds.ls( selection=True )

 セットのメンバーを選択します
 cmds.select( newSet1 ) 
 cmds.ls( selection=True )

 ballVerticesという名前の頂点セットを作成します。これには含まれます
 球のすべての頂点。
 cmds.sets( 'sphere1', name="ballVertices", vertices=1 ) 
 cmds.select( 'ballVertices' ) 

 2つのセットの和集合を返す
 cmds.sets( newSet2, union=newSet1 )

 セットのリストに共通のメンバーがあるかどうかをテストします
 cmds.sets( 'ballVertices',isIntersecting=newSet1)

 球がセットのメンバーであるかどうかをテストします
 cmds.sets('sphere1',isMember=newSet1)

 球をセットから削除します
 cmds.sets( 'sphere1', remove=newSet1 )

 球がセットのメンバーであるかどうかを再度テストします
 cmds.sets( 'sphere1', isMember=newSet1 )
import maya.cmds as cmds

# いくつかのオブジェクトを作成するーサンプルとして
cmds.sphere( n="sphere1" ) 
cmds.cone( n="cone1" ) 


# 現在アクティブなものでセットを作成する
cmds.select( 'sphere1' ) 
newSet1 = cmds.sets() 
cmds.select( 'cone1' ) 
newSet2 = cmds.sets()

# セットのメンバーをクエリする
cmds.sets( newSet1, q=True )

# 2つのセットを含むセットを作成します
cmds.sets( newSet1, newSet2, name="setOfSets" )

# セットを選択するには、-noExpandフラグを使用する必要があります。さもないと
# 代わりにセットのメンバーが選択されます。
cmds.select( newSet1, noExpand=True ) 
cmds.ls( selection=True )

# セットのメンバーを選択します
cmds.select( newSet1 ) 
cmds.ls( selection=True )

# ballVerticesという名前の頂点セットを作成します。これには含まれます
# 球のすべての頂点。
cmds.sets( 'sphere1', name="ballVertices", vertices=1 ) 
cmds.select( 'ballVertices' ) 

# 2つのセットの和集合を返す
cmds.sets( newSet2, union=newSet1 )

# セットのリストに共通のメンバーがあるかどうかをテストします
cmds.sets( 'ballVertices',isIntersecting=newSet1)

# 球がセットのメンバーであるかどうかをテストします
cmds.sets('sphere1',isMember=newSet1)

# 球をセットから削除します
cmds.sets( 'sphere1', remove=newSet1 )

# 球がセットのメンバーであるかどうかを再度テストします
cmds.sets( 'sphere1', isMember=newSet1 )

重複してたらそのセットから削除してから新規セットに追加する




def unique_obj_sets_make_selected(newSetName):
    #重複してたらそのセットから削除してから新規セットに追加する ---------------------------
    #-------------------------------------------------------------
    selected_arr=cmds.ls(selection=True)#  [pCube9,pCube10,pCube11]
    #newSet01_arr=cmds.sets( "newSet1", q=True )#  [pCube4,pCube5,pCube6]
    #newSet02_arr=cmds.sets( "newSet2", q=True )#  [pCube7,pCube8,pCube9]
    print("selected_arr= "+str(selected_arr))
    #print("newSet01_arr= "+str(newSet01_arr))
    #print("newSet02_arr= "+str(newSet02_arr))
    # python のsetを使ってそれぞれユニーク化する
    selected_set=set(selected_arr)
    #newSet01_set=set(newSet01_arr)
    #newSet02_set=set(newSet02_arr)
    print("selected_set= "+str(selected_set))
    #print("newSet01_set= "+str(newSet01_set))
    #print("newSet02_set= "+str(newSet02_set))
    # old_set を作る(和集合を使う)
    #old_set=newSet01_set | newSet02_set
    #print("old_set= "+str(old_set))
    
    # old_set_full を作る(和集合を使う)
    all_sets=cmds.ls(type="objectSet")
    print("all_sets= "+str(all_sets))
    old_arr_full=[]
    old_set_full=set(old_arr_full)
    for sets_name in all_sets:
        sets_arr=cmds.sets( sets_name, q=True )
        print("sets_arr= "+str(sets_arr))
        
        if(str(sets_arr)=="None"):
            print("None line")
        else:
            print("OK line")
            sets_arr_len=len(sets_arr)
            print("sets_arr_len= "+str(sets_arr_len))
            sets_set=set(sets_arr)
            old_set_full=old_set_full | sets_set
    print("old_set_full= "+str(old_set_full))
    
    # 積集合(共通部分をとる)
    s_intersection = old_set_full & selected_set
    print("s_intersection= "+str(s_intersection))
    list_intersection=list(s_intersection)
    #どこに入ってるかを調べる
    top_all=cmds.ls()
    #------------Get Type Name Code----------- 
    #print("top_all= "+str(top_all))
    #for top_obj in top_all:
    #    objectType=cmds.objectType( top_obj )
    #    print("objectType="+str(objectType)+" top_obj= "+str(top_obj))
    #----------------------------------------
    all_sets=cmds.ls(type="objectSet")
    print("all_sets= "+str(all_sets))
    for sets_name in all_sets:
        set_arr=cmds.sets( "newSet1", q=True )
        for intersect_obj in list_intersection:
            #セットのメンバーであるかどうかをテストします
            isMemberBool=cmds.sets(intersect_obj,isMember=sets_name)
            if(isMemberBool==True):
                print(" sets_name= "+str(sets_name)+" in intersect_obj="+str(intersect_obj))
                #セットから削除します
                cmds.sets( intersect_obj, remove=sets_name )
    
    cmds.select(selected_arr)
    newSet3 =cmds.sets( selected_arr, name=str(newSetName) )
    #newSet3 = cmds.sets() 
    
unique_obj_sets_make_selected("newSet3")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です