# SelectionManager

class Selection.SelectionManager()

  This class provides the main interface into the selection functionality of the viewer. The class manages a list of selection items that are optionally highlighted as the user selects objects in the scene.

Methods

- `add()`

- `advanceIncrementalSelection()`

- `beginConvexPolyhedronSelection()`

- `beginRayDrillSelection()`

- `beginScreenSelectByArea()`

- `beginSphereSelection()`

- `clear()`

- `contains()`

- `containsParent()`

- `each()`

- `endIncrementalSelection()`

- `exportSelectionData()`

- `getFirst()`

- `getHighlightFaceElementSelection()`

- `getHighlightLineElementSelection()`

- `getHighlightNodeSelection()`

- `getHighlightPointElementSelection()`

- `getIgnoreEntityWhenTogglingChildSelection()`

- `getLast()`

- `getNodeElementSelectionColor()`

- `getNodeElementSelectionHighlightMode()`

- `getNodeElementSelectionOutlineColor()`

- `getNodeSelectionColor()`

- `getNodeSelectionHighlightMode()`

- `getNodeSelectionOutlineColor()`

- `getPickTolerance()`

- `getPruneSelectionDescendants()`

- `getResult()`

- `getResults()`

- `getSelectParentIfSelected()`

- `getSelectedLayers()`

- `getSelectedTypes()`

- `getSelectionFilter()`

- `getSingleEntityToggleModeEnabled()`

- `getSuppressImplicitRemovalCallback()`

- `isNodeSelected()`

- `isSelected()`

- `loadSelectionData()`

- `remove()`

- `selectAllFromPoint()`

- `selectAllFromRay()`

- `selectFromPoint()`

- `selectFromRay()`

- `selectLayer()`

- `selectNode()`

- `selectType()`

- `set()`

- `setHighlightFaceElementSelection()`

- `setHighlightLineElementSelection()`

- `setHighlightNodeSelection()`

- `setHighlightPointElementSelection()`

- `setIgnoreEntityWhenTogglingChildSelection()`

- `setNodeElementSelectionColor()`

- `setNodeElementSelectionHighlightMode()`

- `setNodeElementSelectionOutlineColor()`

- `setNodeSelectionColor()`

- `setNodeSelectionHighlightMode()`

- `setNodeSelectionOutlineColor()`

- `setPickTolerance()`

- `setPruneSelectionDescendants()`

- `setSelectParentIfSelected()`

- `setSelectionFilter()`

- `setSingleEntityToggleModeEnabled()`

- `setSuppressImplicitRemovalCallback()`

- `size()`

- `toggle()`

## Methods

### add

SelectionManager.add(itemOrItems, suppressCallback)
  Arguments

    - itemOrItems (`null | NodeSelectionItem | [NodeSelectionItem]()`) – A selectionItem or selectionItem array that will be added to the current selection set.

    - suppressCallback (`boolean()`) – Optional boolean param to suppress the selectionArray callbacks calls to this generate.

  Manually adds an item or array of items to the selection set. Triggers a selection event.

  Return type

    void

### advanceIncrementalSelection

SelectionManager.advanceIncrementalSelection(handle, predicate)
  Arguments

    - handle (`IncrementalSelectionId()`) – The handle to an active area selection context.

    - predicate (`null | function()`) – An optional function that returns `true` if a given [[NodeSelectionItem]] should be added to the selection set. If `false` is returned, the item will not be added.

  Adds the next batch of instances selected by the supplied selection context to the selection set.

  Returns

    `true` if there are possibly more items to select and `false` if not.

  Return type

    Promise <boolean>

  SelectionManager.predicate(item)
    Arguments

      - item (`NodeSelectionItem()`) – None

    Return type

      Promise <boolean>

### beginConvexPolyhedronSelection

