.. role:: ts-api-decorator

#######
cee.geo
#######

.. container:: ts-api-section

   .. js:module:: cee.geo

   The **geo** sub-module provides a GeometryModel that can handle a large number of parts efficiently.

   Assuming that the EnvisionWeb client component has been imported into the variable ``cee``, members of
   the geo module may be referenced using the ``cee.geo`` prefix, e.g.:


   .. code-block:: javascript

      var geoModel = new cee.geo.GeometryModel();



   The ``GeometryModel`` implements a model that can handle a large collection of ``Parts`` (300k+ without problems).

   Here is a simple example of how to create a geometry model containing a single triangle:

   .. code-block:: javascript

      var geoModel = new cee.geo.GeometryModel();

      // Create a simple one triangle one part model
      var indices = [0, 1, 2];
      var triangleVertices = [0,0,0,  1,0,0,  0,1,0];

      let part = geoModel.addPart();
      let mesh = new cee.geo.MeshIndexedTriangles(triangleVertices, indices);
      part.mesh = mesh;

      part.settings.color = new cee.Color3(0, 1, 0);

      var view = myViewer.getViewAt(0);
      view.addModel(geoModel);
      view.requestRedraw();





.. toctree::
   :titlesonly:
   :hidden:

   /c3_reference/classes/cee.geo.CgeoModelGenerator
   /c3_reference/classes/cee.geo.GeometryModel
   /c3_reference/classes/cee.geo.GeometryModelManipulator
   /c3_reference/classes/cee.geo.GeometryModelMockups
   /c3_reference/classes/cee.geo.GeometryModelRemoteLoader
   /c3_reference/interfaces/cee.geo.HitItem
   /c3_reference/interfaces/cee.geo.Mesh
   /c3_reference/classes/cee.geo.MeshHitItem
   /c3_reference/classes/cee.geo.MeshIndexedLines
   /c3_reference/classes/cee.geo.MeshIndexedTriangles
   /c3_reference/enum/cee.geo.MeshPrimitiveType
   /c3_reference/interfaces/cee.geo.OptionalIndexedLinesVertexData
   /c3_reference/interfaces/cee.geo.OptionalIndexedTriangleVertexData
   /c3_reference/classes/cee.geo.Part
   /c3_reference/classes/cee.geo.PartSettings
   /c3_reference/enum/cee.geo.PolygonOffset
   /c3_reference/interfaces/cee.geo.RemoteLoaderCompleteCallback
   /c3_reference/interfaces/cee.geo.RemoteLoaderInitializationCompleteCallback
   /c3_reference/interfaces/cee.geo.RemoteLoaderModelInfo
   /c3_reference/classes/cee.geo.RemoteLoaderStatusInfo
   /c3_reference/classes/cee.geo.RemoteLoaderTimingInfo

.. container:: api-index-section

   .. rubric:: Enumerations

   .. rst-class:: api-index-list-item api-kind-enum api-parent-kind-module

   * :ref:`cee.geo.MeshPrimitiveType`
   * :ref:`cee.geo.PolygonOffset`



.. container:: api-index-section

   .. rubric:: Classes

   .. rst-class:: api-index-list-item api-kind-class api-parent-kind-module

   * :js:class:`~cee.geo.CgeoModelGenerator`
   * :js:class:`~cee.geo.GeometryModel`
   * :js:class:`~cee.geo.GeometryModelManipulator`
   * :js:class:`~cee.geo.GeometryModelMockups`
   * :js:class:`~cee.geo.GeometryModelRemoteLoader`
   * :js:class:`~cee.geo.MeshHitItem`
   * :js:class:`~cee.geo.MeshIndexedLines`
   * :js:class:`~cee.geo.MeshIndexedTriangles`
   * :js:class:`~cee.geo.Part`
   * :js:class:`~cee.geo.PartSettings`
   * :js:class:`~cee.geo.RemoteLoaderStatusInfo`
   * :js:class:`~cee.geo.RemoteLoaderTimingInfo`



.. container:: api-index-section

   .. rubric:: Interfaces

   .. rst-class:: api-index-list-item api-kind-interface api-parent-kind-module

   * :js:class:`~cee.geo.HitItem`
   * :js:class:`~cee.geo.Mesh`
   * :js:class:`~cee.geo.OptionalIndexedLinesVertexData`
   * :js:class:`~cee.geo.OptionalIndexedTriangleVertexData`
   * :js:class:`~cee.geo.RemoteLoaderCompleteCallback`
   * :js:class:`~cee.geo.RemoteLoaderInitializationCompleteCallback`
   * :js:class:`~cee.geo.RemoteLoaderModelInfo`



