【MEL基本】1時限目 ボタンで機能を実行するMELを書く

使用する機能やMELが増えてくると、シェルフやショートカットでは整頓しきれなくなってきませんか?
そんなとき、これがあると少しすっきりさせることが出来ると思います。
すこしMELを書くことで結構簡単に作れますので今回はその作り方です。
このサイトのMELも増えてきたので、整頓MELを作ろうと思ったのですが、どうも登録や整理する操作がめんどくさくなりそうですし、使いやすいUIは人それぞれだと思うので、MELの基本もかねて、ウィンドウやボタンの作り方を書いてみることにしました。
MELを書く場所
Mayaの一番右下にあるアイコンで開く、スクリプトエディタを使います。
MELタブのほうに書いていきます。

最初はMELとPythonひとつずつしかタブが無いと思いますが、メニューの「コマンド」から増やしたり消したりできます。
右下にアイコンが無い場合こちらを参照してアイコンを表示させるか
【Mayaあるある】メニューバーとか色々メニューがない
メニューのウィンドウ>一般エディタ>スクリプトエディタ で開けます。
書いたMELの実行方法
今回作ろうとしてるMELですが、全部説明してると結構長くなってしまうので、一部書き直してカスタマイズしてもらう形になります。
その元となるソースが以下です。
コレをコピペして試しに実行してみてください。
{
if ( (`window -ex AriToolWindow`) == true ) deleteUI AriToolWindow;
window -title "機能ボタン" AriToolWindow;
scrollLayout;
columnLayout -w 120 -adj true;
button -l "シンメトリーチェック" -c "AriSymmetryChecker";
button -l "リネーマー" -c "AriRenamer";
separator ;//ただの分割線
button -l "UVスケール" -c "AriUVScaleChecker";
button -l "UV格子状" -c "AriUVGridding";
separator ;//ただの分割線
button -l "アウトライナ" -c "OutlinerWindow";
button -l "ハイパーシェード" -c "HypershadeWindow";
separator ;//ただの分割線
//ここから下はダミー
button -l "" -c "";
button -l "" -c "";
button -l "" -c "";
button -l "" -c "";
setParent..;
setParent..;
showWindow;
}
MELタブにコピペしたら・・・実行のしかたはいくつかありますが一番お手軽なものとして、
全選択してからテンキーのエンターです。
実行が成功するとウィンドウが表示されます。

全選択しないと書いたソースが消えちゃうので全選択します。
テンキー無いキーボードの場合はCtrl + Enterです。
ボタンにすきな機能を割り当てる
このコードの意味をざっとまとめるとこんな感じです。
機会があれば細かく説明しようと思いますが、今回は四角のなかのボタン群を編集します。

その中のどれでもいいのでbuttonと書いてある行に注目です。
buttonの後に、
-l の後にはボタンに表示する文字、
-c の後にはボタンを押したときに実行するコマンドを書くことで、
任意のボタンを作成することが出来ます。
その際"(ダブルクォテーション)で囲み黄色くなるようにしてください。行の最後に ; は必須です。

-l の後は表示に使うものなので、自分がわかりやすいものを好きに書くことができます。
もう書いてあるところを書き直してもいいですし、下のほうになにも書いてないものも用意してあるので、そこに書いてもいいです。
なにか機能を割り当ててみてください。
コマンド?
-cの後に書くコマンドとは、melを実行するときに使う.melを省いたものです。
アウトライナなど標準機能のコマンドも書くことができます。
標準機能のコマンドを調べるには、一度シェルフに登録してからシェルフの編集で確認するといいと思います。

並び替え
ボタンは上から順番に並んでいます。

separatorは分割線。赤い文字は単なるメモで、実行には関係ないコメントというものです。//をつけるとコメントになります。
行単位でカットペーストして並びを変えることが出来ます。

