v1.0
現在のシーンによって使用されているすべての外部ファイルを、現在のプロジェクトまたは指定のプロジェクトにコピーします。 このコマンドにより、プロジェクト内にシーンが自動的に含まれるようシーン別に外部ファイルを取りまとめることができます。 つまり、プロジェクトを zip 圧縮して別のコンピュータに解凍し、すべての外部ファイル(写真、オーディオなど)がその場所で使用できるようにすることが可能です。
ファイルは対応するディレクトリにコピーされます(例: 写真は Pictures ディレクトリにコピーされます)。
CopyExtFilesIntoProject( SceneFileName, [Overwrite], [Models], [UpdateSourcePaths], [Files], [IgnoreFilesFromRefModel] ); |
パラメータ | タイプ | 説明 |
---|---|---|
SceneFileName | 文字列 | シーンの完全パス名(目的のプロジェクト パス)。 |
Overwrite | Boolean |
ファイル(存在する場合)を上書きする場合は True デフォルト値: False |
Models | 文字列 |
モデルのリストが指定されている場合は、そのモデルに関連するファイルのみがコピーされます。
デフォルト値: 選択されたオブジェクト |
UpdateSourcePaths | Boolean |
True の場合、コピーされたファイルを持つすべてのソース オブジェクトがシーン内で更新されます。 現在のプロジェクトにコピーされた新しいファイルがシーンで使用されるため、このパスは現在のプロジェクトへの相対パスになります。 False の場合、ファイルはローカルにコピーされますが、シーンではコピー前のファイルが使用されます。 これは SaveAs コマンドでも同様です。
デフォルト値: True |
Files | 文字列 | この引数を使用してコピーするファイルを指定できます。 引数を指定した場合は、Models 引数が無視されます。 ファイル名は、解決されたパスか、ファイル パスの GUID です。 GUID を使用するほうがレスポンスは向上します。 複数のファイルを指定する場合はセミコロン(;)で区切ります。 |
IgnoreFilesFromRefModel | Boolean |
参照モデル内のオブジェクトが使用するファイルは変更できません。このファイルは、実際には元のモデル内にありシーンには存在しないためです。 シーンをロードするたびに、そのシーン内で参照されているモデルが元の場所から読み込まれます。 このため、これらのファイルのコピーを無視するほうが効率的であることがあります。 注: このパラメータを無効にすると、リファレンス モデルが参照しているファイルはコピーされますが、オブジェクトがロックされるため、そのパスのオブジェクト オーナーは変更されません。 デフォルト値: 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 ) |