【MEL基本】6時限目 ボタンで複数行のコマンドを実行する


AriOpenMultiWindow01.jpg

MEL基本最初の記事では、ボタンを押すと特定の機能が実行されるMELの書き方を説明しました。
しかしこの説明だけでは、複数行のコマンドを実行することが出来ません。

このブログでいうと
【MEL】新しいビューを別ウィンドウで開く
【MEL】同一頂点のマージを手軽に~マージの失敗を発見しやすく
など複数の行をスクリプトエディタに書き込んで実行するものです。

今回は複数行のコマンドや、複雑なコマンドの実行方法を説明します。
例ではわかりやすく、アウトライナ、ハイパーシェード、UVテクスチャエディタ、の3つのウィンドウをワンボタンで開くMELを書いてみます。

ただ最初に言っておきます。複数行でも単純なコマンドであれば改行を消して1行に詰め込めば実行できるには出来ます。今回はそうではなく、長く長く複雑なコマンドになったときにどうするかという意味も含めてです。



ボタンとウィンドウ

まず最低限のウィンドウとボタンだけのコードです。
実行するとボタンがひとつだけのウィンドウが開きます。
AriOpenMultiWindow02.jpg


{
if ( (`window -ex AriToolWindow`) == true ) deleteUI AriToolWindow;
window -title "機能ボタン" AriToolWindow;

scrollLayout;//スクロールバーのあるフィールド
columnLayout;//縦に並べる

button -w 120 -l "複数実行" -c "";//ボタン

setParent..;//縦に並べる終了
setParent..;//スクロールバーのあるフィールド終了

showWindow;
}

buttonコマンドの -c ""の中に何もないので、まだボタンを押しても何も実行されない状態です。

詳細はMEL基本最初の記事でわかると思います。



アウトライナ等3つのウィンドウを開くコマンド

先ほどの{ }の外に、新たに{ }で囲って3つのウィンドウを開くコマンドを書きます。
まだ実行する必要はありませんが、実行するとそのまま全部実行されるので、ウィンドウ3つも開きます。
AriOpenMultiWindow03.jpg


{
OutlinerWindow; //アウトライナ
HypershadeWindow; //ハイパーシェード
TextureViewWindow; //UVテクスチャエディタ
}


{
if ( (`window -ex AriToolWindow`) == true ) deleteUI AriToolWindow;
window -title "機能ボタン" AriToolWindow;

scrollLayout;//スクロールバーのあるフィールド
columnLayout;//縦に並べる

button -w 120 -l "複数実行" -c "";//ボタン

setParent..;//縦に並べる終了
setParent..;//スクロールバーのあるフィールド終了

showWindow;
}





コマンドをプロシージャ化

先ほど新たに書いた{ }の上にプロシージャ化するコマンドを追加します。
MELファイルの作り方にも書きましたが、global proc と書き、そのあとに後に好きな名前を書いて最後に()をつけます。
ここでつける名前は他のコマンドなどとかぶらないように気をつけてください。
AriOpenMultiWindow04.jpg

プロシージャ化したので、自分でつけたプロシージャ名(ここではAriOpenMultiWindow)を実行するだけで、{ }中のコマンドが実行される状態になりました。



ボタンコマンドでプロシージャを実行する

あとはこのプロシージャを実行したいので、buttonコマンドの-cフラグの後に、先ほどつけたプロシージャ名を書けば完成です。
AriOpenMultiWindow05.jpg



global proc AriOpenMultiWindow()
{
OutlinerWindow;
HypershadeWindow;
TextureViewWindow;
}


{
if ( (`window -ex AriToolWindow`) == true ) deleteUI AriToolWindow;
window -title "機能ボタン" AriToolWindow;

scrollLayout;//スクロールバーのあるフィールド
columnLayout;//縦に並べる

button -w 120 -l "複数実行" -c "AriOpenMultiWindow";//ボタン

setParent..;//縦に並べる終了
setParent..;//スクロールバーのあるフィールド終了

showWindow;
}


このようにglobal procによってプロシージャ化というものをして名前をつけておくと、後からその名前を実行するだけで、{ }の中が実行される仕組みになります。

global procを実行すると、その時点で{ }内の内容がMayaに登録される感覚で、コマンドをスクリプトエディタから消しても、Mayaを閉じるまでそのプロシージャは有効になります。
再びglobal proc の同じ名前を実行することで、内容を書き換えることは可能です。

ホントはglobalをつけず、procだけでプロシージャにはなるのですが、使う場所やタイミングが限定されるので、
今のところglobal procで、名前をかぶらないようにつけることだけ気をつけてください。あとMayaを閉じるまで有効になっているということも。

プロシージャは単にボタンで実行するためだけではなく、いろいろなところで使用されます。
同じ機能を何度も実行したい場合や、コードが複雑にならないようにするためでしょうか・・・。
(C言語等のプログラムでいうと関数というものにとても近いのですかね???)



おまけ
MEL化する場合

このボタンをMEL化したい場合、ボタンウィンドウの記述がある{ }のところにMEL化するプロシージャを書きます。
AriOpenMultiWindow06.jpg

ここの名前とMELファイル名を同じにして全部テキストにコピペしてください。詳細【MEL基本】MELファイルの作り方

MELを実行したときになんていうプロシージャを実行させたいか考えるとここに書くことになりますよね。




1時限目 ボタンで機能を実行するMELを書く
2時限目 コマンドとフラグについて
3時限目 MELファイルの作り方
4時限目 UIを横に並べる&アイコンボタンの使用方法
5時限目 Windowコマンドについて
6時限目 ボタンで複数行のコマンドを実行する

MEL基本カテゴリ





テーマ : 3DCG
ジャンル : コンピュータ

tag : Maya, MEL, MEL基本, UI, カスタマイズ,

スポンサーリンク

コメントの投稿

非公開コメント

カテゴリ
おすすMEL1
UV格子状整列 AriUVGridding03.gif

UV解像度チェック AriUVScaleChecker01.gif
アクセスランキング
[ジャンルランキング]
コンピュータ
4位
アクセスランキングを見る>>

[サブジャンルランキング]
デザイン
1位
アクセスランキングを見る>>
月別アーカイブ
スポンサーリンク
おすすMEL2
リネーマー AriRenamer01.gif

置換/配置 AriAssetChanger01.gif
記事一覧

全ての記事を一覧

ブログ内検索
プロフィール

Ari

Author:Ari
ExpertElite000.jpg
Autodesk Expert Elite
本業はゲーム系中心の3Dモデラーです(フリーランス)。
プライベートではその他の作業も興味持ったものは何でも挑戦中。
拍手ボタンありがとうございます。テンションあがります。

ツイッターでお知らせなどやってます。よかったらどうぞフォローお願いします。
ツイッターを覗いてみる

MEL
スポンサーリンク
QRコード
QR
タグ

Maya MEL モデリング MEL更新 Mayaあるある データ管理 UI カスタマイズ UV 数値設定 MayaTips ~がない アニメーション リネーム モデリングツールキット つぶやき AriCompactToolSettings マテリアル 記事まとめ AriReFreezeRotate Maya超基本 頂点カラー AriSetPivot 新機能 法線 MEL基本 Maya基本 ホットキー AriUVFit AriRenamer AriVertexColorEditor バグ? ~ない AriUVGridding AriSceneOpener AriMirror Normal AriCircleVertex AriViewWindow ジョイント スケルトン AriTransferPosition テクスチャ AriUVScaleChecker カメラ リトポロジー AriSelectMaterialAndObject AriAniKeyScale AriAdsorptionVertex レビュー AriPolygonCounter AriAniKeyCycle AriSortOutliner AriUVRatio AriUVSetList Rig AriCombineExtract AriQuadrangulateRing アンケート AriUVScaleUnfold 標準機能 3Dスキャナ AriJointBendOrient AriStraightVertex カーブ AriIconViewer AriSplitPolygon AriSelectEdgeRing AriSymmetryChecker UVGridding AriRenameShapeDefault AriMaterialList AriSamePositionSelector AriWindowPositionReset MEL更新頂点カラー レンダリング ZBrush AriUVNotchSew 更新 AriAnimationCopy AriUVAdsorption AriDeleteEdgePreserveBorder モデリングAriCircleVertex AriUVAdsorptionMove バグ修正 AriVertexColorChangeRGBA AriVertexColorSplitRGBA AriNormalDefaultBlend AriNormalValueCopy FBX スクリプト AriFBXExporter OBJ AriNormalRadial AriNormalSmooth AriSelectLoopRing AriWireColor AriComponentsController リトポロジ GameExporter AriAssetChanger AriQuickSelecter AriReFreezeScale 

最新記事
メールフォーム

名前:
メール:
件名:
本文: