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