SelectionManager.beginConvexPolyhedronSelection(volumePlanes, heuristicOrigin, config)
  Arguments

    - volumePlanes (`[Plane]()`) – The planes used to define volume. A point p is inside the volume if and only if (plane.determineSide(p) == true) for all supplied planes.

    - heuristicOrigin (`Point3()`) – A point used to compute distances against for ordering returned results. This is typically (but not necessarily) the center of the volume.

    - config (`IncrementalPickConfig()`) – The configuration object used for this selection operation.

  Creates a new and active selection context for the provided selection volume. The selection volume is a convex polyhedron defined by the bounded intersection of its half-spaces.

  Returns

    The handle for the selection context.

  Return type

    Promise <IncrementalSelectionId>

### beginRayDrillSelection

SelectionManager.beginRayDrillSelection(rayCssOrigin, rayCssBoxRadius, config, view)
  Arguments

    - rayCssOrigin (`Point2()`) – The coordinate in css pixel space for the selection ray’s origin.

    - rayCssBoxRadius (`number()`) – The radius around the ray in css pixel space used for line and point selection proximity.

    - config (`IncrementalPickConfig()`) – The configuration object used for this selection operation.

    - view (`View()`) – The view to use when projecting the point into the scene.

  Creates a new and active selection context for the provided selection ray. The ray is created at the supplied ray origin and is cast into the scene. Faces are selected if they lie along the ray. Lines and points are selected if they lie within the ray’s box radius.

  Note: Somewhat confusingly ray drill selection is actually a selection by volume. The provided ray origin and radius are used to create a frustum to preform the selection. This has some consequences. For example, the ``SelectionResult``s returned by advancing a ray drill selection will not have selection positions, since they were not selected at a single point.

  Returns

    The handle for the selection context.

  Return type

    Promise <IncrementalSelectionId>

### beginScreenSelectByArea

SelectionManager.beginScreenSelectByArea(areaCssMin, areaCssMax, config, view)
  Arguments

    - areaCssMin (`Point2()`) – The minimum coordinate in css pixel space for the selection window.

    - areaCssMax (`Point2()`) – The maximum coordinate in css pixel space for the selection window.

    - config (`IncrementalPickConfig()`) – The configuration object used for this selection operation.

    - view (`View()`) – The view to use when projecting the point into the scene.

  Creates a new and active selection context for the provided selection window.

  Returns

    The handle for the selection context.

  Return type

    Promise <IncrementalSelectionId>

### beginSphereSelection

SelectionManager.beginSphereSelection(sphereCenter, sphereRadius, config)
  Arguments

    - sphereCenter (`Point3()`) – The center of the selection sphere.

    - sphereRadius (`number()`) – The radius of the selection sphere.

    - config (`IncrementalPickConfig()`) – The configuration object used for this selection operation.

  Creates a new and active selection context for the provided selection sphere.

  Returns

    The handle for the selection context.

  Return type

    Promise <IncrementalSelectionId>

### clear

SelectionManager.clear(triggerCallback)
  Arguments

    - triggerCallback (`boolean()`) – triggers a null selection callback when true.

  Removes all items from the selection set.

  Return type

    void

### contains

SelectionManager.contains(item)
  Arguments

    - item (`SelectionItem()`) – None

  Return type

    boolean

### containsParent

SelectionManager.containsParent(item)
  Arguments

    - item (`NodeSelectionItem()`) – None

  Checks if the parent of a selection item is in the selection set.

  Returns

    parent selection item, or null if not found

  Return type

    null | NodeSelectionItem

### each

SelectionManager.each(func)
  Arguments

    - func (`function()`) – a function to be called for every selection item.

  Iterates over all selection items. The function passed in will be called once for every selection item and will receive the item as its parameter.

  Return type

    void

  SelectionManager.func(s)
    Arguments

      - s (`NodeSelectionItem()`) – None

    Return type

      void

### endIncrementalSelection

SelectionManager.endIncrementalSelection(handle)
  Arguments

    - handle (`IncrementalSelectionId()`) – The selection context to destroy.

  Deactivates and destroys the provided selection context.

  Return type

    Promise <void>

### exportSelectionData

SelectionManager.exportSelectionData()

  Exports selection objects so that they may be loaded back into the the system at a later time using loadSelectionData.

  Returns

    exported selection data.

  Return type

    [object]

### getFirst

SelectionManager.getFirst()

  Gets the least recent selection item.

  Returns

    the least recently selected item (if any).

  Return type

    null | NodeSelectionItem

### getHighlightFaceElementSelection

SelectionManager.getHighlightFaceElementSelection()

  Gets whether face elements will be highlighted on selection.

  Returns

    boolean the current value for face element selection highlighting.

  Return type

    boolean

### getHighlightLineElementSelection

SelectionManager.getHighlightLineElementSelection()

  Gets whether line elements will be highlighted on selection.

  Returns

    boolean the current value for line element selection highlighting.

  Return type

    boolean

### getHighlightNodeSelection

SelectionManager.getHighlightNodeSelection()

  Gets whether nodes will be highlighted on selection.

  Returns

    the current value for node selection highlighting.

  Return type

    boolean

### getHighlightPointElementSelection

SelectionManager.getHighlightPointElementSelection()

  Gets whether point elements will be highlighted on selection.

  Returns

    boolean the current value for point element selection highlighting.

  Return type

    boolean

### getIgnoreEntityWhenTogglingChildSelection

SelectionManager.getIgnoreEntityWhenTogglingChildSelection()

  Gets whether ignore entity when toggling child selection mode is enabled. See also: [[setIgnoreEntityWhenTogglingChildSelection]]

  Return type

    boolean

### getLast

SelectionManager.getLast()

  Gets the most recent selection item.

  Returns

    the most recently selected item (if any).

  Return type

    null | NodeSelectionItem

### getNodeElementSelectionColor

SelectionManager.getNodeElementSelectionColor()

  Gets the color to use for face and line selection.

  Returns

    the color used for face and line selection.

  Return type

    Color

### getNodeElementSelectionHighlightMode

SelectionManager.getNodeElementSelectionHighlightMode()
  Return type

    SelectionHighlightMode

### getNodeElementSelectionOutlineColor

SelectionManager.getNodeElementSelectionOutlineColor()

  Gets the color to use for outlining face and line selection.

  Returns

    color the color used for outlining face and line selection.

  Return type

    Color

### getNodeSelectionColor

SelectionManager.getNodeSelectionColor()

  Gets the color to be used when selecting nodes.

  Returns

    the color that is applied to a selected node.

  Return type

    Color

### getNodeSelectionHighlightMode

SelectionManager.getNodeSelectionHighlightMode()

  Gets the highlighting mode for selected nodes.

  Returns

    the current

  Return type

    SelectionHighlightMode

### getNodeSelectionOutlineColor

SelectionManager.getNodeSelectionOutlineColor()

  Gets the color to be used for outlining the node selection.

  Returns

    the color for node selection outline.

  Return type

    Color

### getPickTolerance

SelectionManager.getPickTolerance()

  Gets the pick tolerance in pixels for line and point picking.

  The default value is 20.

  Returns

    number Pick tolerance value in pixels

  Return type

    number

### getPruneSelectionDescendants

SelectionManager.getPruneSelectionDescendants()

  Gets whether descendant pruning is enabled. See also: [[setPruneSelectionDescendants]]

  Return type

    boolean

### getResult

SelectionManager.getResult(index)
  Arguments

    - index (`number()`) – index of selection item to get

  Gets a selection at the specified index. The first selected item will be at index 0.

  Returns

    the selection result at the given index.

  Return type

    null | NodeSelectionItem

### getResults

SelectionManager.getResults()

  Gets all current selection items.

  Returns

    array of all selection items.

  Return type

    [NodeSelectionItem]

### getSelectParentIfSelected

SelectionManager.getSelectParentIfSelected()

  Gets whether automatic parent selection is enabled. See also: [[setSelectParentIfSelected]]

  Return type

    boolean

### getSelectedLayers

SelectionManager.getSelectedLayers()

  Gets all selected layers.

  Return type

    [string]

### getSelectedTypes

SelectionManager.getSelectedTypes()

  Gets all selected IFC types.

  Return type

    [string]

### getSelectionFilter

SelectionManager.getSelectionFilter()
  Returns

    [[SelectionFilter]] function or null if none is set.

  Return type

    null | SelectionFilter

### getSingleEntityToggleModeEnabled

SelectionManager.getSingleEntityToggleModeEnabled()

  Gets whether single entity toggle mode is enabled. See also: [[setSingleEntityToggleModeEnabled]]

  Return type

    boolean

### getSuppressImplicitRemovalCallback

SelectionManager.getSuppressImplicitRemovalCallback()

  Gets whether implicit removal callbacks are being suppressed See also: [[setSuppressImplicitRemovalCallback]]

  Return type

    boolean

### isNodeSelected

SelectionManager.isNodeSelected(nodeId)
  Arguments

    - nodeId (`number()`) – Node to check for

  Checks whether a node, or its parents, appear in the selection set or not. Note: for the purposes of this function element selections on a node are considered the same as node selection.

  Returns

    `true` if the node or its parents appear in the selection set. `false` otherwise

  Return type

    boolean

### isSelected

SelectionManager.isSelected(item)
  Arguments

    - item (`SelectionItem()`) – None

  Return type

    boolean

### loadSelectionData

SelectionManager.loadSelectionData(datas)
  Arguments

    - datas (`string | [object]()`) – None

  Loads serialized selection items exported using [[exportSelectionData]] back into the [[SelectionManager]]. The current selection will be cleared. A selection event will be triggered for each loaded item. This method should not be called before the [[CallbackMap.modelStructureReady]] callback has been triggered.

  Return type

    void

### remove

SelectionManager.remove(itemOrItems, suppressCallback)
  Arguments

    - itemOrItems (`NodeSelectionItem | [NodeSelectionItem]()`) – A selectionItem or an array of selection items that will be removed from the current selection set.

    - suppressCallback (`boolean()`) – Optional boolean param to suppress the selectionArray callbacks calls to this generate.

  Manually removes an item or an array of items from the selection set. Triggers a selection event.

  Return type

    void

### selectAllFromPoint

SelectionManager.selectAllFromPoint(point, config, selectionMode, view)
  Arguments

    - point (`Point2()`) – The canvas position to select from.

    - config (`PickConfig()`) – The configuration object used for this picking operation.

    - selectionMode (`SelectionMode()`) – The mode to use for this selection.

    - view (`View()`) – The view to use when projecting the point into the scene.

  Performs a selection operation from the given position on the canvas. All candidate entities are selected. This method triggers a selection event.

  Returns

    Promise that resolves when this operation has completed.

  Return type

    Promise <void>

### selectAllFromRay

SelectionManager.selectAllFromRay(ray, config, selectionMode, view)
  Arguments

    - ray (`Ray()`) – The world-space ray to perform the selection with.

    - config (`PickConfig()`) – The configuration object used for this picking operation.

    - selectionMode (`SelectionMode()`) – The mode to use for this selection.

    - view (`View()`) – The view to use when projecting the point into the scene.

  Performs a selection operation from the given world-space ray. All candidate entities are selected. This method triggers a selection event.

  Returns

    Promise that resolves when this operation has completed.

  Return type

    Promise <void>

### selectFromPoint

SelectionManager.selectFromPoint(point, config, selectionMode, view)
  Arguments

    - point (`Point2()`) – The canvas position to select from.

    - config (`PickConfig()`) – The configuration object used for this picking operation.

    - selectionMode (`SelectionMode()`) – The mode to use for this selection.

    - view (`View()`) – The view to use when projecting the point into the scene.

  Performs a selection operation from the given position on the canvas. The best candidate entity is selected. This method triggers a selection event.

  Returns

    Promise that resolves when this operation has completed.

  Return type

    Promise <void>

### selectFromRay

SelectionManager.selectFromRay(ray, config, selectionMode, view)
  Arguments

    - ray (`Ray()`) – The world-space ray to perform the selection with.

    - config (`PickConfig()`) – The configuration object used for this picking operation.

    - selectionMode (`SelectionMode()`) – The mode to use for this selection.

    - view (`View()`) – The view to use when projecting the point into the scene.

  Performs a selection operation from the given world-space ray. The best candidate entity is selected. This method triggers a selection event.

  Returns

    Promise that resolves when this operation has completed.

  Return type

    Promise <void>

