RemoveRefModelRe solution

Introduced

6.0

Description

Removes a resolution to a referenced Model. A referenced model can have an unlimited number of resolutions. Each resolution has a name and a file.

Warning: If you try to remove the active resolution, the command raises an Invalid Argument error. You can activate a different resolution via the "Active Resolution" parameter on the referenced model.

Scripting Syntax

    RemoveRefModelResolution( Model, ResolutionName, [Confirm] )

Parameters

Parameter | Type | Description
Model | String | The model containing the resolution you want to remove. Default Value: Current selection
ResolutionName | String | The name of the resolution.
Confirm | Boolean | This argument will indicate if you want to get a confirmation message before continuing with the resolution. This can be useful when writing scripts in order to avoid stopping the script. Default Value: False

Examples

VBScript Example

    '
    '  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

See Also

AddRefModelResolution

Autodesk Softimage v7.5