## Selection

Object Hierarchy | Related C++ Class: Selection

### Introduced

v1.0

### Description

The selection object represents the global selection for the application. The user can change the global selection in the views, explorer, MCA (selection sub-panel in the main control panel), and through scripting (for example, see SelectObj, AddToSelection, RemoveFromSelection, ToggleSelection, DeselectAll, etc.).
Note: Selection provides access to its members through the Selection.Item property. Depending on what is selected, the Selection.Item property returns either the object or a CollectionItem. For example, if you select the whole sphere, the Selection.Item property returns the sphere as an X3DObject; however, if you select only a subcomponent (like an edge), it returns the edge as a CollectionItem.

### Methods

Add | Clear | GetAsText | Remove
SetAsText |  |  |

### Properties

Count | Filter | Item |

### Examples

#### 1. VBScript Example

    'This example demonstrates how a script can find the selected vertices

    'in a selection of multiple objects.

    'Set up a little scenario

    coneName = CreatePrim( "Cone", "MeshSurface" )

    sphereName = CreatePrim("Sphere", "MeshSurface" )

    DeselectAll

    AddToSelection coneName &".pnt[4,7,10]", , True

    AddToSelection sphereName &".pnt[1,2,3]", , True

    'Now iterate through the selection using the OM selection object

    set oSelection = Application.Selection

    for i = 0 to (oSelection.Count - 1)

    	if ( oSelection(i).Type = "pntSubComponent" ) then

    		logmessage "Found the following selected vertices on " & oSelection(i).Subcomponent.Parent3DObject.Name

    		'Selection of points

    		set subComponent = oSelection(i).SubComponent

    		selectedIndices = subComponent.ElementArray

    		for j = 0 to Ubound( selectedIndices, 1 )

    			logmessage selectedIndices(j)

    		next

    	else

    		logmessage "Nothing to do with " & oSelection(i).Name & "Type (" & oSelection(i).Type & ")"

    	end if

    next

    'Output of the above script is:

    '"Found the following selected vertices on cone"

    '"4"

    '"7"

    '"10"

    '"Found the following selected vertices on sphere"

    '"1"

    '"2"

    '"3"

#### 2. VBScript Example

    '

    ' This example shows how to save the current selection into

    ' an XSICollection object.  This can be very useful if you want

    ' to remember what objects were selected before running

    ' commands that might change the selection

    '

    ' Note: Although this example sets up its own selection, you

    ' could remove the SETUP section and run this example with

    ' your own selection instead.

    '

    ' SETUP

    NewScene , false

    set arc = CreatePrim( "Arc", "NurbsCurve" )

    set disc = CreatePrim( "Disc", "MeshSurface" )

    CreatePrim "Cylinder", "MeshSurface"

    set oSelection = Application.Selection

    oSelection.Clear

    oSelection.Add arc

    oSelection.Add disc

    ' MAIN

    Application.LogMessage "Current selection: " & oSelection.GetAsText()

    strSelection = oSelection.GetAsText()

    set oColl = CreateObject( "XSI.Collection" )

    oColl.SetAsText strSelection

    Application.LogMessage "Contents of XSICollection: " & oColl.GetAsText

    ' RESULTS

    'INFO : Current selection: arc,disc

    'INFO : Contents of XSICollection: arc,disc