Release notes: CEETRON Envision

 

Latest online release notes: https://docs.techsoft3d.com/ceetron/latest/envision-desktop/release-notes/index.html

CEETRON Envision for Web CEETRON Envision for Desktop

CEETRON Envision - Envision 2.0.0 - Feb 28, 2024 - SHA: 35e51d55

From Envision 2.0 and forward, release notes are a part of the online documentation. Please go to:
https://docs.techsoft3d.com/ceetron/latest/envision-desktop/release-notes/index.html

CEETRON Envision - Envision 1.9.1 - Feb 5, 2024 - SHA: 17f5efeb

Fixed bugs

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

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

CEETRON Envision - Envision 1.9 - Dec 20, 2023 - SHA: e2e38f7d

Fixed bugs

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

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

CAE-1252 CeeVTFx: C# casting not implemented

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.

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

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

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.

New features

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

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.

Desktop:

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:

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

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

Controlling label visibility with an occluder object is now implemented in CEETRON 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 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

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

CEETRON Envision - Envision 1.8.2 - Feb 2, 2024 - SHA: c6bce7bd

Fixed bugs

CAE-1302 Cutting plane scalar filtering crashes on part without results

Fixed crash when cutting plane scalar filtering is used on model that contains part with no scalar results.

CEETRON Envision - Envision 1.8.1 - Jan 22, 2024 - SHA: 5a49dd1b

Fixed bugs

CAE-1292 Isovolume with mesh visualization: crash when mirroring is activated

Fixed crash when mirroring a isovolume visualized using mesh.

CEETRON Envision - Envision 1.8 - Nov 8, 2023 - SHA: b1eca36a

Fixed bugs

CAE-1172 Isovolume: dirty visualization when part is hidden

Fixed bug with isovolumes not being regenerated correctly when set invisible and changing states.

CAE-1241 Parts in remeshed models that are invisible are not properly updated when changing states

Fixed bug with invisible parts in remeshed models not being properly updated when changing states.

CAE-1173 DataReader: Displacement scale factor not applied

Fixed bug with displacement scale not being applied for custom readers

CAE-1246 cee::vtfx::close() does not release file handle if close fails

In cee::vtfx::File::close(), the file handle is released even if the file is incomplete or invalid.

CAE-1248 CeeVTFx: Missing methods in C#

Added missing C# wrapper for CeeVTFx classes SetBlock and SetItemGroup.

New features

CAE-1000 Scalar filtering for cutting planes

Added setScalarFilteringVisibleRange(int resultId, int minimum, int maximum) to CuttingPlane. The filter allows you to control the visibility of areas on the cutting plane based on scalar values, making areas outside the specified range invisible.

A common use case for this functionality is to restrict the visibility of a cutting plane to a specific isovolume. By configuring the cutting plane filter with the same result id and scalar range as the isovolume, you can ensure that the cutting plane surface is only visible within the isovolume.

 

 

CAE-6 ImageResource should support transparent images

Added support for alpha values in ImageResource used to save images to the VTFx file. This means a custom logo saved to VTFx will retain transparency when reopened.

CAE-1226 Add transformationMatrix for RemoteModel(Web) and UnstructGridModel(Desktop)

Specifying transformation matrices for RemoteModel (on Web) and UnstructGridModel (on Desktop) is now supported. The transformation matrix is set in the ModelSettings class.

CAE-1242 Add VTFx case description for UG

Added VTFx case description to cee.ug.VTFxCaseInfo

CEETRON Envision - Envision 1.7.1 - Oct 17, 2023 - SHA: e00acc67

Fixed bugs

CAE-1239 Missing highlighting of extracted features

Extracted features, such as cutting planes, were no longer highlighting correctly when enabling the highlight behavior

CEETRON Envision - Envision 1.7 - Oct 2, 2023 - SHA: 4616aefc

Fixed bugs

CAE-1207 Some sections are missing from Shell elements in LS-Dyna

More recent models from LS-DYNA sometimes did not report the correct sections for SHELL elements.

CAE-1213 Web: "Clipped" visualization artifacts during model update

Sometimes the bounding box of the Remote Model would not be correct during an update, leading to temporary (flashing) clipping artifact (front/back clipping planes) for some modes of AutoClip.

New features

CAE-874 RemoteModel: Big performance improvements with many (>10k) parts

Big improvements to models with many parts in the RemoteModel. The RemoteModel was designed to handle up to 10k parts, but have now been enhanced in several ways to handle many more parts (>60k). The optimizations will help all models, but be more and more relevant as the number of parts grows.

Main improvements:

  • Optimized the streaming, greatly reducing the data volume for meta data for parts

  • Much faster processing on client side by optimizing part processing and lookup

  • Adjusted logic that triggers redraws in RemoteModel to make redrawing more relaxed in order to increase streaming throughput

  • Added per part early rejection to cutting plane and iso surface computations

  • Server side improvement of processing of many parts.

CAE-1201 VTU: Added control for how the Node Welding should be done

Added an option to VTU to control how the node welding is done (if enabled). The user can select any field to determine which “part” a node belongs to, and only the nodes from the same “part” will be welded. The default name for this field is “PartID” but this can be changed with the reader setting.

Desktop: ReaderSettingsVtk::setWeldNodesPartFieldName()

Web:

CAE-1222 Added support for specifying a custom legend title in the ConstantRemoteModel

Added cee.ug.ConstantRemoteModel.setColorLegendTitle() to let the user control the title of a color legend in the ConstantRemoteModel.

