2017-11

ブログ移転しました。ここはつぶやき保管所です。
移転先→でけぽんの落し物

スポンサーサイト

--------

Category :スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DekeFileItemList.mel

2013-03-12

Category :Mel

//◆C:/Program Files/Autodesk/Maya2012◆
// *****↑このスクリプトの一行目は消さないでください。参照できなくなります*****
//
//■指定ディレクトリ内のファイルを一覧表示するmel■
//
//作者:でけぽん
//
//Ver1.0 使える段階になったので公開。バグがあるかもしれない。
//
//今後の改良予定
//・選択ファイルをインポートできるボタン追加
//・もう1欄、真ん中にディレクトリをはさむオプションの追加
//
//◆概要
//メニュー[ファイル=>参照ディレクトリ]でディレクトリを指定すると
//そのディレクトリ内のフォルダを左欄に
//左欄で選択したフォルダのscenesフォルダ内を右欄に表示します。
//
//[参照ディレクトリ]
//├フォルダA(左欄)
//└フォルダB(左欄)
// ├sourceimages
// └scenes
//  ├ファイルA(右欄)
//  └ファイルB(右欄)
//
//右欄のファイルをダブルクリックすると強制的にOpenします。
//プロジェクトセットも同時に行います。
//開いているファイルを保存するなりしてからOpenしてください。
//
//◆注意
//読み取り専用にすると、参照ディレクトリが変更できなくなります。読み取り専用で保存しないでください。
//
//

global proc DekeFileItemList(){

if((`window -ex DekeFileItemList`)==true)deleteUI DekeFileItemList;
window -title "DekeFileItemList" -w 300 -menuBar 1 DekeFileItemList;

//メニュー作成
menu -l "ファイル";
menuItem -l "参照ディレクトリ" -c "DekeSelectReferenceDir()";
setParent..;

columnLayout -co "both" 2;
rowLayout -nc 2;
textScrollList -h 200 -w 150 -sc "DekeFileAppend()" DekeDirList;
textScrollList -h 200 -w 150 -dcc "DekeFileOpen()" DekeFileList;
setParent..;
button -label "更新" -w 100 -c "DekeDirAppend()";
setParent..;

//リストを取得
DekeDirAppend();

showWindow;
print `window -q -w DekeFileItemList`;
}

global proc DekeDirAppend(){
//指定ディレクトリのファイルをリストアップ

string $SearchList[];

//一覧の初期化
textScrollList -e -ra DekeDirList;

//指定ディレクトリのリストを得る
string $GetDir = DekeGetReference();
print ($GetDir + "を参照します。\n");
$SearchList = `getFileList -fld $GetDir -fs "*."`;

for($i in $SearchList)
{
textScrollList -e -append $i DekeDirList;
}
}

global proc DekeFileAppend(){
//選択中ディレクトリのファイルをリストアップ

string $GetDir = DekeGetReference();
string $SearchListMb[], $SearchListMa[];
string $SelectDir[];
string $SearchPath;

//一覧の初期化
textScrollList -e -ra DekeFileList;

//選択中のディレクトリのseanceフォルダ内を探索
$SelectDir = `textScrollList -q -si DekeDirList`;
$SearchPath = $GetDir + $SelectDir[0] + "/scenes/";
$SearchListMb = `getFileList -fld $SearchPath -fs "*.mb"`;
$SearchListMa = `getFileList -fld $SearchPath -fs "*.ma"`;

// print $SearchPath;

for($i in $SearchListMb)
{
textScrollList -e -append $i DekeFileList;
}
for($i in $SearchListMa)
{
textScrollList -e -append $i DekeFileList;
}
}