改行はあってもなくても影響ありません。ただ見やすくしているだけです。
コピーでどんどん増やすことも出来ますので、何とかカスタマイズしてみてください。
エラー
MELの記述には結構ルールがありまして、ルールに沿っていない書き方をすると、実行時エラーになります。
単純なものですと、全角文字を入れたり(ボタンの文字はOK)、最後に ; がなかったり、コマンドが間違ってたり、などですが、他にも色々あります。
エラーが出てしまったら、コピペなどに気をつけて慎重にやり直してみてください。
カスタマイズしたものをシェルフに登録
カスタマイズが出来たら、全選択して中ボタンドラックで、シェルフに登録できます。
【Maya基本】シェルフへの登録方法 の「スクリプトやコマンドの登録」参照。
スクリプトエディタの保存
スクリプトエディタにかかれたものは、特に保存をしなくとも、Maya終了のタイミングで保存されます。
ただMayaが強制終了されたりすると、保存されず消えてしまうので、定期的に、メモ帳などにコピペして保存しておくのがいいと思います。
スクリプトエディタのメニューからの保存はデフォルトフォルダがTempフォルダになっており、勝手に消される危険性大なので、そのせいもあってか自分はあまり使って無いです。(メモ帳などの)テキストエディタにコピペして保存してます。
つぶやき
MELの基本の最初をUIではじめるのも珍しいと思いますが、実用的なもがすぐに作れるのでMELに興味があるなし以前に、こうすれば出来ますよなノリで書きました。色々説明したいことは出てくるのですが、一度に書いてしまうと書いている側も、見てくださる側もごちゃごちゃしてわかりにくくなってしまうので、徐々に説明していきたいと思います。
とは言うものの行き当たりばったりなところもあるので、必要な説明の前後関係など、辻褄を合わせる自身がありませんが、気が向いたとき触れていこうと思います。

この機能ボタンに関しては、横に並べたり、アイコン入れたり、折りたたみのフレームいれたり、くらいは書きたいですが、細かくてわかりにくい仕様が多いんでどうなることか。割と簡単なはずなんですけどね。
とりあえず、次回は.melファイルの作り方を予定してます。
1時限目 ボタンで機能を実行するMELを書く
2時限目 コマンドとフラグについて
3時限目 MELファイルの作り方
4時限目 UIを横に並べる&アイコンボタンの使用方法
5時限目 Windowコマンドについて
6時限目 ボタンで複数行のコマンドを実行する
MEL基本カテゴリ
スポンサーリンク
コメントの投稿
No title
こちらのサイトは広告を貼られてないんですか?
グーグルアドセンスという広告をはると、ある程度の収益になると思います。
拍手やリツイートしてもらうとモチベーションアップに繋がりますが、
お金は"より"モチベーションが上がりますよ^^
良い記事を書いて頂き、僕もスクリプトを使わせて頂いてますので、
ちょっとした事を書いてみました。是非ご検討してみてください。
Re: No title
そうですねぇ~。
少し調べてみたことはあるのですが、条件だったり規約だったりを読んでるうちにめんどくさくなってしまって「後にしよう!」状態だったのです。
なので、一応導入が簡単な広告は貼ってみてはあります。
今のところ皆さんに反応いただけることがかなりのモチベになっているので、記事書くほうが楽しくてどうでもよくなってましたが、
確かにほったらかしで1年過ぎちゃいましたし、検討すべきことですね。
時間が取れるときにまた調べてみようと思います。
わざわざアドバイスありがとうございます!!
python実行
ボタンで機能を実行するMELにPythonスクリプトを実装したいのですが、ご教授いただけますでしょうか。
Mari2Mayaというスクリプトを実装したいと思っております。
スクリプトエディタでの実行コマンドはMari2Maya()です。
以上、お手数ですが、ご検討いただけると幸いです。
Re: python実行
pythonで Mari2Maya() を実行することと同じ機能だけであれば、-cの後、
-c "python \"Mari2Maya()\"";
こんな感じに書いていただければいけると思います。
ただし、pythonフィールドやシェルフで実行する時と同じく.pyのロードは必要です。
どうぞお試ししてみてください。
Re: python実行
迅速な回答ありがとうございます。
無事Pythonも実装できました。
感謝です。これからもよろしくお願いいたします。