RemoveRefModelResolution

導入

v6.0

カテゴリ

RefModel

詳細

リファレンスModelから解像度を削除します。 リファレンス モデルには、解像度を無制限に設定できます。 各解像度には、名前とファイルがあります。

警告: 有効な解像度を削除しようとすると、「Invalid Argument」エラーが発生します。 リファレンス モデルの[有効解像度]パラメータを介して、別の解像度を有効にすることができます。

スクリプト構文

RemoveRefModelResolution( Model, ResolutionName, [Confirm] );

パラメータ

パラメータ タイプ 詳細
Model 文字列 削除する解像度を含むモデル。

デフォルト値: 現在選択されている値

ResolutionName 文字列 解像度の名前。
Confirm ブール この引数は、解像度の処理を続行する前にユーザが確認メッセージを受け取るかどうかを示します。 この引数は、スクリプトを停止させないようにスクリプトを作成する場合に便利です。

デフォルト値: False

VBScript の例

' 
'       This example illustrates how to add and remove resolutions on a reference model. It also demonstrates
'       how to navigate through the resolution information on a reference model (see the convenience functions
'       at the bottom of the example, especially GetAllResolutions).
'
' Import a referenced model.
NewScene , false
sModelPath =  XSIUtils.BuildPath( Application.InstallationPath(siFactoryPath), _
        "Data", "XSI_SAMPLES", "Models", "ManSkeleton_Basic.emdl" )
ImportModel sModelPath, , true 
' Add a new resolution
set oRefModel = Application.ActiveSceneRoot.Models.Item(0)
AddRefModelResolution oRefModel, "MyRes", sModelPath
' Now remove the original resolution
iTargetRes = GetResolutionIndexByName( oRefModel, "res1" )
if iTargetRes > -1 then
        iCurrentRes = oRefModel.NestedObjects("Active Resolution").Value
        if iCurrentRes = iTargetRes then
                ' Change the active resolution to the new one and remove the original
                oRefModel.NestedObjects("Active Resolution").Value = iTargetRes + 1
                RemoveRefModelResolution oRefModel, "res1", true 
        end if
        ' Display again the resolutions
        LogResolutions oRefModel 
end if
' Expected results:
' INFO : res0
' INFO :     file =  
' INFO :     name =  Offloaded
' INFO : res1
' INFO :     file =  Models\ManSkeleton_Basic.emdl
' INFO :     name =  res1
' INFO : res2
' INFO :     file =  Models\ManSkeleton_Basic.emdl
' INFO :     name =  MyRes
' INFO : res0
' INFO :     file =  
' INFO :     name =  Offloaded
' INFO : res1
' INFO :     file =  Models\ManSkeleton_Basic.emdl
' INFO :     name =  MyRes
'
'       These are convenience functions that do most of the work of navigating through
'       the resolutions information nested under each reference model. The resolutions 
'       info is never displayed in the UI, but you can think of its structure like so:
'       
'               ReferenceModel (model)
'                       - Resolutions (special container)
'                               - res0 (compound parameter)
'                                       - File parameter (eg., "<installationpath>/Data/XSI_SAMPLES/Models/ManSkeleton_Basic.emdl")
'                                       - Name parameter (eg., "MyRes")
'                               + res1
'                                 ...
'                               + resN
'                               
'       In order to access this info you need to use the SIObject.NestedObjects property
'       on the ReferenceModel, the Resolutions container, and then each resolution parameter.
'
function GetAllResolutions( in_oRefModel )
        for each oCurrentContainer in in_oRefModel.NestedObjects
                if oCurrentContainer.Name = "Resolutions" then
                        set GetAllResolutions = oCurrentContainer.NestedObjects
                        exit function
                end if
        next
end function
'
'       Logs the file and name values of each resolution to history
'
sub LogResolutions( in_oRefModel )
        ' Visit each resolution and find its name and file info
        set oResolutions = GetAllResolutions( in_oRefModel )
        for each oResolutionParameter in oResolutions 
                Application.LogMessage oResolutionParameter.Name 
                ' The file and name parameters are nested under the compound resolution parameter
                for each oResInfoParam in oResolutionParameter.NestedObjects
                        Application.LogMessage "    " & oResInfoParam.Name & " =  " & oResInfoParam.Value 
                next
        next
end sub
' 
'       Returns the index number of the resolution given its name
'
function GetResolutionIndexByName( in_oModel, in_sResName )
        ' Visit each resolution and check its name against the specified name
        set oResolutions = GetAllResolutions( in_oModel )
        for i=0 to oResolutions.Count
                set oResolutionParameter = oResolutions(i)
                if oResolutionParameter.NestedObjects("name").Value = in_sResName then
                        GetResolutionIndexByName = i
                        exit function
                end if
        next
        ' If not found, return a negative value
        GetResolutionIndexByName = -1
end function

関連項目

AddRefModelResolution