### selectLayer

SelectionManager.selectLayer(layerName, selectionMode)
  Arguments

    - layerName (`string()`) – None

    - selectionMode (`SelectionMode()`) – None

  Adds all items in a layer to the selection set.

  Return type

    void

### selectNode

SelectionManager.selectNode(nodeId, selectionMode)
  Arguments

    - nodeId (`null | number()`) – nodeId of the node to select. Pass null to clear the selection.

    - selectionMode (`SelectionMode()`) – None

  Selects a node with the given Id.

  Returns

    the selection type of this operation.

  Return type

    SelectionType

### selectType

SelectionManager.selectType(genericType, selectionMode)
  Arguments

    - genericType (`string()`) – None

    - selectionMode (`SelectionMode()`) – None

  Adds all items with an IFC type to the selection set.

  Return type

    void

### set

SelectionManager.set(selection)
  Arguments

    - selection (`null | NodeSelectionItem()`) – None

  Manually removes all currently selected items (if any) from the selection set and adds the supplied item. Triggers a selection event.

  Return type

    void

### setHighlightFaceElementSelection

SelectionManager.setHighlightFaceElementSelection(highlightFaceElementSelection)
  Arguments

    - highlightFaceElementSelection (`boolean()`) – value indicating whether selected face elements should be highlighted.

  Sets whether face elements should be highlighted when a selection occurs. By default the system will automatically highlight face elements associated with a selection item.

  Return type

    Promise <void>

### setHighlightLineElementSelection

SelectionManager.setHighlightLineElementSelection(highlightLineElementSelection)
  Arguments

    - highlightLineElementSelection (`boolean()`) – value indicating whether selected line elements should be highlighted.

  Sets whether line elements should be highlighted when a selection occurs. By default the system will automatically highlight line elements associated with a selection item.

  Return type

    Promise <void>

### setHighlightNodeSelection

SelectionManager.setHighlightNodeSelection(highlightSelection)
  Arguments

    - highlightSelection (`boolean()`) – None

  Sets whether nodes should be highlighted when a selection occurs. By default, the system will automatically highlight the node associated with a selection item.

  Return type

    Promise <void>

### setHighlightPointElementSelection

SelectionManager.setHighlightPointElementSelection(highlightPointElementSelection)
  Arguments

    - highlightPointElementSelection (`boolean()`) – value indicating whether selected point elements should be highlighted.

  Sets whether point elements should be highlighted when a selection occurs. By default the system will automatically highlight point elements associated with a selection item.

  Return type

    Promise <void>

### setIgnoreEntityWhenTogglingChildSelection

SelectionManager.setIgnoreEntityWhenTogglingChildSelection(strictMode)
  Arguments

    - strictMode (`boolean()`) – None

  Enables / disables ignore entity when toggling child selection mode.

  When enabled, a [[NodeSelectionItem]] that has a selected ancestor may only be toggled if it does not contain an entity selection. A selection item without an entity selection is usually generated from selecting a node via a model tree control. A selection item containing an entity selection is usually generated as a result of a viewport picking operation.

  This behavior is enabled by default. See Also: [[toggle]]

  Return type

    void

### setNodeElementSelectionColor

SelectionManager.setNodeElementSelectionColor(color)
  Arguments

    - color (`Color()`) – the color to apply to selected node elements.

  Sets the color to use for node element selection. This method should not be called before the sceneReady callback has been triggered.

  Return type

    Promise <void>

### setNodeElementSelectionHighlightMode

SelectionManager.setNodeElementSelectionHighlightMode(highlightMode)
  Arguments

    - highlightMode (`SelectionHighlightMode()`) – the highlighting mode that will be applied to selected nodes.

  Sets the highlighting mode for selected node elements. The default behavior is to highlight the node element and render an overlay outline. This method should not be called before the sceneReady callback has been triggered.

  Return type

    Promise <void>