CAE-1230 Updated to CEETRON Access 1.7 and ABAQUS 2023

Upgraded to the latest version of CEETRON Access. This adds support for ABAQUS 2023 as well as a lot of bug fixes.

CEETRON Envision 1.6.0 - Aug 16, 2023 - SHA: f991e3e2

Fixed bugs

CAE-1196 QueryNodeScalarResult does not support calculator results

The cee.ug.QueryNodeScalarResult query now supports querying scalar results that are computed with a result calculator plug-in.

CAE-1200 Crash in loadState() when changing section configuration

When changing sections in cee::imp::cae::DataSourceCae and then calling loadState() you might in some cases get an assert.

CAE-1203 Navigation cube cannot be used to set the camera inside the OpenModelCallback

The Overlay.viewConfigurationFromNavigationCubeItem() did not work before the first visualization was ready (e.g. in the openModelCompleted callback in RemoteModel.openModel().

CAE-1209 DataProvider: setCreateDerivedResults(false) does not work when adding results in pollForChanges

The CDPDataProvider::setCreateDerivedResults(false) setting did not work when providing new results in CDPDataProvider::pollForChanges(), it would always provide derived results.

Also fixed an issue where the results provided by result calculators disappeared if a pollForChanges() resulted in a new call to getMetaData (CDPChangeNotifications.notifyTriggerNewGetMetaData()).

CAE-1211 ImportCAE: For some file formats undefined results are reported as 0

The file readers supported by Ceetron Access (most CAE formats) specifies undefined results as 0 and not undefined. This causes the visualization to be wrong and also for 0 to be included in the min/max calculations.

Added a new setting to control this behavior: On desktop we enabled the cee::imp::cae::ReaderSettings::setUsesUndefinedResults reader setting for Ceetron Access so you can now force undefined results to be zero.

In Envision Web, we added a new reader setting:

In future releases, this will be set to default true (use undefined), but that requires some fixes in Ceetron Access.

CAE-1210 UgServer crashes on some old legacy VTFx files

Some old and partial VTFx files caused an assert and crashed the RemoteModel (UG) server.

New features

CAE-1123 Custom labels for color legend tickmarks

Added support for specifying custom color legend labels for FILLED_CONTOURS_UNIFORM and FILLED_CONTOURS legends. You have to specify numberOfFilledContoursColors() + 1 strings (one for each tickmark).

Added to cee::ug::ColorMapper

 

CAE-1193 Add constant fluid viscosity property to MassedParticleParameters

You can now specify a constant molecular fluid viscosity when using the massed particle tracing. This is useful if the viscosity is constant and you do not have a dedicated viscosity scalar field.

Added cee.ug.MassedParticleParameters.constantFluidViscosity. This will be used when fluidViscosityResultId is not set (-1).

CAE-1202 Added ArrowGenerator and fix typings of cee.utils

Added cee.utils.ArrowGenerator class to generate a tessellation of an arrow.

Added cee.utils.ConeGenerator and cee.utils.PathGenerator to the typings files CeeEnvisionWebComponents.d.ts

CAE-1206 Add documentation to .d.ts file

Added the Envision Web documentation to the CeeEnvisionWebComponents.d.ts. This allows for a much nicer development experience, as most editors (including VS Code) will show the documentation as tooltips when hovering over code.

 

CAE-1208 Do not expose the license code when using the Hoops Exchange plugin

When using the HOOPS Exchange Data Provider for the RemoteModel, you can now use the CEW_TECH_SOFT_LICENSE_CODE and HOOPS_LIBRARY_PATH environment variables to specify the license and the location of the HOOPS Exchange distribution on the server side. This avoids providing these as ReaderSettings from the client side.

The documentation has been updated to reflect this.

CEETRON Envision 1.5.0 - Jul 4, 2023 - SHA: d563f5e6

Fixed bugs

CAE-1197 initString not passed along while using defaultResultCalculatorDefinitions

When passing along the defaultResultCalculatorDefinitions as part of the OpenModelOptions to RemoteModel.openModel() the init string was not properly propagated to the result calculator.

New features

CAE-531 Add support for WebGL 2 to Envision Web

Envision Web is now using WebGL2 as the default renderer. This should not affect any current usage but will open up for new features in the coming versions.

It will fall back to WebGL1 if WebGL2 is not supported. You can force WebGL1 with ViewerOptions.forceWebGL1 = true.

CAE-741 Add missing part and element info to queries

Added information about area and volume to HitItem and Element and Geometry queries.

Added cee.ug.HitItem.elementArea with the area of the hit element.
Added cee.ug.QueryElementInfoData.elementArea returned by cee.ug.QueryElementInfo.
Added cee.ug.QueryGeometryStatisticsData.totalVolume and totalArea returned by the cee.ug.QueryGeometryStatistics.

CAE-1131 Added part setting to disable feature extraction for that part

Added a new part setting for disabling computation of feature extractions (cutting plane, isosurfaces, isovolumes, particle tracing). If set to true, there will be no feature extraction computed for the given part.

See cee.ug.PartSettings.disableFeatureExtraction and cee::ug::PartSettings::disableFeatureExtraction() for more information.

CAE-1177 Added coloring of elements based on set, element type and user property

You can now specify how to color a part if not results are shown. This is done with the cee.ug.ModelSettings.modelColorSource or cee::ug::ModelSettings::setModelColorSource() setting.

Legal values are Part (default), Set, Element Type, User Property with index 0..2.

 

 

 

 

CAE-1187 Added documentation about cug in the Envision Web documentation

The documentation for Envision Web cee API overview page now has information about CUG.

CAE-1191 Added example and documentation on how to use multiple views in Envision Web

Added documentation on how to use multiple views to the View and Viewer API documentation.

Added a new Example (Examples/MultipleViews) which showcases how to use multiple views with Envision Web.

CAE-1195 Support for MacOS ARM64 (M1/M2) for UG Server

Added support for Apple Silicon MacOS ARM64 (used in M1/M2 based Macs) for the UgServer. Use the npm run startMacArm command to start the server on a Mac with M1/M2.

The binaries are in the server/UgServer/bin/osx_arm64 and NativeApplications/CugComposer/bin/mac_arm64 folders.

Note: You might get an error saying the CeeUgServer.node cannot be opened. If so, go to Privacy and Security and allow it.

 


CEETRON Envision 1.4.0 - May 24, 2023 - SHA: d3109217

Fixed bug

CAE-1186 oglWinPosFromClientCoord did not take padding into account

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

New features

CAE-1119 HOOPS Exchange Data Provider in CEETRON Envision Desktop distributions

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).

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/ceetron/latest/envision-desktop/topics/dataproviders/plugins/exchange.html for more information.

CAE-1086 Finding visible parts within a screen region

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.

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

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.QueryMapResultOnPointand finally cee.geo.GeometryModel to show the cylinder with results mapped onto the surface (as show on the left below):

CAE-451 Add setUseFirstOrderElementNodesOnly() to RemoteModel

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.

CAE-1165 Web: Add PartSettings::disableElementSetFiltering

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 informartion.

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

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

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


CEETRON Envision 1.3.2 - Apr 27, 2023 - SHA: 3977c504

Fixed bugs

CAE-1133 CugComposer requires a desktop license to produce snapshot images

The OSMesa component (used by CugComposer and Envision for Python to produce snapshot images) did require a CEETRON Envision Desktop license. This has been changed so no any CEETRON Envision license will work, both Web and Desktop.

CAE-1148 Handling of undefined vector results as regular grid vectors on cutting planes was in some corner cases wrong

In some very infrequent corner cases parts with undefined vector vector results might in some positions show vectors where they are not defined.

CAE-1149 Creating a result calculator would cause an exception due to changes in CAE-1108

Initializing result calculators with the RemoteModel.createResultCalculator() method would case an exception when updating the RemoteModel.


CEETRON Envision 1.3.1 - Apr 19, 2023 - SHA: 565812a6

Fixed bugs

CAE-1129 CugComposer: Crash when exporting models with animations and expanded beams

The was an issue when converting models with animations and expanded beams to Cug using the CugComposer.

CAE-1130 Missing Data Provider Framework examples in Envision Desktop distribution

The new Data provider examples are now properly included in the Envision Desktop (Windows and Linux) distributions.


CEETRON Envision 1.3.0 - Apr 5, 2023 - SHA: 5849c2e4

Fixed bugs

CAE-992 Cannot read DataResultVisibility manually from the data source

The cee::ug::DataResultVisibility is not updated after loading visibility results.
Also added DataStateSpec::setLoadVisibilityResult() so visibility results now can be loaded with DataSourceInterface::loadState().

CAE-1058 Envision Web UgServer C++ redist needs updating

Removed the C++ redist in the server/UgServer/bin/win folder in the distribution and updated the documentation with the link to the latest C++ redist and info on when to use it.

CAE-1062 Removed cutting plane can still be interacted with

The problem occurs when users hang on to the settings objects that are retrieved from RemoteModel even after the underlying entities have been deleted. Since the settings objects have parent references to the RemoteModel internals, these objects keep influencing the RemoteModel state even after they have been deleted. The customer observes just strange behavior, but this obviously has the potential to cause crashes as well.

The fix involves internal unwiring of the user facing settings objects in RemoteModel when the underlying entities are deleted.

An added benefit of this fix will probably be that the job of garbage collector will be a little bit easier.

CAE-1101 Data providers: Using notifyResultAdded() might in some cases crash the server/host app

Fixed an issue where in some cases using the ChangeNotifications::notifyResultAdded() method might crash the server.

CAE-1107 Assert when having a model with a single point

The web client caused a client side assert if the model only contained a single point and thus the extend of the bounding box was zero.

CAE-1111 Setting displacement scale factor to 0 or very small number breaks deformation

Improved handling of scaling of small displacements in Envision Web. Will now use the corresponding vector result if found to do proper scaling when the displacements are very small or when using a very small scale factor.

Adding check for setting zero displacement scale factor. cee.ug.DisplacementSettings.scaleFactor = 0 will now throw on the client, as this is illegal.

CAE-1118 CugComposer: Export of query information for models with expanded beams did not work as expected

Fixed an issue where the export from CugComposer did not have the valid query information for parts with expanded beams (e.g. responding to picking).

New features

CAE-795 Project vectors on model surfaces, like it is done for cutting planes

PER_NODE and PER_ELEMENT_NODE vector results can now be projected onto the model surface. This is done by using the surface normal in the node and projecting the vector in the plane that is defined with the node and the normal. This works in a similar way as cee.ug.CuttingPlane.projectVectorsOnPlane.

Added cee.ug.VectorSettings.projectOnSurface and cee::ug::VectorSettings::setProjectOnSurface().

CAE-1002 Welding node support for VTK files to allow proper multi-part datasets

Added support for node welding in the VTK readers (Vtu, pvtu, pvd). When opening a .pvd file with multiple partitions the partitions will be combined to one part and the nodes on the interfaces between the parts will be welded. This makes the visualization work as expected (feature lines, transparency, normals, etc).

This feature also works for .pvd files with multple time steps.

Envision Desktop: Added readerSettings().vtk().setWeldNodesForJointParts(true)

Envision Web:

CAE-1097 CaeImport: Add reader for COMSOL section-wise files

Added support for COMSOL section-wise CAE files. Default extension is .txt.

CAE-1098 CaeImport: Add reader for STAR-CCM result files

Added support for STAR-CCM to ImportCAE.

Note: STAR-CCM is only available on Envision Desktop on Windows and you must provide the required DLLs and make them accessible to the application. The two DLLs required are ccmio.dll and adf.dll. Please contact Siemens to reach an agreement to redistribute the files.

CAE-1102 Update C# examples in dist with newer .NET

The C# project files for the example apps got some love and have been upgraded to a bit more modern version of .NET.

CAE-1103 New examples for the Data Provider Framework

We have added 3 new examples to the Data Provider Framework to showcase how it can be utilized and highlight the flexibility of the framework:

  • DynamicDataPlugin: A data provider with changing data using the pollForChanges(). Supports adding and removing states, results and geometry and also starting from an empty model.

  • SharedServicePlugin: A Plugin that supports getting data from a service that is shared between all instances of the plugin. Can open models with different configurations, then do one call to modify/morph all models. Shows how you can inject a singleton using the plugin factory.

  • MockupPlugin: Providing a MPParametricProvider that has a model generator and can produce meshes of any size to e.g. test performance.

CAE-1104 Allow customization for OffscreenCanvasLabelDrawer.drawOntoCanvas method

Added support for injecting a custom label drawer which gives total flexibility on how to render the labels in the markup model. Added PartLabels.setCustomDrawOntoCanvasCallback(). Use this callback to override how labels are drawn. This gives you total freedom to draw any type of label. In the callback you need to resize the canvas to a size that suits your needs, and draw any text or other content onto the canvas. The label text is passed as input, but this text can be a custom markup language to control the layout of the label.

See the documentation of CustomDrawOntoCanvasCallback for more info and an example on how to use this.

CAE-1105 Add more triangle and edge data to QueryFeatureExtractionSurface

Enriched the data returned from the cee.ug.QueryFeatureExtractionSurface.

Added the following to ueryFeatureExtractionSurface:

Per triangle (triangleDataArr) and per edge (edgeDataArr):

  • sourceElementIndex

  • scalarResult

  • vectorResult

  • perVertexScalarResults

  • perVertexVectorResults

Also added elementMeshVertices

The following are removed:

  • faceTriangleVerticesScalarResults: Use triangleDataArr[x].perVertexScalarResults

  • edgeLineVerticesScalarResults: Use edgeDataArr[x].perVertexScalarResults

CAE-1108 Support initial empty model and adding/modifying geometries in Data Providers

Data providers now supports starting out (or ending up with) an empty model.

  • Added support for providing models with no geometry (only one state)

  • Added CDPChangeNotifications::notifyTriggerNewGetMetaData() to notify the host that the meta data (e.g. for a geometry) have changed and a new getMetaData() is required.

  • Extending DynamicDataPlugin to demonstrate starting without a geometry.

  • Fixed various issues relating to updating/modifying/deleting geometries, results and states when using pollForChanges or handleClientRequest.

CAE-1110 QueryMinMax - get min/max items for a given frame only

Added QueryResultMinMax.computeMinMaxItemsFromFrameIndex to specify to only get minimum/maximum items from a given frame (and not all loaded states). Default is -1, which is the old behavior of returning min/max items from all currently referenced states.

CAE-1112 Add support for Symmetric Tensor Results in OpenFOAM Data provider

The OpenFOAM data provider now support symmetric tensor results.

CAE-1115 Add CUG Server documentation

Added information on how to use the server for the ConstantRemoteModel to the documentation.

CAE-1116 Add a root folder with zip file name as the root of the Envision Web archive

The Envision Web .zip file now has a root folder with the same name as the archive, making it easier to extract and keeping it consistent with the rest of the Tech Soft 3D toolkits.


CEETRON Envision 1.2.2 - March 20, 2023 - SHA: 147c9502

New version of Ceetron Access

Updated Ceetron Access (file readers) to patch version 1.0.7


CEETRON Envision 1.2.1 - Feb 16, 2023 - SHA: d026d7a8

Fixed bugs

CAE-1065 Can get null reference on mouse wheel while RemoteModel is loading

Using the mouse wheel early when the model is loading and having mouseWheelZoomAndWalkBehavior set to other than TO_CENTER might cause a throw and thus error logs in the console.

CAE-1067 ImportCAE OpenFOAM reader crashes on models with polyhedron elements

The built-in OpenFOAM reader in ImportCAE might cause a crash when opening models with polyhedron elements. This fixes a regression introduced in Envision 1.1

CAE-1071 VTFx component: Exported file can't be opened in the viewer (wrong vendor id)

Files exported with the VTFx components (standalone export) was not signed properly and thus not able to open in the free desktop 3D viewer.

CAE-1072 Simple null vectors would sometimes not be positioned correctly on some hardware platforms

In some rare cases on some hardware platforms the null vectors could be drawn in the wrong position.


CEETRON Envision 1.2.0 - Jan 27, 2023 - SHA: 18704d8b

Fixed bugs

CAE-920 UgModule is missing some exports

DisplacementSettingsProperties, ScalarSettingsProperties, VectorSettingsProperties were missing from the UgModule TypeScript d.ts file.

CAE-921 UgServer is sometimes confused about the current state id after applying a VTFx case

When applying cases from VTFx files, in some cases the current state was not properly synced between client and server, needing an extra update to get in sync.

CAE-925 PVD/VTM/VTU: Displacement vector fields are not interpreted as displacements result unless their name starts with "displacement"

The VTK reader now will use any result with the word “displacement” as part of the result name as a displacement result. See CAE-971 for an option to treat all vector results in VTK files as displacements.

CAE-947 UgServer: Memory is not freed by the c++ heap manager on Linux

Added option to trim heap memory usage on Linux/gcc using malloc_trim(). The feature can be enabled by setting the environment variable CEW_UG_ENABLE_MEMORY_TRIM

This functionality was added after getting reports of growing memory usage (and eventually crash) when running Linux version of ugServer in a Docker container. When enabled, the feature performs regular calls to malloc_trim() to manually do "garbage collection" on the c/c++ heap manager. Note that doing this could probably has a negative impact on performance.

CAE-962 Updating a cug model + removing another causes assert error

Fix assert error that occurs on update a CUG model then remove another.

CAE-964 Asset error on update cug part then call getBoundingBoxForPart()

Fix assert error that occurs on update CUG model then call getBoundingBoxForPart()

CAE-984 CugComposer crashes on VTFx files with IndexedFaceSets

The CugComposer did not handle (legacy) VTFx files with Indexed Face Sets

CAE-1019 Reference counting did not work properly from Python

Reference counting is now handled properly in the Python bindings for Envision for Python in the same way as for C# .

CAE-1039 ExportVTFx uses wrong vendor code, can't open in Viewer

The VTFx files exported from Envision for Desktop is now properly signed and can be viewed in the CEETRON 3D Viewer.

CAE-1049 CugComposer cannot pass unicode characters in arguments paths

The CugComposer now handles unicode filenames, both for input VTFx files and output folder/files.

New features

CAE-782 Camera changed callback

Added cee.Camera.setViewChangeHandler() that sets a handler to be invoked each time the camera view changes.

CAE-802 Enable/disable mirroring per part

Added an option in UnstructGrid PartSettings to control if a part should be mirrored or not.

Added cee::ug::PartSettingsdisableMirroring() method (desktop) and cee.ug.PartSettings.disableMirroring property (Web).

CAE-810 Specify a background color for color legends

Desktop: Added support for a background for color legends. This helps making text more readable in some situations. The background color and opacity, as well as border color can be specified.

Added setDrawLegendBackground(), setLegendBackgroundColor(), setLegendBackgroundOpacity() and setLegendBackgroundBorderColor() to cee::ug::ScalarSettings

 

CAE-882 Vectors fields visualization: optionally display a vector a a point when length is 0

Desktop: Added an option to draw vectors with zero length (null vectors) as a point or a sphere.

CAE-918 Add visible property to cug.ParticleTraceGroup

The visibility of particle trace groups can now be controlled in the ConstrantRemoteModel.

Added cee.cug.ParticleTraceGroup.visbile property.

CAE-919 Add method for getting BoundingBox for single part in ConstantRemoteModel

You can now get the bounding box of a part in the ConstantRemoteModel.

Added cee.cug.ConstantRemoteModel.getBoundingBoxForPart()

CAE-926 Add support for computing fit view eye position from a bounding box

Added a new method to Camera to compute the fitView eye position based on a given bounding box.

Added cee.Camera.computeFitViewEyePosition()

CAE-931 Web: Query to get feature extraction data

Added a new query to get the display model of a feature extraction item (cutting plane, isosurface or isovolume). Triangle and lines with the corresponding per vertex scalar result is provided as a result of the query. This is useful for client-side post processing of the feature extraction, as well as to visualize it in various ways.

Added cee.ug.QueryFeatureExtraction

CAE-949 Improve "Assertion failed" reporting mechanism

Added support for specifying an assertion failed handler that is invoked if a code assert fails on the client.

Added cee.setAssertFailedHandler().

CAE-953 Add support for custom view layouts

Added support for specifying a custom layout of views within a viewer. This enables using many views in one viewer, and thus working around the limit of only 16 WebGL canvases on one page.

Added cee.View.setViewport()

Here is an example with 28 views with different models on one page (within one viewer):

 

 

 

 

CAE-971 VTK: Reader option to provide all vector results as displacements

Added an option for the VTK (vtu/pvtu) reader to treat all results as displacements, and thus making them available as displacements, vectors and individual scalar results.

Added cee::imp::cae::ReaderSettingsVtk& ReaderSettings::vtk() with setReadVectorsAsDisplacements().

Added VTK setting ALL_VECTORS_AS_DISPLACEMENT to be used in the cee.ug.RemoteModel.setReaderOptions() method.

Example:

CAE-988 Add support for supplying license code as environment variable to CugComposer

Added use of the environment variable CEW_TECH_SOFT_LICENSE_CODE in the CugComposer and the UgServer. There are now 4 ways to provide a license to the CugComposer:

  1. -license command line option

  2. CEW_TECH_SOFT_LICENSE_CODE environment variable

  3. -licenseFile command line option

  4. CEW_TECH_SOFT_LICENSE_FILE environment variable

