
###
geo
###

.. 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 :js:class:`GeometryModel <cee.geo.GeometryModel>` implements a model that can handle a large collection of :js:class:`Parts <cee.geo.Part>` (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();
   



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

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


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


* :js:data:`~cee.geo.MeshPrimitiveType`
* :js:data:`~cee.geo.PolygonOffset`

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

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


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


* :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`

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

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


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


* :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`

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

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


