RemoveRefModelResolution

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