2009年から仕事でMAYAを勉強。MAYAはデフォルトでは使い勝手が悪い。逆にスクリプトを覚えてカスタマイズするとかなり強力なツールになることがわかってきた。

物覚えが悪いので勉強したことはリマインダとしてココに書き留めるようにする。

2009年5月19日火曜日

XSI風味のプロジェクトマネージャー


MAYAのカレントプロジェクトの仕様はXSIから来るとどうにも使いづらい。なのでXSI風のプロジェクトマネージャーを作成。ボタンを押せばカレントプロジェクトディレクトリが変わります。

見ればわかるとおり7個分のDBをベタ記述(汗)。そのうち直せればいいなあ。



//プロジェクトマネージャー

//ディレクトリと名称を変数宣言
//ここのパスを書き換えるだけで6つまでプロジェクトリストを登録できます(7つ以上はプロシージャとボタンの追加が必要)
//★注意★MAYAはパスの区切り記号の"\"を認識できません(よう気がする)。必ずスラッシュに置き換えてください
//あとリストウィンドウが更新されなくなるバグがあるようです。原因不明。症状が起きたら一旦ウィンドウを消してみてください(放置でも動作に支障なし)

string $DBdir01 = "C:/onogu2/MAYAproject";
string $DBname01 = "C/ローカルtempフォルダ1";

string $DBdir02 = "C:/onogu2/MAYAproject";
string $DBname02 = "C/ローカルtempフォルダ2";

string $DBdir03 = "C:/onogu2/MAYAproject";
string $DBname03 = "C/ローカルtempフォルダ3";

string $DBdir04 = "C:/users";
string $DBname04 ="  (未登録)  ";

string $DBdir05 = "C:/users";
string $DBname05 = "  (未登録)  ";

string $DBdir06 = "C:/users";
string $DBname06 = "  (未登録)  ";

///////////////////////////////////////////////////////////////////////////

if(`window -ex prjWindow`) deleteUI prjWindow;

//DBリスト1
proc changeDB01()
{
global string $DBdir01;
setProject $DBdir01;
    //ディレクトリリスト更新
    if(`window -ex listWindow`) deleteUI listWindow;
    window -wh 250 120 listWindow;
    paneLayout ProjPanes;
    projFileViewer -dm 0 ProjFileView;
    paneLayout -e -cn single -sp ProjFileView 1 ProjPanes;
    projFileViewer -e -fr ProjFileView;
    showWindow;
}

//DBリスト2
proc changeDB02()
{
global string $DBdir02;
setProject $DBdir02;
    //ディレクトリリスト更新
    if(`window -ex listWindow`) deleteUI listWindow;
    window -rtf 0 -wh 250 120 listWindow;
    paneLayout ProjPanes;
    projFileViewer -dm 0 ProjFileView;
    paneLayout -e -cn single -sp ProjFileView 1 ProjPanes;
    projFileViewer -e -fr ProjFileView;
    showWindow;
}

//DBリスト3
proc changeDB03()
{
global string $DBdir03;
setProject $DBdir03;
    //ディレクトリリスト更新
    if(`window -ex listWindow`) deleteUI listWindow;
    window -rtf 0 -wh 250 120 listWindow;
    paneLayout ProjPanes;
    projFileViewer -dm 0 ProjFileView;
    paneLayout -e -cn single -sp ProjFileView 1 ProjPanes;
    projFileViewer -e -fr ProjFileView;
    showWindow;
}

//DBリスト4
proc changeDB04()
{
global string $DBdir04;
setProject $DBdir04;
    //ディレクトリリスト更新
    if(`window -ex listWindow`) deleteUI listWindow;
    window -rtf 0 -wh 250 120 listWindow;
    paneLayout ProjPanes;
    projFileViewer -dm 0 ProjFileView;
    paneLayout -e -cn single -sp ProjFileView 1 ProjPanes;
    projFileViewer -e -fr ProjFileView;
    showWindow;
}

//DBリスト5
proc changeDB05()
{
global string $DBdir05;
setProject $DBdir05;
    //ディレクトリリスト更新
    if(`window -ex listWindow`) deleteUI listWindow;
    window -rtf 0 -wh 250 120 listWindow;
    paneLayout ProjPanes;
    projFileViewer -dm 0 ProjFileView;
    paneLayout -e -cn single -sp ProjFileView 1 ProjPanes;
    projFileViewer -e -fr ProjFileView;
    showWindow;
}

//DBリスト6
proc changeDB06()
{
global string $DBdir06;
setProject $DBdir06;
    //ディレクトリリスト更新
    if(`window -ex listWindow`) deleteUI listWindow;
    window -rtf 0 -wh 250 120 listWindow;
    paneLayout ProjPanes;
    projFileViewer -dm 0 ProjFileView;
    paneLayout -e -cn single -sp ProjFileView 1 ProjPanes;
    projFileViewer -e -fr ProjFileView;
    showWindow;
}

///////////////////////////////////////////////////////////////////////////
//ファイルのロード
proc load()
{
OpenScene;
}

//ファイルのセーブ
proc save()
{
SaveSceneAs;
}

//ファイルの上書き保存
proc saveOverwrite()
{
file -save;
}

//ファイルのインポート
proc import()
{
Import;
}



///////////////////////////////////////////////////////////////////////////
//ボタンつきウィンドウの設定
window -title "プロジェクトマネージャー" prjWindow;
columnLayout -adjustableColumn true;
    text -label "プロジェクトDBの変更";
    button -label $DBname01 -align "left" -command "changeDB01";
    button -label $DBname02 -align "left" -command "changeDB02";
    button -label $DBname03 -align "left" -command "changeDB03";
    button -label $DBname04 -align "left" -command "changeDB04";
    button -label $DBname05 -align "left" -command "changeDB05";
    button -label $DBname06 -align "left" -command "changeDB06";
    separator -height 20 ;
    setParent ..;
rowLayout -numberOfColumns 4 -columnWidth4 60 60 90 60;
    button -label " ロード " -command "load";
    button -label " セーブ " -command "save";
    button -label " 上書き保存 " -command "saveOverwrite";
    button -label "インポート" -command "Import";
    setParent ..;
showWindow;
window -e -h 280 -w 320 prjWindow;
///////////////////////////////////////////////////////////////////////////





0 件のコメント: