
#####
State
#####

.. js:class:: cee.usg.State

   A state connects a geometry to the results (scalar, vector, displacement and transformations) for a given time, frequency, load case etc.
   
   A model can have an arbitrary number of states, but only one can be shown at any given time.
   
   To create an animation you can create multiple states, and then only change the :js:func:`UnstructGridModel.currentStateIndex <cee.usg.UnstructGridModel.currentStateIndex>` property to advance the animation.
   
   A state must have one and only one geometry.
   
   The state can also have a scalar, vector, displacement and transformation result.
   
   For the results, you only have to specify the results for the parts that have results. Results are mapped to part via the zero based part index.
   
   
   Index
   =====
   
   .. rubric:: Accessors
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:func:`~cee.usg.State.geometry`
   * :js:func:`~cee.usg.State.name`
   * :js:func:`~cee.usg.State.referenceValue`
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~cee.usg.State.getBoundingBox`
   * :js:meth:`~cee.usg.State.getFringesResultRange`
   * :js:meth:`~cee.usg.State.getPartDisplacementsAt`
   * :js:meth:`~cee.usg.State.getPartFringesAt`
   * :js:meth:`~cee.usg.State.getPartTransformationAt`
   * :js:meth:`~cee.usg.State.getPartVectorsAt`
   * :js:meth:`~cee.usg.State.getVectorLengthRange`
   * :js:meth:`~cee.usg.State.removeAllPartDisplacements`
   * :js:meth:`~cee.usg.State.removeAllPartFringes`
   * :js:meth:`~cee.usg.State.removeAllPartTransformations`
   * :js:meth:`~cee.usg.State.removeAllPartVectors`
   * :js:meth:`~cee.usg.State.setPartDisplacementsAt`
   * :js:meth:`~cee.usg.State.setPartFringesAt`
   * :js:meth:`~cee.usg.State.setPartTransformationAt`
   * :js:meth:`~cee.usg.State.setPartVectorsAt`
   
   



.. rst-class:: kind-group kind-accessors

.. rubric:: Accessors
   :class: kind-group-title


.. js:method:: cee.usg.State.geometry

      .. rst-class:: sig-pretty-signature
      
         | *get* geometry(): :js:class:`Geometry <cee.usg.Geometry>`
      
      The one and only geometry in this state
      
      **Returns**\ : :js:class:`Geometry <cee.usg.Geometry>`
      
      .. rst-class:: sig-pretty-signature
      
         | *set* geometry(**geometry**\ : :js:class:`Geometry <cee.usg.Geometry>`\ ): *void*
      
      **Parameters**
      
      
         **geometry**\ : :js:class:`Geometry <cee.usg.Geometry>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.name

      .. rst-class:: sig-pretty-signature
      
         | *get* name(): *string*
      
      The user defined name of the state
      
      **Returns**\ : *string*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* name(**name**\ : *string*\ ): *void*
      
      **Parameters**
      
      
         **name**\ : *string*
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.referenceValue

      .. rst-class:: sig-pretty-signature
      
         | *get* referenceValue(): *number*
      
      The user defined reference value of the state (time, frequency, load case index, etc)
      
      **Returns**\ : *number*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* referenceValue(**value**\ : *number*\ ): *void*
      
      **Parameters**
      
      
         **value**\ : *number*
      
      
      **Returns**\ : *void*
      



.. rst-class:: kind-group kind-methods

.. rubric:: Methods
   :class: kind-group-title


.. js:method:: cee.usg.State.getBoundingBox

      .. rst-class:: sig-pretty-signature
      
         | getBoundingBox(): :js:class:`BoundingBox <cee.BoundingBox>`
      
      Returns the :js:class:`BoundingBox <cee.BoundingBox>` (in world coordinates) of the model.
      
      **Returns**\ : :js:class:`BoundingBox <cee.BoundingBox>`
      



.. js:method:: cee.usg.State.getFringesResultRange

      .. rst-class:: sig-pretty-signature
      
         | getFringesResultRange(): :js:class:`Range <cee.Range>`
      
      Get the min/max value of the scalar result in this part.
      
      **Returns**\ : :js:class:`Range <cee.Range>`
      



.. js:method:: cee.usg.State.getPartDisplacementsAt

      .. rst-class:: sig-pretty-signature
      
         | getPartDisplacementsAt(**partIndex**\ : *number*\ ): :js:class:`PartDisplacements <cee.usg.PartDisplacements>`
      
      Get the displacement result at the given zero based index, otherwise null.
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
      
      **Returns**\ : :js:class:`PartDisplacements <cee.usg.PartDisplacements>`
      



