## SICreateLayerFromSelection

### Introduced

v5.0

### Description

Creates a new layer and add the selection to it but does not make the layer current.
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

    SICreateLayerFromSelection( [PresetObj], [Name], [InputObjs], [Value] );

### Parameters

Parameter | Type | Description
--- | --- | ---
PresetObj | String or a preset object (for example, an object obtained from SIGetPreset) | Layer preset to use Default Value: "Default_New_Layer"
Possible Values: | Description:
Default_New_Layer | Default new layer
Name | String | Name of the new layer
InputObjs | String | List of objects to move to the layer Default Value: Selected objects
Value | Layer | Returns the new layer

### Examples

#### 1. VBScript Example

    '
    ' This example shows how to use the current selection
    ' to create a new layer and set that layer to current
    '
    NewScene , false
    CreatePrim "Cylinder", "MeshSurface"
    CreatePrim "Sphere", "MeshSurface"
    ToggleSelection "cylinder", , True
    ' Now create the layer from the selection and make it current
    SICreateLayerFromSelection , "LayerA", , oLayer
    SetCurrentLayer oLayer

#### 2. JScript Example

    /*
            This example demonstrates how to create a new layer
            and set it to be the current layer
    */
    // Setup
    NewScene( null, false );
    CreatePrim("Cylinder", "MeshSurface", null, null);
    CreatePrim("Sphere", "MeshSurface", null, null);
    ToggleSelection("cylinder", null, true);
    // Get initial settings
    checkCurrLayer();
    // Make a new layer (it is *not* automatically set as current)
    var oLayer = SICreateLayerFromSelection( null, "LayerA" )(0);
    checkCurrLayer();
    // Now explicitly set the new layer as current and check again
    SetCurrentLayer( oLayer );
    checkCurrLayer();
    function checkCurrLayer()
    {
            // What is the current layer?
            var oCurrLayer = GetCurrentLayer()(0);
            Application.LogMessage( "Current layer is....." + oCurrLayer );
    }
    // Expected result:
    //INFO : Current layer is.....Layers.Layer_Default
    //INFO : Current layer is.....Layers.Layer_Default
    //INFO : Current layer is.....Layers.LayerA

#### 3. Python Example

    #
    # This example demonstrates how to
    # create a layer from a group
    #
    app = Application
    app.NewScene( "", 0 )
    # Create two nulls
    app.GetPrim( "Null" )
    app.GetPrim( "Null" )
    # Add them to a new group
    oGroup = app.CreateGroup( "NullsGroup", "null*" )
    # Move the group to a new layer
    ivtInfo = app.SICreateLayerFromSelection( "", "LayerNulls" )
    oLayer = ivtInfo.Value( "Value" )
    app.SetCurrentLayer( oLayer )

### See Also

SICreateLayer SICreateLayer2 SICreateLayerFromSelection2 CreateLayer