//檔案路徑在Mel中需要用ForwardSlashes(/)來區隔
//不同於視窗環境中的backslashes (\)
//首先,建立一個*.txt的文件檔案
//放入你想要在Maya中讀取的內容
//例如:
//objectName
pCube -n GGYY_001
pSphere -n GGYY_002
polySphere
polyPyramid
//設定好你的檔案路徑(file path)
//檔案路徑在Maya環境中需要用 ForwardSlashes(/) 來區隔
//不同於視窗環境中的 backslashes (\)
string $filePath = "D:/Temp/ggyy.txt" ;
//用 fopen 這個指令打開檔案
//"w" 打開複寫內容
//"a" 打開添加內容
//"r" 打開讀取內容
$fileId = `fopen $filePath "r"` ;
//定義一個新的陣列
string $dataArray[] ;
//用 fgetline 這個指令讀取檔案的第一行
string $nextLine = `fgetline $fileId` ;
//利用while迴圈用一行一行的形式讀取檔案中的所有資料
//直到 size($nextLine) = 0 表示已經沒有資料需要讀取
while (size($nextLine) > 0) {
//指令Strip移除變數string中的所有空白間隔
string $cleanLine = strip($nextLine) ;
//將檔案的內容加入 $dataArray[]
$dataArray[size($dataArray)] = $cleanLine ;
//再取得下一行內容,並迴圈
$nextLine = `fgetline $fileId` ;
};
//利用for迴圈檢視 $dataArray[] 中的資料
for($x=0;$x<size($dataArray);$x++)
{
print ($dataArray[$x]+"\n");
} ;
// ****************************************************************************************
//寫成 Procedure 來做指令呼叫
string $filePath = "D:/Temp/ggyy.txt" ; global proc string[] Filetest (int $skipFirstLine, string $filePath) {
$fileId = `fopen $filePath "r"` ;
string $dataArray[] ;
string $nextLine = `fgetline $fileId` ;
while (size($nextLine) > 0) {
string $cleanLine = strip($nextLine) ;
$dataArray[size($dataArray)] = $cleanLine ;
$nextLine = `fgetline $fileId` ;
}
// Remove First Line 拿掉第一行備註欄
if($skipFirstLine) stringArrayRemoveAtIndex(0,$dataArray) ;return $dataArray ;
}
//呼叫Procedure Filetest 提取檔案內容
//定義Procedure所呼叫的參數:$skipFirstLine, $filePath
string $ggyy[] = Filetest (0, $filePath) ;
//亦可以利用提取string內容來做command使用
//第四行是polySphere,並加上flagstring $command = $ggyy[3];
eval($command + " -r 5");
//另外還有幾的個檔案指令
//fread 讀取檔案內容
//此時 $data 並不是一個陣列,內容被視為一個整體字串//然後再運用 tokenize指令
string $data = `fread $fileId $data` ;
//fprint 顯示檔案內容
fprint $fileId;//fclose 關閉檔案
fclose $fileId; //參考教學來源:http://www.scriptswell.net/
沒有留言:
張貼留言