:tocdepth: 2

############
Envision 1.4
############

May 24, 2023 - SHA: d3109217

|web| Envision for Web        |desktop| Envision for Desktop


------------------------------------------------

*************
New Features
*************

CAE-1119 HOOPS Exchange Data Provider in Envision Desktop distributions |desktop| |web|
=======================================================================================

We now ship a ready to use Data Provider to load CAD Data. This is backed by HOOPS Exchange. The Data Provider can be 
used on both Desktop and Web, and enables you to load any CAD model supported by HOOPS Exchange into a 
``cee.ug.RemoteModel`` (web) or ``cee::ug::UnstructGridModel`` (desktop). The Data Provider Plugin 
(``cdp_ExchangePlugin.so`` or ``cdp_ExchangePlugin.dll``) can be found in the folder ``DataProviderPlugins`` in the 
distribution (Desktop Windows and Linux).

.. image:: ../images/release-notes/cae1119-1.png

.. image:: ../images/release-notes/cae1119-2.png

Note that the usage of this plugin requires a HOOPS license with Exchange. This license can be provided with the reader 
settings: ``HOOPS_LICENSE``. Also note that the distribution does not contain HOOPS Exchange. This have to be downloaded 
separately from the Tech Soft 3D Developer Zone. The path to HOOPS Exchange must be set with the reader setting: 
``HOOPS_LIBRARY_PATH``. 

See the documentation https://docs.techsoft3d.com/hoops/latest/envision-desktop/topics/dataproviders/plugins/exchange.html 
for more information.


CAE-1086 Finding visible parts within a screen region |web|
===========================================================

Added ``cee.ug.VisibleObjectPicker`` which can find the visible parts within a given screen region specified in css 
pixels. Use ``cee.ug.VisibleObjectPicker.getVisibleObjectsInRectangle()`` to get all visible parts in that given region. 
This is a screen based technique, so any parts fully obscured in the region by other parts will not be part of the 
returned parts. The method support finding both partially and fully covered parts.

.. figure:: ../images/release-notes/cae1086-1.png
   
   ``VisibleObjectPicker`` with ``acceptPartiallyContainedObjects = true``


.. figure:: ../images/release-notes/cae1086-2.png
   
   ``VisibleObjectPicker`` with ``acceptPartiallyContainedObjects = false``


CAE-932 Generators and examples for mapping results on a geometry of any shape in cee.ug.RemoteModel |web|
==========================================================================================================

Added generators for creating cylinders, spheres and boxes with a predefined tessellation density. Added an example on 
how to use this generated geometry to map results form the Remote Model and visualize this together with the remote 
model using the ``cee.ug.QueryMapResultOnPoints``. This enables e.g. “cylindrical cutting planes”. Added 
``cee.utils.BoxGenerator``, ``cee.utils.CylinderGenerator`` and ``cee.utils.SphereGenerator``. 

The example ``Examples/DemoAppUg`` have be extended to show how you can create a cutting cylinder by using 
``cee.utils.CylinderGenerator``, ``cee.ug.QueryMapResultOnPoint`` and finally ``cee.geo.GeometryModel`` to show the 
cylinder with results mapped onto the surface (as shown below):

.. image:: ../images/release-notes/cae932-1.png

.. image:: ../images/release-notes/cae932-2.png

.. image:: ../images/release-notes/cae932-3.png


CAE-451 Add setUseFirstOrderElementNodesOnly() to RemoteModel |web|
===================================================================

Added setting to remote model to control if only first order element nodes should be used or not. Default false, which 
means high order elements (e.g. a 8 node QUAD) will be shown with all element nodes. If set to true, only first order 
nodes will be transmitted from the server and used for the visualization, causing the 8 node QUAD in the previous 
example to be shown as a QUAD with 4 nodes.

.. figure:: ../images/release-notes/cae451-1.png
   
   QUAD 8 element with ``setUseFirstOrderElementNodesOnly = false`` (default)

.. figure:: ../images/release-notes/cae451-2.png
   
   QUAD 8 element with ``setUseFirstOrderElementNodesOnly = true``


CAE-1165 Web: Add PartSettings::disableElementSetFiltering |web|
================================================================

Added new part setting for controlling if a part should use element filtering by sets or not. This is default ``false``
(use filtering), but can be set to ``true`` (no not use filtering) to make so parts visible even if they are not part 
of the visible sets. See documentation for ``cee.ug.PartSettings.disableElementSetFiltering`` for more information.


CAE-1138 Legacy plotting: Add support for old embedded 2d plots |desktop|
=========================================================================

The embedded 2d plots on desktop now supports loading legacy VTFx files with embedded 2D plots.


CAE-197 Doc: Add topic on using multiple views |desktop|
========================================================

Added some more information on using multiple views to the documentation: 
https://docs.techsoft3d.com/hoops/latest/envision-desktop/topics/visualization/multiple-views.html


------------------------------------------------

***********
Fixed Bugs
***********

CAE-1186 oglWinPosFromClientCoord did not take padding into account |web|
=========================================================================

``oglWinPosFromClientCoord`` has been fixed to account for any padding specified for the Canvas element. 
