セットとクイック選択セットの 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")