我希望在Maya中存储最后导入的文件的信息。 因此,当我拖放文件时,它将存储文件路径和文件名。
答案 0 :(得分:0)
因此,当您打开脚本编辑器时,您可以访问History/Echo all commands
以查看在Maya中执行操作时调用的函数。在您的情况下,将文件拖放到Maya时会调用函数performFileDropAction (string $theFile)
。
包含此功能代码的文件位于我的计算机上(我正在使用Maya 2014):C:\Program Files\Autodesk\Maya2014\scripts\others\performFileDropAction.mel
我修改了performFileDropAction (string $theFile)
,以便在MAYA_APP_DIR
的文本文件中保存您想要的信息。 MAYA_APP_DIR
是一个环境变量,包含Documents& Settings Maya文件夹的路径。在我的计算机上:C:\Users\myName\Documents\maya
保存信息的lastImportedFile.txt
包含:
C:/Path/To/My/Scene/Folder/
My_Scene.ma
您可以使用以下内容替换performFileDropAction (string $theFile)
代码:
注意:我不是一个程序员,我花了5分钟才弄清楚如何将字符串转换为数组...所以这段代码可能会有所改进“
global proc int
performFileDropAction (string $theFile)
{
global string $gv_operationMode;
string $save_gv_operationMode = $gv_operationMode;
$gv_operationMode = "Import";
int $result = performFileAction ($theFile, 1, "");
$gv_operationMode = $save_gv_operationMode;
////////////////////////////////////////////////////////////////
// Modified code starts here
string $sceneArray[]; // Splitted scene array
string $sceneFolder = ""; // Your scene folder
string $sceneName = ""; // Your scene name
$sceneArray = stringToStringArray ($theFile , "/");
// loop through the array
for($i=0;$i<size($sceneArray);++$i) {
if($i == size($sceneArray)-1){
$sceneName = $sceneArray[$i];
}else{
$sceneFolder += $sceneArray[$i] + "/"; // Recreate the scene folder
}
}
// Create A String Array With you data
string $myStrArray[] = {$sceneFolder, $sceneName};
// Save your file in Documents and Settings
string $filePath = `getenv MAYA_APP_DIR` + "/lastImportedFile.txt";
// Open Your File in write mode
$fileId = `fopen $filePath "w"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
////////////////////////////////////////////////////////////////
return ($result);
}
注意:
您可以通过这种方式修改每个Maya的菜单和选项,但在修改Maya的mel脚本时要小心。不要做蠢事,否则你将不得不重新安装Maya。