v1.0
Copies all external files used by the current scene into the
current project or any given project. This command can be used to
centralize all external files used by a scene, so the scene is
self-contained in the project. In other words you can zip the
project and extract it on another machine and all external files
(like pictures, audio, etc.) will be there and valid.
Files are copied into their corresponding directories (for example,
a picture is copied into the Pictures directory).
CopyExtFilesIntoProject( SceneFileName, [Overwrite], [Models], [UpdateSourcePaths], [Files], [IgnoreFilesFromRefModel] ); |
Parameter | Type | Description |
---|---|---|
SceneFileName | String | Full path name of the scene, or the the project path of the destination. |
Overwrite | Boolean | True to overwrite the file if it exists
Default Value: False |
Models | String | If a list of models is
specified, only files that relate to these models will be copied.
Default Value: Selected objects |
UpdateSourcePaths | Boolean | If true, all sources objects that have files that have been
copied will be updated in the scene. This way the scene will use
the new files copied to the current project, so they will be
relative paths to the current project. If false, the files are
copied locally but the scene still use the files where they were
before they were copied. This is true when using a SaveAs command.
Default Value: True |
Files | String | With this argument you can specify which files are to be copied. When this argument is not empty the Models argument is ignored. The files can be either the resolved path or the GUID of the file path. Using a GUID will be more performant. Many files can be specified, they need to be separated by a semi-colon (;). |
IgnoreFilesFromRefModel | Boolean | The files that are used by objects in a referenced model cannot
be changed because the data is really in the original model, not in
the scene. Each time you load a scene, any models referenced in
that scene are imported from the original location. So because of
that you may want to ignore copying these files for
efficiency. Note: If this parameter is false, the files that are used by the referenced models will be copied but the object owner of the path will not be changed because the objects are locked. Default Value: True |
/* This example shows how to use CopyExtFilesIntoProject command to copy the external files used by a scene to a new destination. */ NewScene( "", false ); Application.LogMessage ( "Current project: " + Application.ActiveProject ); var sPathNewProject = XSIUtils.BuildPath( Application.InstallationPath( siFactoryPath ), "Data", "NewProject" ); Application.CreateProject( sPathNewProject ); var sPathScn = XSIUtils.BuildPath( Application.InstallationPath( siProjectPath ), "Scenes", "Texturing", "Head.scn" ); // Load a scene with textures OpenScene( sPathScn, false ); var oScene = Application.ActiveProject.ActiveScene; // Now copy all files in the new project, by setting the last argument to false // the source path is not updated but the file is copied. var oImageSource = oScene.ImageClips(0).Source; Application.LogMessage( "Before: " + oImageSource.Parameters("FileName").Value ); CopyExtFilesIntoProject( sPathNewProject, true, null, false ); Application.LogMessage( "After: " + oScene.ImageClips(0).Source.Parameters("FileName").Value ); // Now do the same but set the last argument to true, so we change the source Application.LogMessage( "Before: " + oScene.ImageClips(0).Source.Parameters("FileName").Value ); CopyExtFilesIntoProject( sPathNewProject, true, null, true ) Application.LogMessage( "After: " + oScene.ImageClips(0).Source.Parameters("FileName").Value ); Application.LogMessage ( "Current project: " + Application.ActiveProject); // Expected results (note that your_current_project_path will not change): // INFO : Current project: $XSI_HOME\Data\XSI_SAMPLES // INFO : Before: $XSI_HOME/Application/rsrc/noIcon.pic // INFO : After: $XSI_HOME/Application/rsrc/noIcon.pic // INFO : Before: $XSI_HOME/Application/rsrc/noIcon.pic // INFO : After: $XSI_HOME/Application/rsrc/noIcon.pic // INFO : Current project: $XSI_HOME\Data\XSI_SAMPLES |
# # This example shows how to use CopyExtFilesIntoProject command to copy some # specific files. This example is theorical because we copy some files that # are already under the pro7ject. # from win32com.client import constants as c app = Application sFactory = app.InstallationPath( c.siFactoryPath ) sProject = app.InstallationPath( c.siProjectPath ) sScene2Open = XSIUtils.BuildPath( sProject, "Scenes", "Texturing", "Head.scn" ) app.OpenScene( sScene2Open, 0, 0 ) # Note that the files are separated by a semi-colon sFile1 = XSIUtils.BuildPath( sProject, "Pictures", "Checks.pic" ) sFile2 = XSIUtils.BuildPath( sFactory, "Application", "rsrc", "noIcon.pic" ) sFiles = sFile1 + ";" + sFile2 app.CopyExtFilesIntoProject( sProject, 1, "", 0, sFiles, 1 ) |