global proc DekeFileOpen(){
//指定ファイルを強制Open
//プロジェクトセットもする

//選択中のディレクトリとファイルを取得
string $GetDir = DekeGetReference();
string $SelectDir[];
$SelectDir = `textScrollList -q -si DekeDirList`;
string $SelectFile[];
$SelectFile = `textScrollList -q -si DekeFileList`;

//プロジェクトセットと強制Open
string $SetDir;
$SetDir = $GetDir + $SelectDir[0];
string $OpenFile;
$OpenFile = $GetDir + $SelectDir[0] + "/scenes/" + $SelectFile[0];

setProject $SetDir;
file -f -o $OpenFile;

}

global proc string DekeSearchThisMel(){
//このmelの場所を調べる=>string型で返す
//見つからないときは何も返せない…?

//探索パスの取得
string $ScriptPath;
string $ScriptPathALL[];
$ScriptPath = `getenv MAYA_SCRIPT_PATH`;
tokenize $ScriptPath ";" $ScriptPathALL;

//探索開始
string $GetPath;
for($i in $ScriptPathALL)
{
$i = $i + "/DekeFileItemList.mel";

if(`filetest -f $i` == 1)
{
// print ("◆" + $i + "発見しました\n");
$GetPath = $i;
}
}

return $GetPath;
}

global proc string DekeGetReference(){
//このmelの一行目を読取・分解・解析する=>string型で返す

int $fileId;
string $MelPlace;
string $firstLine;
string $GetRef[];
string $ReturnRef;

$MelPlace = DekeSearchThisMel();
if(size($MelPlace) < 0)
{
print "このmelがどこにあるのかわかりません。\n設定ディレクトリを初期化します\n";
$ReturnRef = "C:/Program Files/Autodesk/Maya2012";
return $ReturnRef;
}
else
{
$fileId = `fopen $MelPlace "r"`;
$firstLine = `fgetline $fileId`;
fclose $fileId;

tokenize $firstLine "◆" $GetRef;
$ReturnRef = $GetRef[1];

return $ReturnRef;
}

}

global proc DekeSelectReferenceDir(){
//参照ディレクトリを決める=>決めたディレクトリを返す

//ファイルダイアログから設定
string $SetDir[];
$SetDir = `fileDialog2 -fileMode 3`;

//1行目にかきこみ
DekeWriteThisMel($SetDir[0]);

//リスト更新
DekeDirAppend();
}

global proc DekeWriteThisMel(string $SetDir){
//このmelの一行目を書き換える

int $fileIdA, $fileIdB;

//このmelの場所を取得
string $MelPlace;
$MelPlace = DekeSearchThisMel();

//melを全行読み取る
string $oldText[];
int $r = 0;
$fileIdA = `fopen $MelPlace "r"`;
for($i=`fgetline $fileIdA`; size($i)>0; $i=`fgetline $fileIdA`)
{
$oldText[$r] = $i;
$r += 1;
}
fclose $fileIdA;

//1行目を変更する
string $firstLineT[];
string $firstLine;
tokenize $oldText[0] "◆" $firstLineT;
$firstLineT[1] = $SetDir;
$firstLine = $firstLineT[0] + "◆" + $firstLineT[1] + "/◆\n";

//全行を再構築する
string $newText;
$newText = $firstLine;
for($j=1; size($oldText)>=$j; $j++)
{
$newText = $newText + $oldText[$j];
}

//melに書き込む
$fileIdB = `fopen $MelPlace "w"`;
fprint $fileIdB $newText;
fclose $fileIdB;
}

DekeFileItemList;

* comment *

* comment *


管理者にだけ表示を許可する

トラックバック

http://ponponstar.blog75.fc2.com/tb.php/1103-24aa5634
この記事にトラックバックする(FC2ブログユーザー)

03/11のツイートまとめ *TOP* 03/10のツイートまとめ

FC2カウンター

プロフィール

でけぽん

Author:でけぽん
名前多い人ですwww
よく女の敵って言われる(見た目的に)

twitter

最新記事

最新コメント

月別アーカイブ

カテゴリ

検索フォーム

リンク

同盟



DSゲーム・PT


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。