XSICollection.FindObjectsByMarkingAndCapabilities

Introduced

v5.0

Description

Returns the list of Parameter objects that match the input criteria (marked parameter list and/or capabilities).

Scripting Syntax

oReturn = XSICollection.FindObjectsByMarkingAndCapabilities( [Marking], [Caps] );

Return Value

XSICollection

Parameters

Parameter Type Description
Marking XSICollection, Array or marked parameters The list of marked parameters to find.

Default Value: matches all

Caps siCapabilities The parameter capabilities siCapabilities to match

Default Value: 0 (don't consider capabilities)

Examples

JScript Example

/*
This example demonstrates how to use the FindObjectsByMarkingAndCapabilities method
using several different matching criteria.
*/
NewScene( null, false );
GetPrim( "Null" );
// Collection object
var collection = XSIFactory.CreateActiveXObject( "XSI.Collection" );
// If you want to filter selection
collection.AddItems( Selection );
checkContents( "Selection", collection );
// Find all the keyable parameters (using no marking string)
// You can just omit the optional marking parameter
var subset = collection.FindObjectsByMarkingAndCapabilities( null, siKeyable );
checkContents( "Keyable (no marking)", subset );
// Find all the keyable parameters (using no marking string)
// Or you can use an empty marking string
subset = collection.FindObjectsByMarkingAndCapabilities( "", siKeyable );
checkContents( "Keyable (empty marking)", subset );
// Find all the 'keypanel' (siKeyable Or siNonKeyableVisible) parameters (using no marking string)
subset = collection.FindObjectsByMarkingAndCapabilities( null, (siKeyable || siNonKeyableVisible) );
checkContents( "Keypanel", subset );
// Find all the keyable kinematics local posx parameters
subset = collection.FindObjectsByMarkingAndCapabilities( "kine.posx", siKeyable );
checkContents( "Keyable Local PosX (kine.posx)", subset );
subset = collection.FindObjectsByMarkingAndCapabilities( "kine.local.pos.posx", siKeyable );
checkContents( "Keyable Local PosX (kine.local.pos.posx)", subset );
// Find all the marked keyable parameters
// Here we explicitly set the marking
SetMarking( "kine.local.pos" );
var markings = GetMarking().toArray();          // GetMarking returns a SAFEARRAY
subset = collection.FindObjectsByMarkingAndCapabilities( markings.join(), siKeyable );
checkContents( "Marked Keyable", subset );
// Find all the kinematics local posx parameters (using no capabilities)
subset = collection.FindObjectsByMarkingAndCapabilities( "kine.posx" );
checkContents( "Local PosX (no caps)", subset );
// Find all the animatable parameters (using no marking string)
subset = collection.FindObjectsByMarkingAndCapabilities( null, siAnimatable );
checkContents( "Animatable (no marking)", subset );
// Find all the readonly parameters (using no marking string)
subset = collection.FindObjectsByMarkingAndCapabilities( null, siReadOnly );
checkContents( "Read-Only (no marking)", subset );
// Convenience function to log information about the collection
function checkContents( in_name, in_coll )
{
if ( in_coll.Count > 0 ) {
LogMessage( in_name + " (" + in_coll.Count + ") = " + in_coll.GetAsText() );
} else {
LogMessage( in_name + " is empty" );
}
LogMessage( "--------------------------------------" );
}
//--------------------------------------------------
// Output of above script:
//INFO : Selection (1) = null
//INFO : --------------------------------------
//INFO : Keyable (no marking) (9) = null.kine.local.posx,null.kine.local.posy,null.kine.local.posz,null.kine.local.rotx,null.kine.local.roty,null.kine.local.rotz,null.kine.local.sclx,null.kine.local.scly,null.kine.local.sclz
//INFO : --------------------------------------
//INFO : Keyable (empty marking) (9) = null.kine.local.posx,null.kine.local.posy,null.kine.local.posz,null.kine.local.rotx,null.kine.local.roty,null.kine.local.rotz,null.kine.local.sclx,null.kine.local.scly,null.kine.local.sclz
//INFO : --------------------------------------
//INFO : Keypanel (9) = null.kine.local.posx,null.kine.local.posy,null.kine.local.posz,null.kine.local.rotx,null.kine.local.roty,null.kine.local.rotz,null.kine.local.sclx,null.kine.local.scly,null.kine.local.sclz
//INFO : --------------------------------------
//INFO : Keyable Local PosX (kine.posx) (1) = null.kine.local.posx
//INFO : --------------------------------------
//INFO : Keyable Local PosX (kine.local.pos.posx) (1) = null.kine.local.posx
//INFO : --------------------------------------
//INFO : Marked Keyable (3) = null.kine.local.posx,null.kine.local.posy,null.kine.local.posz
//INFO : --------------------------------------
//INFO : Local PosX (no caps) (1) = null.kine.local.posx
//INFO : --------------------------------------
//INFO : Animatable (no marking) (97) = null.null.size,null.null.primary_icon,null.null.shadow_icon,null.null.shadow_offsetX,null.null.shadow_offsetY,null.null.shadow_offsetZ,null.null.shadow_scaleX,null.null.shadow_scaleY,null.null.shadow_scaleZ,null.null.R,null.null.G,null.null.B,null.kine.global.posx,null.kine.global.posy,null.kine.global.posz,null.kine.global.rotx,null.kine.global.roty,null.kine.global.rotz,null.kine.global.sclx,null.kine.global.scly,null.kine.global.sclz,null.kine.global.sclorix,null.kine.global.scloriy,null.kine.global.scloriz,null.kine.local.blendweight,null.kine.local.active,null.kine.local.posx,null.kine.local.posy,null.kine.local.posz,null.kine.local.rotx,null.kine.local.roty,null.kine.local.rotz,null.kine.local.sclx,null.kine.local.scly,null.kine.local.sclz,null.kine.local.sclorix,null.kine.local.scloriy,null.kine.local.scloriz,null.kine.local.cnsscl,null.kine.local.cnsori,null.kine.local.cnspos,null.kine.local.rotorder,null.kine.local.pivotactive,null.kine.local.pposx,null.kine.local.pposy,null.kine.local.pposz,null.kine.local.protx,null.kine.local.proty,null.kine.local.protz,null.kine.local.psclx,null.kine.local.pscly,null.kine.local.psclz,null.kine.local.pivotcompactive,null.kine.local.pcposx,null.kine.local.pcposy,null.kine.local.pcposz,null.kine.local.pcrotx,null.kine.local.pcroty,null.kine.local.pcrotz,null.kine.local.pcsclx,null.kine.local.pcscly,null.kine.local.pcsclz,null.kine.local.nposx,null.kine.local.nposy,null.kine.local.nposz,null.kine.local.nrotx,null.kine.local.nroty,null.kine.local.nrotz,null.kine.local.nsclx,null.kine.local.nscly,null.kine.local.nsclz,null.kine.local.nsclorix,null.kine.local.nscloriy,null.kine.local.nscloriz,null.visibility.viewvis,null.visibility.rendvis,null.visibility.selectability,null.visibility.hidemaster,null.visibility.primray,null.visibility.scndray,null.visibility.shdwrecv,null.visibility.shdwcast,null.visibility.reflrecv,null.visibility.reflcast,null.visibility.refrrecv,null.visibility.refrcast,null.visibility.trnsrecv,null.visibility.trnscast,null.visibility.fgrecv,null.visibility.fgcast,null.visibility.fgvis,null.visibility.globrecv,null.visibility.globcast,null.visibility.globvis,null.visibility.causrecv,null.visibility.causcast,null.visibility.causvis
//INFO : --------------------------------------
//INFO : Read-Only (no marking) (7) = null.kine.global.velaccactive,null.kine.global.linaccx,null.kine.global.linaccy,null.kine.global.linaccz,null.kine.global.angaccx,null.kine.global.angaccy,null.kine.global.angaccz
//INFO : --------------------------------------