runTimeCommand -command "sphere -name myName" mySphere;
import maya.cmds as cmds cmds.mySphere()
同様に Python ランタイム コマンドを作成し、次の構文を使用して Python からコールすることができます。
import maya.cmds as cmds def mySphere(): cmds.sphere(name='myName') cmds.runTimeCommand('MyBall', command='mySphere()')
cmds.MyBall()
詳細については、 Python から MEL を呼び出すを参照してください。
maya.cmds.scale(3, 3, 3, r=True, p=('0cm', '0.5cm', '0cm'))
import maya.cmds as cmds def defaultButtonPush(*args): print 'Default was pushed.' cmds.window( width=150 ) cmds.columnLayout( adjustableColumn=True ) cmds.button( label='Default', command=defaultButtonPush ) cmds.button( label='Left', align='left' ) cmds.button( label='Center', align='center' ) cmds.button( label='Right', align='right' ) cmds.showWindow()
select -r surface1.cv["*"][0];
Python では、値の範囲を指定する場合、クォーテーションなしの * を使用します。上の例は、Python では次のようになります。
cmds.select( 'surface1.cv[*][0]' , r=True)
結果を返すことと表示(エコー)することに関して、MEL と Python では 2 つの点で異なります。1 番目の違いは正しいスクリプト実行に関することで、2 番目の違いは表面的な問題です。このセクションでは、互いを混同しがちな、結果を返すことと表示することの両方について説明します。
この説明は、主に、MEL には慣れているが Python に触れるのは初めてという場合に役立ちます。
MEL は、スクリプトを実行すると、最後に実行したステートメントの結果があればそれを返します。値を変数に割り当てるステートメント、結果を返すプロシージャ呼び出しは、結果を返すタイプのステートメントです。たとえば、次のコード ブロックには結果があります。MEL はこれをスクリプト エディタやコマンド ラインのメッセージ領域に表示します。
if ( $foo == 1 ) $bar = 42; else $bar = 7;
これとは対照的に、Python は割り当てられた値を実行はしますが Python では値を割り当てるステートメントは値を返しません。
Python の構文では、単に変数を参照するだけで変数の値を返すことができます。MEL の構文では、完全なステートメントとして単に変数の名前を書くことはできません。
上記の MEL コード フラグメントは、Python では次のように書けます。最後のライン(bar)が結果を返します。
if foo == 1: bar = 42 else bar = 7 bar
いずれかの言語で計算した値を別の言語のコンテキストで使用する場合には、この違いを理解しておくことが重要です。たとえば、Python 値を MEL で使用するには以下のようにするだけ済みます。
$myMELvariable = python ("myPythonVariable");
逆に、MEL 変数を Python で使用するには、以下のように書く必要があります。
import maya.mel myPythonVariable = maya.mel.eval ('global $myMELvariable; $temp=$myMELvariable;' )
これは、eval コマンドに渡されるスクリプトの最後にある割り当てステートメントが値を返すため、機能します。