## SIGetPrimSpotLight

### Description

Creates a spot light primitive.
Note: This command uses output arguments. C# and some scripting languages (such as JScript, PerlScript and Python) don't support arguments passed by reference so you need to use the best workaround for your situation:
For scripting languages this command returns an ISIVTCollection which you can use to get the output arguments.
For C# you can use the XSIApplication.ExecuteCommand method to call this command. ExecuteCommand packs the output arguments into a C# System.Object containing an Array of the output arguments (see Calling Commands from C#).

### Scripting Syntax

    SIGetPrimSpotLight( PresetObj, [Name], [InterestName], [Parent], [3DObjSpot], [3DObjSpotInterest], [PrimObjSpot], [PrimObjSpotInterest] );

### Parameters

Parameter | Type | Description
--- | --- | ---
PresetObj | String | A spot light preset (see Light Primitives).
Possible Values: | Description:
Spot | The spot preset
Name | String | Name of the light.
InterestName | String | Name of the interest.
Parent | String | Parent object for the light.
3DObjSpot | Light | Returns the spot light object.
3DObjSpotInterest | Null | Returns the spot interest.
PrimObjSpot | Primitive | Returns the spot light primitive.
PrimObjSpotInterest | Primitive | Returns the interest primitive.

### Examples

#### JScript Example

    /*
            This example demonstrates how to retrieve the output arguments through
            the returned ISIVTCollection, by using their name with the Value property.
    */
    NewScene( null, false );
    // Get the output arguments via the ISIVTCollection
    var rtn = SIGetPrimSpotLight( "Spot.Preset", "MySpotName", "MySpotInterestName" );
    // With the ISIVTCollection, you can either get the items by index number using the Item
    // property, or by output argument name by using the Value property, which is much clearer
    // and faster to use
    var o3DObjSpot = rtn.Value("3DObjSpot");
    var o3DObjSpotInterest = rtn.Value("3DObjSpotInterest");
    var oPrimObjSpot = rtn.Value("PrimObjSpot");
    var oPrimObjSpotInterest = rtn.Value("PrimObjSpotInterest");
    // For each object, find out its name and class, if possible
    WhatAmI( o3DObjSpot );          //INFO : MySpotName is a Light
    WhatAmI( o3DObjSpotInterest );  //INFO : MySpotInterestName is a Null
    WhatAmI( oPrimObjSpot );                //INFO : MySpotName.light is a Primitive
    WhatAmI( oPrimObjSpotInterest );        //INFO : MySpotInterestName.SpotInterest is a Primitive
    // Convenience function
    function WhatAmI( in_obj )
    {
            // To prevent crashes, use the try...catch statement, because using ClassName
            // on a simple data type (string, number, etc.) will throw an error
            try {
                    LogMessage( in_obj + " is a " + ClassName(in_obj) );
            } catch (e) {
                    LogMessage( "input object is a " + typeof(in_obj) );
            }
    }

### See Also

GetPrimLight SIGetPrimLight