CAE-1008 Added option to disable spatial partitioning when optimizing parts in UnstructGridModel

Added an option to specify only to merge equal parts based on appearance and not do spatial partitioning into equal sized chunks.

Added new parameter to cee.ug.ModelSettings.setOptimizePartRendering(bool optimize, bool spatiallyPartitionParts = false)

Default is now to only merge parts with equal appearance.

CAE-1035 Added support for CrincleCut cutting planes of 2d elements

Crinkle-cut cutting planes now also work as expected for 2d elements, showing the entire 2d element if intersected by the cutting plane.

CAE-1046 CugServer: Support absolute paths for CONFIGURE_EXPRESS_APP_JS_FILE

The app config file for the CugServer can now be specified with an absolute path.


CEETRON Envision 1.1.0 - Nov 25, 2022 - SHA: 68b113ab

Fixed bugs

CAE-756 VisualizationPartQuery: Crash when computing surface path on nodes connected to null-surface triangles

Fixed a crash when trying to do a surface path query starting on a beam or a point element.

CAE-852 Default value for MODEL_PATH in server/UgServer/Main.js is wrong

Fixed the model path based on the package reorganization for Envision 1.0

CAE-853 CugServer build fails for typescript 3.9

Fixed so you can compile the CugServer with TypeScript 3.9

CAE-868 Web: BuildYourFirstApp/2-Viewer: The initial camera is not set as intended

The callback to the openModel() was not correct in the example so setting the initial camera did not work.

CAE-878 ug.ScalarSettings.scalingConstantTerm and scalingFirstDegreeTerm not applied to legends

The use of unit conversion (setting a linear transformation of the results on the legend) did not always work as intended.

CAE-880 Assertion failed if using continuous legend bar and setting same min and max range values

When using a continuous legend mapping (numLevels = 0) the client would assert if min was set to the same as max.

CAE-892 HitItem returns undefined intersectionPointResult value for cutting plane when having parts without results

The intersectionPointResult value in cee.ug.HitItem was undefined or wrong if a model had some parts without any results defined.

CAE-902 CugServer: CEW_CUGS_CONFIGURE_EXPRESS_APP_JS_FILE should be relative to current dir rather than Main.js

Changed the behavior of the CEW_CUGS_CONFIGURE_EXPRESS_APP_JS_FILE environment.

New features

CAE-848 cee.ug.ScalarSettings: Custom continuous color scheme support

Added support for specifying a custom color mapping for continuous color legends. You can provide an array of colors and the legend will then be interpolated between these colors. If values are provided the legend will have the given color at the given value. If no values are provided the colors will be evenly spaced.

 

See cee.ug.ScalarSettings.setCustomContinuousColorArr() for more info.

Note: Setting cee.ug.ScalarSettings..colorScheme = cee.ug.ColorScheme.CUSTOM was never intended to be a valid operation and this is now documented and the property will throw if this is tried.

CAE-867 Element edge, face and node DataSets

Added support for element edge, element face and element node sets in Envision Web and VTFx.

CeeVTFx:

  • Added ELEMENT_FACE, ELEMENT_EDGE, ELEMENT_NODE and NODE as supported item types in cee::vtfx::SetBlock.

  • Added itemSubIndex to cee::vtfx::SetItemGroup in order to specify a local face, edge, node index for these new set types.

  • Added new example VTFxSets which showcases how to use sets in VTFx.

Envision Web: (cee.ug)

  • Added elementFaceIndex, elementEdgeIndex and elementNodeIndex to cee.ug.HitItem.

  • Added itemType to cee.ug.SetInfo

  • Added new query QuerySetItems to get items in a given set. This has an option to also return the tesselation of the set items (triangles for element face sets, lines for element edge sets and points for element node/node sets). This is useful for showing the sets by feeding these tessellations into the Markup or Geometry model.

Updated documentation to show element edge and surface order for Envision Desktop and VTFx:

Note: Full support in Envision Desktop is coming in a later version, as well as support in Data Providers.

CAE-870 Add cug-server to examples docker installation

