## XSICollection.FindObjectsByMarkingAndCapabilities

### Introduced

v5.0

### Description

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

### C# Syntax

    CXSICollection XSICollection.FindObjectsByMarkingAndCapabilities( Object in_marking, Int32 in_Caps );

### 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 : --------------------------------------