FileReference

Object Hierarchy | Related C++ Class: FileReference

Inheritance

SIObject
   FileReference

Introduced

5.0

Description

This object represents a reference to a file on disk. When you specify a file location in a property page (for example, when you specify the image file for a texture map), the file path string is represented by a FileReference object.

The FileReference object uses two levels of path: the user path and the resolved path. You can access the user path using the FileReference.Path property, which can contain environment variables (using either the Windows syntax, %MY_VAR% or the Linux syntax, $MY_VAR) and can be relative to a project.

You can access the resolved path using the read-only FileReference.ResolvedPath property or the FileReference.UNCPath property, which represents the actual full path (as a local or a UNC path).

You can get FileReference objects from the FileReferenceCollection returned by Model.ExternalFiles and Scene.ExternalFiles.

Methods

FileExists

GetFileInSequence

IsClassOf

IsEqualTo

Properties

Application

Categories

FileType

FullName

GUID

Help

Name

NestedObjects

NumberOfFilesInSequence

Origin

OriginPath

Owners

Parent

Path

ResolvedPath

Type

UNCPath

 

 

 

Examples

JScript Example

/* 
   This example shows how to get the resolved path
   on each member of the external files list and how to 
   change the path on the fly.

   Note: To see the UNC path in action, change the location 
   of the NewFile variable to a valid UNC path 
   (for example, "\\\\mymachine\\toto\\Man_Face.emdl") that is 
   mapped to a drive letter (such as Q:) and rerun the example.
*/

NewScene( null, false );

// ---------------------------------------------------------------------------
//  Setup
//
// First import a model so we have some external files to find
var FPath = XSIUtils.BuildPath(
   Application.InstallationPath( siFactoryPath ),
   "Data", "XSI_SAMPLES", "Models", "Man_Face.emdl"
);
var oISIVTColl = ImportModel( FPath, null, true );

// Now copy the reference-model file to a local directory
var NewFile = "C:\\temp\\Man_Face.emdl";
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
fso.CopyFile( FPath, NewFile, true );

// ---------------------------------------------------------------------------
//  Using the FileReference Object
//
// Get the collection of all external files on the scene
var oModel = oISIVTColl.Value("Value");
var l_extFileList = oModel.ExternalFiles;

// Loop through the list and change only the 
// referenced model file to point to the one we put in c:\temp
for ( var i=0; i<l_extFileList.Count; i++ ) {
   // Get the FileReference object and print the path
   printFileInfo( l_extFileList(i) );

   // Change the path to point to the temp directory
   if ( l_extFileList(i).FileType == "Models" ) {
       // Make sure the original path exists, change it to 
       // the new one, and print the new path for confirmation
       if ( l_extFileList(i).FileExists() ) {
          var OldPath = l_extFileList(i).Path;
          Application.LogMessage( "ORIGINAL PATH: " + OldPath );

          l_extFileList(i).Path = NewFile;
          Application.LogMessage( "MODIFIED PATH: " + l_extFileList(i).Path );

          // Restore original name
          l_extFileList(i).Path = OldPath;
       }
   }
}



// ---------------------------------------------------------------------------
//  Convenience function
//
function printFileInfo( in_file ) {
   try {
       Application.LogMessage( Application.ClassName(in_file) );
   } catch(e) {
       if ( typeof(in_file).toLowerCase() == "object" ) {
          Application.LogMessage( in_file.FileType );
       } else {
          Application.LogMessage( typeof(in_file) );
       }
   }

   if ( in_file.FileExists() ) {
       // Get the original path 
       var o_path = in_file;

       // Get the resolved path
       var r_path = o_path.ResolvedPath;

       // Get the UNC path
       var u_path = o_path.UNCPath;

       // Print all three results
       Application.LogMessage( "ORIGINAL: " + o_path );
       Application.LogMessage( "RESOLVED: " + r_path ); 
       Application.LogMessage( "UNC     : " + u_path );
   } else {
       Application.LogMessage( "Skipping non-existent file" );
   }
}



// ---------------------------------------------------------------------------
//  OUTPUT
//
// INFO : FileReference
// INFO : ORIGINAL: <factory_path>\Data\XSI_SAMPLES\Models\Man_Face.emdl
// INFO : RESOLVED: <factory_path>\Data\XSI_SAMPLES\Models\Man_Face.emdl
// INFO : UNC     : <factory_path>\Data\XSI_SAMPLES\Models\Man_Face.emdl
// INFO : ORIGINAL PATH: <factory_path>\Data\XSI_SAMPLES\Models\Man_Face.emdl
// INFO : MODIFIED PATH: C:\temp\Man_Face.emdl
// INFO : FileReference
// INFO : Skipping non-existent file


Autodesk Softimage v7.5