The Envision distribution demo (http://envision.ceetron.com) now has a CugServer running to the CUG examples should work as intended.

CAE-876 cee.ug.CuttingPlane: Eye-lift support for cutting planes

Added a setting for giving cutting planes a visual priority (eye-lift) to control z-fighting when the cutting plane is competing against other geometry.

See cee.ug.CuttingPlane.eyeLift for more info.

CAE-879 Added Data Provider Framework documentation to the Envision Desktop documentation

The documentation for the Data Provider Framework is now a part of the CEETRON Envision Documentation.

CAE-881 The web ugServer is now built with CentOS7 and only requires glibc 2.17

The server for RemoteModel (server/UgServer) is now built with CentOS7 and requires only glibc 2.17. The previous requirement was Ubuntu16 (glibc 2.23).

CAE-885 Add support for serving web apps through CUG server

Add support to CUG server for serving web apps over same port

  • Add CEW_CUGS_PUBLIC_DIR env var for specifying dir to be served statically

  • Add CEW_CUGS_CONFIGURE_EXPRESS_APP_JS_FILE env var for providing extra routes required by the app

  • Move status route to /status

  • Rename docker container models dir from "TestModels" to more generic name "Models"

CAE-888 Add DataProviderFramework/ResultCalculatorFramework to Envision Desktop distribution

Added the Data Provider Framework and the Result Calculator Framework distribution to Envision Desktop.

CAE-895 Add interface name to SimulationInfo

Added name of interface (file reader / data provider) currently used by RemoteModel to SimulationInfo (e.g. NASTRAN, ABAQUS, OpenFOAM, etc)

See cee.ug.SimulationInfo.interfaceName for more info.

CAE-904 cee.ug.CuttingPlane: Support for turning the light on/off

Add support for disabling lighting of cutting planes. This can be useful to see the colors on the cutting plane without shading effects.

See cee.ug.CuttingPlane.lighting for more info.

CAE-907 Add OpenFOAM data provider to Envision Desktop distribution

The OpenFOAM data provider is now distributed as a part of CEETRON Envision for Desktop.

CAE-910 Upgrade Envision Desktop and Web to use CEETRON SAM 1.0.1

 


CEETRON Envision 1.0.0 - Sep 28, 2022 - SHA: 39e4a5d5

Note: CEETRON Envision 1.0 requires a new license and a new way to provide that license to the toolkit. Please see the license section below.

Rename Ceetron Cloud Components (C3) to CEETRON Envision for Web

The product Ceetron Cloud Components (C3) has been renamed to CEETRON Envision for Web. The product is almost identical and has the same features, with the change of the license system being the most notable change (see below). There are also some changes to the organization of the distribution archive, where the servers are now grouped into the server folder, and the CeeCloudServer is now in the server/ugServer folder.

The product documentation is now also part of the Tech Soft 3D documentation system and can be found here.

Note: The demo site running the docker versions of Envision Web can now be found on: https://envision.ceetron.com (previously http://c3.ceetron.com).

Rename Ceetron Desktop Components to CEETRON Envision for Desktop

The product Ceetron Desktop Components (CDC) has been renamed to CEETRON Envision for Desktop. The product is almost identical and has the same features, with the change of the license system being the most notable change. (see below). Ceetron Python Modules [CPM] is now a part of the Envision Desktop distribution and no longer a separate product. See CAE-850 below for more info.

The product documentation is now also part of the Tech Soft 3D documentation system and can be found here.

New unified documentation for all CEETRON products (including Envision Desktop and Web)

We have a new look and feel for the entire CAE product line at Tech Soft 3D. This is using the same system as for the new HOOPS documentation.

The main entry point is https://docs-test.techsoft3d.com/ceetron/latest/main/index.html. Here you can find an overview of the entire CEETRON product line and browse or search for documentation for any of the products.

New unified HOOPS license system in Envision (Web and Desktop)

Envision (Web and Desktop) now uses the unified HOOPS license. The same license can be used across all CEETRON and HOOPS products, given that the license has the needed features enabled. This license key is a long string and it replaces the two keys (KeyA and KeyB) that were used in C3 and CDC.

For CEETRON Envision Web, the license can be specified with the ugServer.setLicenseCode(myCode). You can also copy your hoops_license.h (downloaded from the Developer Zone) into the same folder as the server code. For more help, please see the documentation here.

For CEETRON Envision Desktop, you need to provide the string to cee::CoreComponent::initialize(). One way to do this is to use hoops_license.h (downloaded from the Developer Zone) as shown below:

For more information, please see the documentation here.

Changes to versioning

CEETRON Envision Desktop and Web will follow the same version numbers and starts at 1.0. We will strictly follow Semantic Versioning ( ).

For Envision Desktop there have been some changes to the CeeCore/Version.h file with its macros:

Old Define

New Define

Old Define

New Define

CEE_VERSION

CEE_VERSION_NUMERIC

CEE_MAJOR_VERSION

CEE_VERSION_MAJOR

CEE_MINOR_VERSION

CEE_VERSION_MINOR

CEE_PATCH_VERSION

CEE_VERSION_PATCH

CEE_SPECIAL_BUILD

CEE_VERSION_PRE_RELEASE

Note: The CEE_VERSION_STRING is now: “MAJOR.MINOR.PATCH" (for pre-releases: “MAJOR.MINOR.PATCH-PRE_RELEASE"). Examples: 1.2.3 or 1.4.0-RC1

The is a new method in CoreComponent to get the full version with the build SHA:

CoreComponent::versionStringWithBuildSha() Returns full version number. Examples: 1.2.1+e73b7a84 or 1.2.0-rc1+e73b7a84.

There is now a VersionInfo.json file in the root folder of both Desktop and Web distributions detailing the version info of the distribution:

Web

Desktop

Web

Desktop

 

Changes to environment variables

Most environment variables have changed from C3_* to CEW_*.

Old environment variable name

New environment variable name

C3_UG_PORT

CEW_UG_PORT

C3_UG_USE_HTTPS

CEW_UG_USE_HTTPS

C3_UG_MODEL_PATH

CEW_UG_MODEL_PATH

C3_UG_ENABLE_REST_API_UPLOAD

CEW_UG_ENABLE_REST_API_UPLOAD

C3_UG_ENABLE_REST_API_QUERY

CEW_UG_ENABLE_REST_API_QUERY

C3_UG_ENABLE_CORS

CEW_UG_ENABLE_CORS

C3_UG_DATA_PROVIDER_FOLDER

CEW_UG_DATA_PROVIDER_FOLDER

C3_UG_RESULT_CALCULATOR_FOLDER

CEW_UG_RESULT_CALCULATOR_FOLDER

C3_UG_ADD_ON_FULL_FILENAME

