Object Hierarchy | Related C++ Class: FileReference
FileReference
v5.0
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.
| Application | Categories | FileType | FullName
![]() |
| GUID | Help | Name ![]() |
NestedObjects |
| NumberOfFilesInSequence | Origin | OriginPath | Owners |
| Parent | Path | ResolvedPath | Type ![]() |
| UNCPath | |||
/*
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
|