| MEL How-To #78 | ||
| 
 | ||
| How do I determine the path for a script while it is executing; for example, to load another file in the same folder?If you have any global procedures in the script you can track it with the whatIs command. string $result = `whatIs myGlobalProc`; Unfortunately this returns the human-readable form of: Mel procedure found in: C:/AW/Maya4.0/scripts/others/myScript.mel But a simple tokenize will yield the result: string $tokens[]; tokenize $result " " $tokens; print ( "My location is: " + $tokens[4] + "\n" ); The output: My location is: C:/AW/Maya4.0/scripts/others/myScript.mel Note: If your path or filename contain spaces you'll have to concatenate elements 4+ to get the complete path description. You have to be careful that what you have found is in fact a MEL script and not an internal command. For example: whatIs sphere; // Result: Command // Consider the following script: 
global proc myScript()
{
    print ( "Procedure is running in script: " + whereIs( "myScript" ) + "\n" );
}
print ( "Script being sourced is: " + whereIs( "myScript" ) + "\n" );
And the whereIs MEL command: 
global proc string whereIs( string $procedure )
{
    string $where = "";
    if ( `exists $procedure` )
    {
        // Use the whatIs command to determine the location.
        string $result = eval( "whatIs " + $procedure );
        // Parse the human-readable form.
        string $tokens[];
        int $numTokens = `tokenize $result " " $tokens`;
        // Make sure this is a MEL script and not an internal command.
        if ( $tokens[0] == "Mel" )
        {
            // Concatenate path if it contains spaces.
            for ( $i = 4; $i < $numTokens; $i++ )
            {
                $where = $where + $tokens[$i];
                if ( $i < $numTokens )
                {
                    $where = $where + " ";
                }
            }
        }
    }
    return $where;
}
Put them together: source myScript; Script being sourced is: D:/AW/Bryan/scripts/myScript.mel myScript; Procedure is running in script: D:/AW/Bryan/scripts/myScript.mel Related How-To's | ||
| Copyright ©2005 by Bryan Ewert, maya@ewertb.com Maya is a Registered Trademark of Alias |