.. role:: clio-static
   :class: clio-flag clio-flag-static


#############
SelectionItem
#############

.. js:class:: Selection.SelectionItem

   
   Index
   =====
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~Selection.SelectionItem.equals`
   * :js:meth:`~Selection.SelectionItem.getFaceEntity`
   * :js:meth:`~Selection.SelectionItem.getInclusionKey`
   * :js:meth:`~Selection.SelectionItem.getLineEntity`
   * :js:meth:`~Selection.SelectionItem.getNodeId`
   * :js:meth:`~Selection.SelectionItem.getPointEntity`
   * :js:meth:`~Selection.SelectionItem.getPosition`
   * :js:meth:`~Selection.SelectionItem.getSelectionType`
   * :js:meth:`~Selection.SelectionItem.isEntitySelection`
   * :js:meth:`~Selection.SelectionItem.isFaceSelection`
   * :js:meth:`~Selection.SelectionItem.isLineSelection`
   * :js:meth:`~Selection.SelectionItem.isNodeEntitySelection`
   * :js:meth:`~Selection.SelectionItem.isNodeSelection`
   * :js:meth:`~Selection.SelectionItem.isPointSelection`
   * :js:meth:`~Selection.SelectionItem.overlayIndex`
   * :js:meth:`~Selection.SelectionItem.toJson`
   * :js:meth:`~static Selection.SelectionItem.create`
   
   




Methods
=======

.. js:method:: Selection.SelectionItem.equals

   .. rst-class:: sig-pretty-signature
   
      | equals(**selectionItem**\ : :js:class:`SelectionItem <Selection.SelectionItem>`\ ): *boolean*
   
   Determines if two selection items are equal.
   
   **Parameters**
   
      **selectionItem**\ : :js:class:`SelectionItem <Selection.SelectionItem>`
   
         The selection item to test against.
   
   
   
   **Returns**\ : *boolean*
   
      whether or not the two items are equal.
   
   



.. js:method:: Selection.SelectionItem.getFaceEntity

   .. rst-class:: sig-pretty-signature
   
      | getFaceEntity(): (*None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
   Gets the face entity for this selection.
   
   **Returns**\ : (*None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      the face entity if one was selected, otherwise null
   
   



.. js:method:: Selection.SelectionItem.getInclusionKey

   .. rst-class:: sig-pretty-signature
   
      | getInclusionKey(): (*None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
   Gets the include id for this selection.
   
   **Returns**\ : (*None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      the inclusion key associated with this selection item
   
   



.. js:method:: Selection.SelectionItem.getLineEntity

   .. rst-class:: sig-pretty-signature
   
      | getLineEntity(): (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
   Gets the line entity for this selection.
   
   **Returns**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      the line entity if one was selected, otherwise null
   
   



.. js:method:: Selection.SelectionItem.getNodeId

   .. rst-class:: sig-pretty-signature
   
      | getNodeId(): *number*
   
   Gets the part id for this selection.
   
   **Returns**\ : *number*
   
      the part id associated with this selection item
   
   



.. js:method:: Selection.SelectionItem.getPointEntity

   .. rst-class:: sig-pretty-signature
   
      | getPointEntity(): (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   Gets the point entity for this selection.
   
   **Returns**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
      the point entity if one was selected, otherwise null
   
   



.. js:method:: Selection.SelectionItem.getPosition

   .. rst-class:: sig-pretty-signature
   
      | getPosition(): (*None* \| :js:class:`~Point3`\ )
   
   Convenience method for getting the world space position of the selection point. [[SelectionItem]]s with a type of [[SelectionType.Part]] will not have a position and null will be returned.
   
   **Returns**\ : (*None* \| :js:class:`~Point3`\ )
   
      World space position of the selection point if it can be determined.
   
   



.. js:method:: Selection.SelectionItem.getSelectionType

   .. rst-class:: sig-pretty-signature
   
      | getSelectionType(): :js:data:`~SelectionType`
   
   **Returns**\ : :js:data:`~SelectionType`
   



.. js:method:: Selection.SelectionItem.isEntitySelection

   .. rst-class:: sig-pretty-signature
   
      | isEntitySelection(): this *is* :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   **Returns**\ : this *is* :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
      true if the object has the fields required for an [[EntitySelectionItem]]. This function can be used as a TypeScript `type guard <https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards>`_\ .
   
   



.. js:method:: Selection.SelectionItem.isFaceSelection

   .. rst-class:: sig-pretty-signature
   
      | isFaceSelection(): this *is* :js:class:`FaceSelectionItem <Selection.FaceSelectionItem>`
   
   **Returns**\ : this *is* :js:class:`FaceSelectionItem <Selection.FaceSelectionItem>`
   
      true if the object has the fields required for a [[FaceSelectionItem]]. This function can be used as a TypeScript `type guard <https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards>`_\ .
   
   



.. js:method:: Selection.SelectionItem.isLineSelection

   .. rst-class:: sig-pretty-signature
   
      | isLineSelection(): this *is* :js:class:`LineSelectionItem <Selection.LineSelectionItem>`
   
   **Returns**\ : this *is* :js:class:`LineSelectionItem <Selection.LineSelectionItem>`
   
      true if the object has the fields required for a [[LineSelectionItem]]. This function can be used as a TypeScript `type guard <https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards>`_\ .
   
   



.. js:method:: Selection.SelectionItem.isNodeEntitySelection

   .. rst-class:: sig-pretty-signature
   
      | isNodeEntitySelection(): this *is* :js:class:`NodeEntitySelectionItem <Selection.NodeEntitySelectionItem>`
   
   **Returns**\ : this *is* :js:class:`NodeEntitySelectionItem <Selection.NodeEntitySelectionItem>`
   
      true if the object has the fields required for a [[NodeEntitySelectionItem]]. This function can be used as a TypeScript `type guard <https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards>`_\ .
   
   



.. js:method:: Selection.SelectionItem.isNodeSelection

   .. rst-class:: sig-pretty-signature
   
      | isNodeSelection(): this *is* :js:class:`NodeSelectionItem <Selection.NodeSelectionItem>`
   
   **Returns**\ : this *is* :js:class:`NodeSelectionItem <Selection.NodeSelectionItem>`
   
      true if the object has the fields required for a [[NodeSelectionItem]]. This function can be used as a TypeScript `type guard <https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards>`_\ .
   
   



.. js:method:: Selection.SelectionItem.isPointSelection

   .. rst-class:: sig-pretty-signature
   
      | isPointSelection(): this *is* :js:class:`PointSelectionItem <Selection.PointSelectionItem>`
   
   **Returns**\ : this *is* :js:class:`PointSelectionItem <Selection.PointSelectionItem>`
   
      true if the object has the fields required for a [[PointSelectionItem]]. This function can be used as a TypeScript `type guard <https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards>`_\ .
   
   



.. js:method:: Selection.SelectionItem.overlayIndex

   .. rst-class:: sig-pretty-signature
   
      | overlayIndex(): (*None* \| *number*\ )
   
   Gets the overlay index for this selection.
   
   **Returns**\ : (*None* \| *number*\ )
   
      the overlay index associated with this selection item
   
   



.. js:method:: Selection.SelectionItem.toJson

   .. rst-class:: sig-pretty-signature
   
      | toJson(): *object*
   
   Creates an object ready for JSON serialization.
   
   **Returns**\ : *object*
   
      The prepared object.
   
   



.. js:method:: static Selection.SelectionItem.create

   .. rst-class:: clio-flags
   
      :clio-static:`static`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : *number*\ , **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : :js:class:`FaceEntity <Selection.FaceEntity>`\ , **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ ), **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )): :js:class:`FaceSelectionItem <Selection.FaceSelectionItem>`
   
   Create a new [[FaceSelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : :js:class:`FaceEntity <Selection.FaceEntity>`
   
      **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   
   **Returns**\ : :js:class:`FaceSelectionItem <Selection.FaceSelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : *number*\ , **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ ), **lineEntity**\ : :js:class:`LineEntity <Selection.LineEntity>`\ , **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )): :js:class:`LineSelectionItem <Selection.LineSelectionItem>`
   
   Create a new [[LineSelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      **lineEntity**\ : :js:class:`LineEntity <Selection.LineEntity>`
   
      **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   
   **Returns**\ : :js:class:`LineSelectionItem <Selection.LineSelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : *number*\ , **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ ), **lineEntity**\ : (*undefined* \| *None* \| :js:class:`LineEntity <Selection.LineEntity>`\ ), **pointEntity**\ : :js:class:`PointEntity <Selection.PointEntity>`\ ): :js:class:`PointSelectionItem <Selection.PointSelectionItem>`
   
   Create a new [[PointSelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      **lineEntity**\ : (*undefined* \| *None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      **pointEntity**\ : :js:class:`PointEntity <Selection.PointEntity>`
   
   
   **Returns**\ : :js:class:`PointSelectionItem <Selection.PointSelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : (*undefined* \| *None* \| *number*\ ), **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : :js:class:`FaceEntity <Selection.FaceEntity>`\ , **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ ), **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )): :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   Create a new [[EntitySelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : (*undefined* \| *None* \| *number*\ )
   
      **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : :js:class:`FaceEntity <Selection.FaceEntity>`
   
      **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   
   **Returns**\ : :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : (*undefined* \| *None* \| *number*\ ), **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ ), **lineEntity**\ : :js:class:`LineEntity <Selection.LineEntity>`\ , **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )): :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   Create a new [[EntitySelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : (*undefined* \| *None* \| *number*\ )
   
      **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      **lineEntity**\ : :js:class:`LineEntity <Selection.LineEntity>`
   
      **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   
   **Returns**\ : :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : (*undefined* \| *None* \| *number*\ ), **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ ), **lineEntity**\ : (*undefined* \| *None* \| :js:class:`LineEntity <Selection.LineEntity>`\ ), **pointEntity**\ : :js:class:`PointEntity <Selection.PointEntity>`\ ): :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   Create a new [[EntitySelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : (*undefined* \| *None* \| *number*\ )
   
      **inclusionKey**\ : (*undefined* \| *None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : (*undefined* \| *None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      **lineEntity**\ : (*undefined* \| *None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      **pointEntity**\ : :js:class:`PointEntity <Selection.PointEntity>`
   
   
   **Returns**\ : :js:class:`EntitySelectionItem <Selection.EntitySelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : *number*\ , **inclusionKey**\ : (*None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : (*None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ ), **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ ), **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )): :js:class:`NodeSelectionItem <Selection.NodeSelectionItem>`
   
   Create a new [[NodeSelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **inclusionKey**\ : (*None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : (*None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   
   **Returns**\ : :js:class:`NodeSelectionItem <Selection.NodeSelectionItem>`
   
   .. rst-class:: sig-pretty-signature
   
      | create(**nodeId**\ : (*None* \| *number*\ ), **inclusionKey**\ : (*None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ ), **faceEntity**\ : (*None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ ), **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ ), **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )): :js:class:`SelectionItem <Selection.SelectionItem>`
   
   Create a new [[SelectionItem]].
   
   **Parameters**
   
      **nodeId**\ : (*None* \| *number*\ )
   
      **inclusionKey**\ : (*None* \| :js:data:`InclusionKey <Sc.InclusionKey>`\ )
   
      **faceEntity**\ : (*None* \| :js:class:`FaceEntity <Selection.FaceEntity>`\ )
   
      **lineEntity**\ : (*None* \| :js:class:`LineEntity <Selection.LineEntity>`\ )
   
      **pointEntity**\ : (*None* \| :js:class:`PointEntity <Selection.PointEntity>`\ )
   
   
   **Returns**\ : :js:class:`SelectionItem <Selection.SelectionItem>`
   





