【Maya:Python】法線の表示切り替え
shamimatsu
三味松ブログ
maya2022、2019を使用
以前に書いた記事でifを使って処理を分ける方法も試していますが、条件指定が複雑になる処理は面倒なのでクリック回数を取得したいと思っていました。
maya2022でpython3になったためコードを修正しました。
printにend=を入れるとステータスバーに文字が出力されます。
pymelで書く場合は(pm.displayInfo)を追加する
参考サイト:Maya print in status bar
# -*- coding: utf-8 -*-
import maya.cmds as cmds
class NumberCount:
def __init__(self):
self.i = 0
def EmptyFrame(self, *arg):
self.i += 1
print(end=self.i)
def show(self, *arg):
cmds.window("CountWindow", title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(columnWidth=150, columnAttach=("both", 0), rowSpacing=0)
cmds.button(label=u'Count', c=self.EmptyFrame)
cmds.showWindow()
def main():
w = NumberCount()
w.show()
main()
整数さえ取得出来てしまえばifを使っていくらでも処理を分けられます。
実用する場合は、処理を分けたい数に合わせてカウントを0に戻す処理も追加で必要になると思います。
if i == 1:
print('1です')
if i == 2:
print('2です')
__init__(self)に関してはあまり理解できておらず、とりあえず最初に実行されるという認識で使っています。
# -*- coding: utf-8 -*-
import maya.cmds as cmds
class NumberCount:
def __init__(self):
self.i = 0
def EmptyFrame(self, *arg):
self.i += 1
print self.i,
def show(self, *arg):
cmds.window("CountWindow", title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(columnWidth=150, columnAttach=("both", 0), rowSpacing=0)
cmds.button(label=u'Count', c=self.EmptyFrame)
cmds.showWindow()
def main():
w = NumberCount()
w.show()
main()
global を使う事によって関数の外にある変数を取得することが出来ました
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import pymel.core as pm
i = 0
def EmptyFrame(*arg):
global i
i += 1
pm.displayInfo(i)
cmds.window(title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(cw=150, cat=("both", 0), rs=0)
cmds.button(label=u'Count', c=EmptyFrame)
cmds.showWindow()
global を使う事によって関数の外にある変数を取得することが出来ました
# -*- coding: utf-8 -*-
import maya.cmds as cmds
i = 0
def EmptyFrame(*arg):
global i
i += 1
print i,
cmds.window(title=u'Number Count', mnb=False, mxb=False)
cmds.columnLayout(cw=150, cat=("both", 0), rs=0)
cmds.button(label=u'Count', c=EmptyFrame)
cmds.showWindow()