:tocdepth: 2

############
Envision 1.9
############

December 20, 2023 - SHA: e2e38f7d

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



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

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

CAE-42 Color vectors by any scalar (not just the one shown as fringes) |desktop| |web|
======================================================================================

Added the option for a user to color any mapped vector results by any scalar result data set.

This setting is owned by the VectorSettings class on Desktop and Web. Enable this by setting vector color mode to 
``VectorSettings::ColorMode::COLOR_BY_MAP_SCALAR`` and specifying the scalar result to map onto the vector arrows.

.. image:: ../images/release-notes/cae42.png

Desktop:

.. code-block:: cpp

    int vecResId = model->modelSpec().vectorResultIds()[0];
    cee::ug::VectorSettings* vectorSettings = model->vectorSettings(vecResId);

    vectorSettings->setColorMode(cee::ug::VectorSettings::COLOR_BY_MAP_SCALAR);
    vectorSettings->setMapScalarResultId(model->dataSource()->directory()->scalarResultInfos()[1].id());

Web:

.. code-block:: cpp

    const vecResId = model.modelSpec.vectorResultIdArray[0];
    const vectorSettings = model.getVectorSettingsById(vecResId);

    vectorSettings.colorMode = cee.ug.VectorColorMode.COLOR_BY_MAP_SCALAR;
    vectorSettings.mapScalarResultId = model.modelDirectory.scalarResultArray[1].id;


CAE-1113 CeeVTFx: Added support for cross sections |desktop| |web|
==================================================================

.. image:: ../images/release-notes/cae1113.png

Added support for cross section visualization of beam elements in CeeVTFx. The VTFx component has a new class 
``CrossSectionBlock`` to store cross section specifications. Add these by calling 
``CrossSectionBlock::addCrossSection()`` with cross section type and necessary parameters. These cross sections can be 
mapped to beam elements by adding the elements using ``ElementBlock::addElementsWithCrossSections()`` specifying both 
the element and the cross section mapping into the connected ``CrossSectionBlock`` block.

Supported cross section types are:

-   BEAM_IORH
-   BEAM_PIPE
-   BEAM_BOX
-   BEAM_CYLINDER
-   BEAM_L
-   BEAM_CHANNEL
-   BEAM_BAR
-   BEAM_UNSYMMETRIC_I
-   BEAM_CONE

The distribution contains several examples on creating cross sections. These can be found in the Examples folder and 
described in the documentation for the VTFx component.

Models exported with cross section data will also be shown in Envision Web.


CAE-916 Web: Controlling Label visibility with an occluder object |web|
=======================================================================

Controlling label visibility with an occluder object is now implemented in Envision Web. Note that this feature 
requires WebGL 2.0 support.

Use ``cee.mrk.PartLabels.setOccluderTriMesh()`` to set the occluder tri-mesh to use for testing the visibility of the 
label at the specified index. If the mesh is visible, the label will be visible. If the mesh is occluded, the label will 
be hidden.

.. note::
    Note the following shortcomings of the current implementation:

    -   Picking on occluded labels will not work reliably since there is no knowledge of the label's visibility during picking.
    -   Screen grabbing may not be reliable since there might be a need for multiple redraws until occlusion query results settle.


CAE-1244 Added support for Python 3.11 |desktop|
================================================

Envision Desktop has updated its Python support to include Python 3.11.


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

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

CAE-1253 CeeVTFx: Assert when calling SetBlock.blockType() |desktop|
====================================================================

Fixed missing internal enum causing ``SetBlock.blockType()`` to assert. 


CAE-1252 CeeVTFx: C# casting not implemented |desktop|
======================================================

Casting in the C# wrapper needs extra functionality in the swig interface layer. This is missing from all classes 
inheriting from Block in the CeeVTFx component. Add this to be able to downcast.

.. code-block:: cs

    var block = db.blockByIndex(Block.BlockType.SET, 0);
    var setBlock = SetBlock.castFromBaseClass(setBlock);


CAE-1269 Setting logarithmic mapping and range using properties, shows improper range |web|
===========================================================================================

Using ``ScalarSettings.setFromProperties{logarithmicMapping: , rangeMinimum: , rangeMaximum: }`` with range and log 
mapping together would cause the resulting legend to not show the expected range. Fixed this to ensure that range is 
not adjusted when logarithmic mapping is set to OFF.


CAE-1251 CeeVTFx: Transparent logo not supported |desktop|
==========================================================

Custom logo transparency has now been added to CeeVTFx. Custom logo transparency was fixed in CAE-6 released with 
Envision 1.8, but was not implemented for the VTFx component. 


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


*******
Patches
*******

Envision 1.9.1
==============

February 5, 2024 - SHA: e2e38f7d

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


CAE-1301 Fixed crash in older VTFx file when ray picking |desktop| |web|
------------------------------------------------------------------------

Fixed crash that occurred when picking on a feature extraction in an older VTFx file.