Maya Script Pymel ウィンドウの表示

import pymel.core as pm

def test_attr_slider():
	obj = pm.ls(hl=1)
	if not obj:
		obj = pm.ls(os=1,o=1)
	if obj:
		pm.attrFieldSliderGrp("test",e=1,at="{0:}.tx".format(*obj))

def ui():
	name = "test"
	if pm.window(name,q=1,ex=1):
		pm.deleteUI(name)
	win = pm.window(name,t=name)
	win.setWidthHeight([250,50])
	
	with win:
		with pm.columnLayout():
			pm.attrFieldSliderGrp("test",cw=[1,1],min=-100,max=100)
	pm.scriptJob(p="test",e=["SelectionChanged","test_attr_slider()"])
ui()

ウィンドウの表示について、色々と学べたので、備忘録的に書いておきます。
「__exit__」のメソッドを持ったオブジェクトであれば、「with」文に入れると簡単に書けるようです。
マヤコマンドではUIの区切りで「cmds.setParent(‘..’)」と各必要がありますが、
それが要らなくなります。
なおかつPythonではインデントでブロックを見ているのでUIを記述すると
どうしても読みづらくなる傾向がありますが、それもこれで一発解決です。素晴らしい。
因みにマヤコマンドで同じ事をしてもダメでした。dir()で調べてみるとやはりメソッドが少ない。
 

上記のスクリプトでは、選択されたオブジェクトのトランスレートXをスライダーや数値入力で
変更できるスクリプトです。
ウェイトエディタを応用すれば複数のオブジェクトを一変に操れるだろう、と言うことはわかるのですが、
必要性を感じないので書きませんでした。

 

それと、変なところで可変長のリストを受け取るようにしています。
obj = obj[0]
というような書き方で受け取っても同じ事だと思いますが、こんな使い方もあるんだなぁ、
と、いうことで。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です