如何使用Mel在Maya中查找最后导入的文件路径和名称?

时间:2015-03-08 06:31:59

标签: python maya mel

我希望在Maya中存储最后导入的文件的信息。 因此,当我拖放文件时,它将存储文件路径和文件名。

1 个答案:

答案 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。