Object Hierarchy | Related C++ Class: Selection
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
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.
'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"
' ' 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