- 2022.03.28 Monday
- スポンサーサイト
-
一定期間更新がないため広告を表示しています
- | スポンサードリンク | - | | - | - | pookmark |
- 2016.09.23 Friday
- Maya get lightList select light python test code
-
Maya get lightList python
New File
http://stackoverflow.com/questions/31961996/maya-python-get-light-type
Nodes type Light 29 hit
http://download.autodesk.com/global/docs/maya2014/en_us/Nodes/index.html
MEL と Python の重要な違い
MEL コマンドは Python でも使用できます。例:
runTimeCommand -command "sphere -name myName" mySphere;
- Python は、eval、evalDeferred、scriptJob の各 Maya コマンドをサポートしていません。ただし、以下に注意してください。
- Python には、Python エクスプレッションを評価するビルトインの eval 関数があります。
- Python には、MEL エクスプレッションを評価する maya.mel.eval があります。
- evalDeferred は、Python では maya.utils.executeDeferred() に置き換えられます。
詳細については、 Python から MEL を呼び出すを参照してください。
- MEL には、Maya メッセージ レポートに統合された独自の警告およびエラー メッセージ レポート機能があります。この中には、コマンド ラインでのカラー フィードバックが含まれます。Python には、警告およびエラー レポート機能があるシステム モジュールが装備されています。ただし、これらのモジュールは Maya に統合されておらず、コマンド ラインでのカラー フィードバックは行われません。
- Python での単位は文字列を引用符で囲んで指定する必要があります。たとえば次のようになります。
maya.cmds.scale(3, 3, 3, r=True, p=('0cm', '0.5cm', '0cm'))
- Python でのコマンド フラグ引数は、Python スクリプトを含む文字列(MEL の同等物と同様)か、関数などの Python が呼び出し可能なオブジェクトを取ります。
例:
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()
- MEL は、値の範囲の指定に Python とは異なる構文を使用します。MEL では、* を使用して値の範囲を指定する場合、「*」を使用して実行します。たとえば、次のようになります。
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; 出力:// 結果: 42 //
これとは対照的に、Python は割り当てられた値を実行はしますが Python では値を割り当てるステートメントは値を返しません。
Python の構文では、単に変数を参照するだけで変数の値を返すことができます。MEL の構文では、完全なステートメントとして単に変数の名前を書くことはできません。
上記の MEL コード フラグメントは、Python では次のように書けます。最後のライン(bar)が結果を返します。
if foo == 1: bar = 42 else bar = 7 bar
foo = 1 if foo == 1: bar = 42 else: bar = 7 スクリプトエディタで実行してから 実行Boxに以下を入れると出た。 bar 出力:# 結果: 42 #
いずれかの言語で計算した値を別の言語のコンテキストで使用する場合には、この違いを理解しておくことが重要です。たとえば、Python 値を MEL で使用するには以下のようにするだけ済みます。
$myMELvariable = python ("myPythonVariable");
逆に、MEL 変数を Python で使用するには、以下のように書く必要があります。
import maya.mel myPythonVariable = maya.mel.eval ('global $myMELvariable; $temp=$myMELvariable;' )
これは、eval コマンドに渡されるスクリプトの最後にある割り当てステートメント($temp=$myMELvariable;)が値を返すため、機能します。
Python では、関数外で作成した MEL 変数(グローバル スコープ)にのみアクセスすることができます。
結果を表示(エコー)する
MEL は、スクリプトの最後のステートメントで返された結果があれば何行でも表示します。
Python では、単一のステートメントの結果だけを表示します。
- Python は、eval、evalDeferred、scriptJob の各 Maya コマンドをサポートしていません。ただし、以下に注意してください。
- | whaison | Python | 18:03 | comments(0) | - | pookmark |
- Comment