.. js:method:: cee.usg.State.getPartFringesAt

      .. rst-class:: sig-pretty-signature
      
         | getPartFringesAt(**partIndex**\ : *number*\ ): :js:class:`PartScalars <cee.usg.PartScalars>`
      
      Returns the :js:class:`PartScalars <cee.usg.PartScalars>` defining the fringes result shown on the given part. Null when none is specified.
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
      
      **Returns**\ : :js:class:`PartScalars <cee.usg.PartScalars>`
      



.. js:method:: cee.usg.State.getPartTransformationAt

      .. rst-class:: sig-pretty-signature
      
         | getPartTransformationAt(**partIndex**\ : *number*\ ): :js:class:`Mat4 <cee.Mat4>`
      
      Get the transformation matrix for the given part in this state, null if none is specified.
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
      
      **Returns**\ : :js:class:`Mat4 <cee.Mat4>`
      



.. js:method:: cee.usg.State.getPartVectorsAt

      .. rst-class:: sig-pretty-signature
      
         | getPartVectorsAt(**partIndex**\ : *number*\ ): :js:class:`PartVectors <cee.usg.PartVectors>`
      
      Returns the :js:class:`PartVectors <cee.usg.PartVectors>` defining the vector result shown on the given part. Null if not specified.
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
      
      **Returns**\ : :js:class:`PartVectors <cee.usg.PartVectors>`
      



.. js:method:: cee.usg.State.getVectorLengthRange

      .. rst-class:: sig-pretty-signature
      
         | getVectorLengthRange(): :js:class:`Range <cee.Range>`
      
      The range (min/max) of the vector lengths in all parts
      
      **Returns**\ : :js:class:`Range <cee.Range>`
      



.. js:method:: cee.usg.State.removeAllPartDisplacements

      .. rst-class:: sig-pretty-signature
      
         | removeAllPartDisplacements(): *void*
      
      Remove all displacement results in this state
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.removeAllPartFringes

      .. rst-class:: sig-pretty-signature
      
         | removeAllPartFringes(): *void*
      
      Remove all scalar fringes results from this state
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.removeAllPartTransformations

      .. rst-class:: sig-pretty-signature
      
         | removeAllPartTransformations(): *void*
      
      Remove the transformation matrices for all parts in this state
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.removeAllPartVectors

      .. rst-class:: sig-pretty-signature
      
         | removeAllPartVectors(): *void*
      
      Remove all vector results for all parts in this state
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.setPartDisplacementsAt

      .. rst-class:: sig-pretty-signature
      
         | setPartDisplacementsAt(**partIndex**\ : *number*\ , **partDisplacements**\ : :js:class:`PartDisplacements <cee.usg.PartDisplacements>`\ ): *void*
      
      Set the displacement result for the given part in this state
      
      Note: The :js:func:`PartSettings.displacementVisible <cee.usg.PartSettings.displacementVisible>` property must be true to show the result (default true)
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
         **partDisplacements**\ : :js:class:`PartDisplacements <cee.usg.PartDisplacements>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.setPartFringesAt

      .. rst-class:: sig-pretty-signature
      
         | setPartFringesAt(**partIndex**\ : *number*\ , **partFringes**\ : :js:class:`PartScalars <cee.usg.PartScalars>`\ ): *void*
      
      Set the scalar result that should be shown as fringes for the given part in this state.
      
      Note: The :js:func:`PartSettings.fringesVisible <cee.usg.PartSettings.fringesVisible>` property must be true to show the result (default true)
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
         **partFringes**\ : :js:class:`PartScalars <cee.usg.PartScalars>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.setPartTransformationAt

      .. rst-class:: sig-pretty-signature
      
         | setPartTransformationAt(**partIndex**\ : *number*\ , **partTransformationMatrix**\ : :js:class:`Mat4 <cee.Mat4>`\ ): *void*
      
      Set the transformation result (matrix) for the given part in this state.
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
         **partTransformationMatrix**\ : :js:class:`Mat4 <cee.Mat4>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.usg.State.setPartVectorsAt

      .. rst-class:: sig-pretty-signature
      
         | setPartVectorsAt(**partIndex**\ : *number*\ , **partVectors**\ : :js:class:`PartVectors <cee.usg.PartVectors>`\ ): *void*
      
      Set the vector result that should be shown as vector arrows for the given part in this state.
      
      Note: The :js:func:`PartSettings.vectorsVisible <cee.usg.PartSettings.vectorsVisible>` property must be true to show the result (default true)
      
      **Parameters**
      
      
         **partIndex**\ : *number*
      
         **partVectors**\ : :js:class:`PartVectors <cee.usg.PartVectors>`
      
      
      **Returns**\ : *void*
      




