フェースを表示トグルするツール
久しぶりに更新します。
とある事で必要に駆られたので作りました。
※WEBにもっといいやつありますし、あたらしいエクステンションには標準で搭載されてますが…
ポリゴン表示をトグルです。
一応ルールがあります。
1.初めてフェースを非表示にする時は、オブジェクトのフェース(消したい所)を選んで実行して下さい。
2.実行後は、フェース選択モードからオブジェクトモードに戻して下さい。
3.1回実行した後は、アウトライナーに【Poly_Hide_Set】という名のSetができるので、それを選んでスクリプトを実行して下さい。
それで非表示だった箇所が表示されます。
4.もう1回【Poly_Hide_Set】という名のSetを選んで実行すると、再度非表示になります。
これを繰り返してお使い下さい。
5.提出、納品時は【Poly_Hide_Set】という名のSetを選んで【Ctrl】キーを押してスクリプトを実行して下さい。
これで、setsと、ヒストリーが削除され、綺麗になります。
あと、連打実行はNGで、【Poly_Hide_Set】という名のSetの名前は絶対に変えないで下さい。
というより、名前が変わった際は、手動で消して下さい。
詳しくは動画にて。
SelPoly_Hide from tommy_on on Vimeo.
以下コード
# -*- coding: utf-8 -*- import maya.cmds as cmds import maya.mel as mel def SelPoly_Hide(): #選択をリストに格納 oSel = cmds.ls(sl=True) #フラグ立て Check = 0 #選択されていなかったら if oSel == []: return #キーボードステートをチェック mods = cmds.getModifiers() #コントロール押していたら、関数に飛んで終了 if (mods & 4) > 0: if oSel[0] == "Poly_Hide_Set": Toggle(oSel) Clean() return #選択がセットで且つ、コントロール押していなかったら。 if oSel[0] == "Poly_Hide_Set": Toggle(oSel) return #フェースを選択 oSelFace = cmds.filterExpand(sm=34) #フェースじゃなかったら if oSelFace == None: return #フェースからオブジェクトを取得 const = oSelFace[0].rpartition(".") #ヒストリーを取得 oList = cmds.listHistory(const[0]) for i in oList: #穴開けるヒストリーがあったら、フラグを立てる if i == "Hide_Poly": Check = 1 #フラグが立っていたら if Check == 1: cmds.polyHole(assignHole=0) #なかったら else: mel.eval('ToggleHoleFaces;') FaceSet = cmds.sets(n="Poly_Hide_Set") cmds.polyHole(assignHole=1) cmds.rename("polyHoleFace1","Hide_Poly") #単純に表示を切り替えているだけ def Toggle(oSel): cmds.select(hierarchy=True) mel.eval('ToggleHoleFaces;') cmds.select(cl=True) #ヒストリとセットを削除 def Clean(): cmds.delete("Hide_Poly") cmds.delete("Poly_Hide_Set") SelPoly_Hide()