Object Hierarchy | 関連する C++クラス:FileReference
FileReference
v5.0
このオブジェクトは、ディスク上のファイルへの参照です。プロパティページのファイルの場所を指定する場合(たとえば、テクスチャマップのイメージファイルを指定する場合)、ファイルパス文字列は fileReference オブジェクトによって表されます。
FileReference オブジェクトは、ユーザパスと取得されたパスの 2 つのレベルのパスで使用されます。FileReference.Pathプロパティを使用してユーザパスにアクセスできます。これにより、環境変数(Windows の構文%MY_VAR%、または LinuX の構文$MY_VAR を使用します)を含めることができ、プロジェクトに関連付けることができます。
解決されたパスには、読み取り専用の FileReference.ResolvedPath プロパティまたは実際のフルパス(ローカルパスまたは UNC パス UNC path)である FileReference.UNCPath プロパティを使用してアクセスします。
Model.ExternalFiles および Scene.ExternalFiles によって戻された FileReferenceCollection から FileReference オブジェクトを取得できます。
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 |