CEW_UG_ADD_ON_FULL_FILENAME

C3_UG_DISABLE_IMPORT_CAE

CEW_UG_DISABLE_IMPORT_CAE

C3_UG_LOG_CONSOLE_OUTPUT_TYPE

CEW_UG_LOG_CONSOLE_OUTPUT_TYPE

C3_UG_LOG_FILE_OUTPUT_TYPE

CEW_UG_LOG_FILE_OUTPUT_TYPE

C3_UG_LOG_FILENAME

CEW_UG_LOG_FILENAME

C3_UG_LOG_LEVEL

CEW_UG_LOG_LEVEL

 

 

C3_CUGS_PORT

CEW_CUGS_PORT

C3_CUGS_FILE_DS_PATH

CEW_CUGS_FILE_DS_PATH

C3_CUGS_LOG_CONSOLE_OUTPUT_TYPE

CEW_CUGS_LOG_CONSOLE_OUTPUT_TYPE

C3_CUGS_LOG_FILE_OUTPUT_TYPE

CEW_CUGS_LOG_FILE_OUTPUT_TYPE

C3_CUGS_LOG_FILENAME

CEW_CUGS_LOG_FILENAME

C3_CUGS_LOG_LEVEL

CEW_CUGS_LOG_LEVEL

 

 

C3_GS_PORT

CEW_GS_PORT

C3_GS_USE_HTTPS

CEW_GS_USE_HTTPS

C3_GS_REDIS_DS_HOST

CEW_GS_REDIS_DS_HOST

C3_GS_FILE_DS_PATH

CEW_GS_FILE_DS_PATH

C3_GS_LOCAL_FILE_SOURCE_PATH

CEW_GS_LOCAL_FILE_SOURCE_PATH

Fixed bugs

CAE-831 Missing vector filtering "skip by" when mapped to iso/cut

Specifying a skip-by for drawing of vectors did not work as expected for isosurfaces, isovolumes and cutting planes.

CAE-826 Query of results from VTFx files which reference result values by ID did not work

Querying results from a model backed by a VTFx file did not work as expected if the result values were referenced by ID (not the recommended way to reference result values).

CAE-811 [Web] ug.QueryNodeInfo returned -1 for node id if displacements were enabled

If a model were using displacements, the result returned from QueryNodeInfo would not contain the correct node ids.

CAE-801 [Web] VTFx properties did not apply info on visible sets and how to show them properly

Loading VTFx models with properties did not apply proper settings for visible sets.

CAE-762 Wrong visualization of mirrored parts on a cutting plane

Cutting planes for mirrored parts did not render correctly.

Feature

CAE-850 Added support for Python 3.7-3.10 in one unified distribution

CEETRON Envision Desktop now supports Python 3.7-3.10. In the distribution archive, there is a Python folder that contains what used to be Ceetron Python Modules [CPM].

Note that we have changed the python folder from cee to cee_envision to prepare for distribution on PyPI. So all old scripts using CPM needs to be updated to reflect this change.

CAE-774 [Web] Add support for dynamic symmetric arrows for vectors

Added support for drawing symmetric vector arrows which direction (inward or outward) is controlled by the sign of a user defined scalar result. This could be used to show if a stress result is compression or tension.

Added a new vector type (DYNAMIC_SYMMETRIC_ARROW) and VectorSettings.setVectorTypeDynamicSymmetricArrow(scalarId: number) to specify this new visualization.

Note: The property VectorSettings.vectorType now is a read-only property and the set property is deprecated. It will still work, but will be removed in future versions. So please use the new setVectorTypeArrow(), setVectorTypeSymmetricArrow() and setVectorTypeReverseSymmetricArrow() functions in VectorSettings to change the vector type.

CAE-698 [Web] Client-side element picking

Added support for client side picking of visible triangles within a region (rectangle) or along a path (set of points). This is a fast way to find all visible triangles within a region. You can then use the output of this to highlight the triangles, or to query the server to get which elements these triangles represent.

Added RemoteModelElementPicker which can be produced by RemoteModel.createElementPicker(view: View). Use the getVisibleElementsInRectangle or getVisibleElementsAtPoints methods to perform the query. Note that a new RemoteModelElementPicker must be created if you change the state of the RemoteModel. See documentation for more info.

CAE-827 [Web] Add interfaceName to cee.ug.SimulationInfo

Added the name of the interface/reader/data provider that is currently in use for the RemoteModel in cee.ug.SimulationInfo.interfaceName

CAE-760 [Web] Create new markup part for lines

Added new Markup Part cee.mrk.PartLines. This is a part that can show lines in a MarkupModel. Added cee.utils.PathGenerator which is a helper class to generate vertices for a path that can then be shown with the PartLines markup part.

CAE-740 Support for polyhedrons in CEETRON Envision VTFx component

Polyhedrons are now fully supported in the VTFx export component. Added cee::vtfx::ElementBlock::addPolyhedronElements() for adding polyhedron elements to a VTFx block.

CAE-794 Add result unit information to VTFx export and Envision Desktop

Added cee::ug::ResultInfo::setUnit() and unit() to Envision Desktop. This is already present in Envision Web.

Added cee::vtfx::ResultBlock::setUnit() and unit() to CEETRON Envision VTFx component.

CAE-836 Add robustness for empty DataPartVector/DataPartScalar

CEETRON Envision now handles parts with no result a bit more robust, as it is now allowed to have part objects with no results and not only nullptr in the part array.


For previous releases, please see or