こんにちは!Rhinoです。
先日思いつきでTwitterに頂点のロック / アンロックについて投稿したのですが、そちらを簡単なスクリプトで再現してみました。
再現したことで、いろいろ問題点もみえてきましたね。
う~んって感じです。
頂点のロック
今回はロックする対象は頂点に絞っています。
機能もシンプルで選択反転 / ロック / アンロック の3つだけになります。
ロック自体はsetAttrのlockフラグにTrueを与えることでできます。
アンロックする場合はFalseになります。
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import maya.mel as mel
# Invert selection
def invSelection( *args ):
mel.eval( 'invertSelection' )
# Lock selected Vertices
def verticesLock( *args ):
selection = cmds.ls( fl=True, sl=True )
verts = cmds.filterExpand( selection, sm=31 )
for v in verts:
cmds.setAttr( v, l=True )
# Unlock selected Vertices
def verticesUnlock( *args ):
selection = cmds.ls( fl=True, sl=True )
verts = cmds.filterExpand( selection, sm=31 )
for v in verts:
cmds.setAttr( v, l=False )
def createGUI( *args ):
if cmds.window( 'componentLockWindow', exists=True ):
cmds.deleteUI( 'componentLockWindow', window=True )
winComponentLock = cmds.window( 'componentLockWindow', title='Component Lock', s=True )
cmds.columnLayout( )
cmds.separator( h=4, st='none' )
cmds.button( l='Invert Selection', w=200, c=invSelection )
cmds.separator( h=4, st='none' )
cmds.button( l='Lock', w=200, c=verticesLock )
cmds.separator( h=4, st='none' )
cmds.button( l='Unlock', w=200, c=verticesUnlock )
cmds.separator( h=4, st='none' )
cmds.setParent( '..' )
cmds.showWindow( winComponentLock )
def main():
createGUI()
if __name__ == '__main__':
main()
問題点
Mayaはロックされた頂点に色を付けるなど、ぱっと分かり易くする方法が簡単には実装できそうにないですね。
ロック解除忘れなどが発生しそうで、それをどう改善するかで使い勝手が分かれそうです。
では、また!
コメント