### setNodeElementSelectionOutlineColor

SelectionManager.setNodeElementSelectionOutlineColor(color)
  Arguments

    - color (`Color()`) – the color used for outlining face and line selection.

  Gets the color to use for outlining node element selection. This method should not be called before the sceneReady callback has been triggered.

  Return type

    Promise <void>

### setNodeSelectionColor

SelectionManager.setNodeSelectionColor(color)
  Arguments

    - color (`Color()`) – the color to apply to the selected node.

  Sets the color to be used when selecting nodes. This method should not be called before the sceneReady callback has been triggered.

  Return type

    Promise <void>

### setNodeSelectionHighlightMode

SelectionManager.setNodeSelectionHighlightMode(highlightMode)
  Arguments

    - highlightMode (`SelectionHighlightMode()`) – the highlighting mode that will be applied to selected nodes.

  Sets the highlighting mode for selected nodes. The default behavior is to highlight the node and render an overlay outline. This method should not be called before the sceneReady callback has been triggered.

  Return type

    Promise <void>

### setNodeSelectionOutlineColor

SelectionManager.setNodeSelectionOutlineColor(color)
  Arguments

    - color (`Color()`) – the color to apply to the node selection outline.

  Sets color for the node selection outline. This method should not be called before the sceneReady callback has been triggered.

  Return type

    Promise <void>

### setPickTolerance

SelectionManager.setPickTolerance(tolerance)
  Arguments

    - tolerance (`number()`) – None

  Sets the pick tolerance in pixels for line and point picking. If a line or point is within this pixel tolerance of the click point, it will be prioritized over the face at the click position.

  The default value is 20.

  Return type

    void

### setPruneSelectionDescendants

SelectionManager.setPruneSelectionDescendants(pruneSelectionDescendants)
  Arguments

    - pruneSelectionDescendants (`boolean()`) – None

  Enables / disables descendant pruning and clears the current selection set. When enabled, a parent and child will not be present in the same selection set. This behavior is enabled by default.

  Return type

    void

### setSelectParentIfSelected

SelectionManager.setSelectParentIfSelected(selectParent)
  Arguments

    - selectParent (`boolean()`) – None

  Enables / disables automatic parent selection. When enabled, if a selected part is selected again, its parent will be selected. This behavior is enabled by default.

  Return type

    void

### setSelectionFilter

SelectionManager.setSelectionFilter(selectionFilter)
  Arguments

    - selectionFilter (`null | SelectionFilter()`) – function that manipulates the selected NodeId.

  This allows manipulating the selected NodeId. To reset the filter, set it to null.

  Return type

    void

### setSingleEntityToggleModeEnabled

SelectionManager.setSingleEntityToggleModeEnabled(enabled)
  Arguments

    - enabled (`boolean()`) – None

  Enables / disables single entity toggle mode.

  When enabled, limits the selection set to containing only one entity selection for each node id. Toggling with an entity selection that has the same node id as a [[NodeSelectionItem]] already in the selection set will remove that item from the selection set.

  This behavior is disabled by default. See Also: [[toggle]]

  Return type

    void

### setSuppressImplicitRemovalCallback

SelectionManager.setSuppressImplicitRemovalCallback(suppress)
  Arguments

    - suppress (`boolean()`) – None

  Sets whether to generate selectionArray callbacks with implicitly removed nodes.

  For example, consider the case where you have a parent node that has a multiple child nodes. Normally, if the parent begins selected and then a child is removed from the selection set there will be two selectionArray callbacks generated. The first will for the removal of the parent node. The second wil be for the addition of all of it’s children except the one that was initially removed.

  When this behavior is enabled only a single selectionArray callback will be generated for the child node that was removed.

  This behavior is disabled by default.

  Return type

    void

### size

SelectionManager.size()

  Gets the number of selection items.

  Returns

    the number of selected items.

  Return type

    number

### toggle

SelectionManager.toggle(item)
  Arguments

    - item (`NodeSelectionItem()`) – None

  Manually adds or removes an item from the selection set. Triggers a selection event.

  Return type

    void