
###
usg
###

.. js:module:: cee.usg

   The **usg** sub-module provides functionality for working client side with unstructured surface grids
   
   Assuming that the EnvisionWeb client component has been imported into the variable ``cee``\ , members of the usg module may be referenced using the ``cee.usg`` prefix, e.g.:
   
   .. code-block:: javascript
   
      var model = new cee.usg.UnstructGridModel();
   
   .. image:: /images/Usg.png
      :alt: None
   
   
   
   The :js:class:`UnstructGridModel <cee.usg.UnstructGridModel>` implements a client side model for handling surface CAE models. It handles surface elements with any number of nodes. A model has one or more :js:class:`State <cee.usg.State>`\ s, which links a :js:class:`Geometry <cee.usg.Geometry>` to scalar, displacement and transformation results for that geometry in that state.
   
   The example application **DemoAppUsg** shows an example on how to use the UnstructGridModel to simulate streaming of scalar and displacement results.
   
   Here is a simple example of how to create an usg model containing a single quad element with a per node scalar result in one state:
   
   .. code-block:: javascript
   
      let model = new cee.usg.UnstructGridModel();
      this.m_view.addModel(model);
      
      let geometry = new cee.usg.Geometry();
      let part = geometry.addPart();
             
      // Create a single quad mesh
      const nodeArr = [0,0,0, 1,0,0, 1,1,0, 0,1,0];
      const elConnArr = [0,1,2,3];
      part.mesh = new cee.usg.Mesh(nodeArr, 4, elConnArr);
             
      // Configure the visual appearance of the part
      part.settings.color = new cee.Color3(1,0,0);
      part.settings.drawStyle = cee.usg.DrawStyle.SURFACE_MESH;
      
      // Create a state, set the geometry and add the scalar result
      let state = model.addState();
      state.geometry = geometry;
      
      let scalarArr = [1,2,3,4];
      state.setPartFringesAt(0, new cee.usg.PartScalars(cee.usg.ResultMapping.PER_NODE, scalarArr));
      
      // Configure the mapper to use, and 
      const mapper = new cee.ScalarMapperFilledContoursUniform();
      mapper.colorArray = cee.ColorTableFactory.color4TableArray(cee.ColorTable.RAINBOW, 15);
      mapper.setRange(1,4);
      model.fringesSettings.scalarMapper = mapper;
      
      // Add a color legend based on the mapper
      this.m_view.overlay.addCustomColorLegendForScalarMapper(mapper, "Demo result", 1);
   
   This code sample produces the following image in the 3D Viewer:
   
   .. image:: /images/UsgModel.png
      :alt: None
   
   
   



.. rst-class:: kind-group kind-enumerations

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


.. rst-class:: api-xref-list


* :js:data:`~cee.usg.DrawStyle`
* :js:data:`~cee.usg.ResultMapping`
* :js:data:`~cee.usg.ScaleMode`
* :js:data:`~cee.usg.VizStateStrategy`

.. rst-class:: kind-group kind-classes

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


.. rst-class:: api-xref-list


* :js:class:`~cee.usg.DisplacementSettings`
* :js:class:`~cee.usg.ElementHighlighter`
* :js:class:`~cee.usg.Geometry`
* :js:class:`~cee.usg.Mesh`
* :js:class:`~cee.usg.MeshQuery`
* :js:class:`~cee.usg.Part`
* :js:class:`~cee.usg.PartDisplacements`
* :js:class:`~cee.usg.PartScalars`
* :js:class:`~cee.usg.PartSettings`
* :js:class:`~cee.usg.PartVectors`
* :js:class:`~cee.usg.ScalarSettings`
* :js:class:`~cee.usg.State`
* :js:class:`~cee.usg.UnstructGridModel`
* :js:class:`~cee.usg.VectorSettings`

.. rst-class:: kind-group kind-interfaces

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


.. rst-class:: api-xref-list


* :js:class:`~cee.usg.HitItem`
* :js:class:`~cee.usg.OptionalMeshData`
* :js:class:`~cee.usg.UnstructGridModelOptions`

.. toctree::
   :maxdepth: 1
   :hidden:

   ../enums/cee.usg.DrawStyle
   ../enums/cee.usg.ResultMapping
   ../enums/cee.usg.ScaleMode
   ../enums/cee.usg.VizStateStrategy
   ../classes/cee.usg.DisplacementSettings
   ../classes/cee.usg.ElementHighlighter
   ../classes/cee.usg.Geometry
   ../classes/cee.usg.Mesh
   ../classes/cee.usg.MeshQuery
   ../classes/cee.usg.Part
   ../classes/cee.usg.PartDisplacements
   ../classes/cee.usg.PartScalars
   ../classes/cee.usg.PartSettings
   ../classes/cee.usg.PartVectors
   ../classes/cee.usg.ScalarSettings
   ../classes/cee.usg.State
   ../classes/cee.usg.UnstructGridModel
   ../classes/cee.usg.VectorSettings
   ../interfaces/cee.usg.HitItem
   ../interfaces/cee.usg.OptionalMeshData
   ../interfaces/cee.usg.UnstructGridModelOptions


