#######################
HOOPS Exchange 2026.1.0
#######################

Technology Updates
==================

Format Updates
--------------

.. rubric:: DGN Reader Official Release

Beginning with HOOPS Exchange release 2026.1.0, the DGN reader is officially supported.
For more information, see :doc:`/start/format/dgn_reader`.

See :doc:`/start/supported-formats` for the list of all supported formats.


New Features
============

.. rubric:: Creo Simplified Representation

HOOPS Exchange now provides a way to extract simplified representations as views independent of combined states while importing Creo files.
A new option called :cpp:member:`~A3DRWParamsCreoData::m_bReadSimplifiedRepresentationAsView` has been introduced.

API Changes
===========

For more details about migrating codebase to 2026.x.y, see :doc:`migration-guide/2026`.

Several API changes have been made in this release, to remove deprecated functions and structures, and to make their naming more consistent.
To help with all the renaming you can use the ``he_2026_1_api_update.py`` located in the ``tools`` folder of the HOOPS Exchange installation.

* Renamed types:

  * :cpp:struct:`A3DAsmAttachmentsInfosSLW` is renamed to :cpp:struct:`A3DAsmAttachmentInfoSLW`
  * :cpp:struct:`A3DAsmLayerEntity` is renamed to :cpp:struct:`A3DAsmLayer`.
  * :cpp:struct:`A3DAsmLayerEntityData` is renamed to :cpp:struct:`A3DAsmLayerData`.
  * :cpp:struct:`A3DAsmProductOccurrenceDataProe` is renamed to :cpp:struct:`A3DAsmProductOccurrenceDataCreo`.
  * :cpp:struct:`A3DAsmProductOccurrenceDataUg` is renamed to :cpp:struct:`A3DAsmProductOccurrenceDataNX`.
  * :cpp:struct:`A3DElementsByRefsetUg` is renamed to :cpp:struct:`A3DElementsByRefsetNX`.
  * :cpp:struct:`A3DPromotedBodyUg` is renamed to :cpp:struct:`A3DPromotedBodyNX`.
  * :cpp:struct:`A3DRiComputeMeshDataParameters` is renamed to :cpp:struct:`A3DRiComputeMeshParametersData`.
  * :cpp:struct:`A3DRWParamsProEData` is renamed to :cpp:struct:`A3DRWParamsCreoData`.
  * :cpp:struct:`A3DRWParamsUnigraphicsData` is renamed to :cpp:struct:`A3DRWParamsNXData`.

* Renamed functions:

  * :cpp:func:`A3DAsmGetFilesPathFromModelFile` is renamed to :cpp:func:`A3DAsmComputeFilePathsFromModelFile`.
  * :cpp:func:`A3DAsmLayerEntityGet` is renamed to :cpp:func:`A3DAsmLayerGet`.
  * :cpp:func:`A3DAsmProductOccurrenceGetProe` is renamed to :cpp:func:`A3DAsmProductOccurrenceGetCreo`.
  * :cpp:func:`A3DAsmProductOccurrenceGetUg` is renamed to :cpp:func:`A3DAsmProductOccurrenceGetNX`.

* Renamed members:

  * In :cpp:enumerator:`A3DEMDDimensionSymbolType`, :cpp:enumerator:`KEA3DDimensionSymbolTypeUNKNOW` is renamed to :cpp:enumerator:`kA3DDimensionSymbolTypeUNKNOWN`.
  * In :cpp:enumerator:`A3DEEntityType`, :cpp:enumerator:`kA3DTypeAsmLayerEntity` is renamed to :cpp:enumerator:`kA3DTypeAsmLayer`.
  * In :cpp:struct:`A3DAsmProductOccurrenceDataSLW`, :cpp:member:`m_uiAttachementsSize` is renamed to :cpp:member:`m_uiAttachmentsSize`.
  * In :cpp:struct:`A3DAsmProductOccurrenceDataSLW`, :cpp:member:`m_psAttachements` is renamed to :cpp:member:`m_psAttachments`.
  * In :cpp:struct:`A3DRWParamsSpecificLoadData`, :cpp:member:`m_sUnigraphics` and :cpp:member:`m_sProE` are renamed to :cpp:member:`m_sNX` and :cpp:member:`m_sCreo`.
  * In :cpp:struct:`A3DAsmProductOccurrenceDataCreo`, :cpp:member:`m_iProEMemberType` and :cpp:member:`m_iProEMemberId` are renamed to :cpp:member:`m_iCreoMemberType` and :cpp:member:`m_iCreoMemberId`.
  * The enumeration names have been made more consistent:

    * Names starting with ``EA3D`` now start with ``A3DE``, for example: ``EA3DMDLineWeldingType`` becomes :cpp:enumerator:`A3DEMDLineWeldingType`.
    * Names starting with ``A3D`` now start with ``A3DE``, for example: ``A3DMDGDTValueType`` becomes :cpp:enumerator:`A3DEMDGDTValueType`.
    * Names starting with ``A3DProE`` now start with ``A3DECreo``, for example: ``A3DProESessionColorType`` becomes :cpp:enumerator:`A3DECreoSessionColorType`.
    * Value names starting with ``A3DProE`` now start with ``kA3DCreo``, for example: ``A3DProEReadConstructEntities_AsDatum`` becomes :cpp:enumerator:`kA3DCreoReadConstructEntities_AsDatum`.
    * Value names starting with ``KEA3D`` and ``KA3D`` have been renamed to ``kA3D``, for example: ``KEA3DDimensionSymbolTypePROJTOLZONE`` becomes :cpp:enumerator:`kA3DDimensionSymbolTypePROJTOLZONE`.
    * Value names starting with ``kA3DE_`` have been renamed to ``kA3D_``, for example: ``kA3DE_JT81`` becomes :cpp:enumerator:`kA3D_JT81`.

* Added enum values in :cpp:enumerator:`A3DEEntityType`:

  * :cpp:enumerator:`kA3DTypeMiscAttributeUnit`
  * :cpp:enumerator:`kA3DTypeDrawingCurve3D`

* Removed functions:

  * :cpp:func:`deprecated_A3DDrawGetBoundingBox`. Use :cpp:func:`A3DMiscComputeBoundingBox` with the parameter :cpp:struct:`A3DMiscComputeBoundingBoxOptions` having :cpp:member:`m_bIncludePMI` set to true instead.
  * :cpp:func:`deprecated_A3DGetCurveAsAnalytic`. Use :cpp:func:`A3DSimplifyCurveWithAnalytics` instead.
  * :cpp:func:`deprecated_A3DGetCurveAsAnalyticFromCoEdge`. Use :cpp:func:`A3DSimplifyCurveWithAnalyticsFromCoEdge` instead.
  * :cpp:func:`deprecated_A3DGetSurfaceAsAnalytic`. Use :cpp:func:`A3DSimplifySurfaceWithAnalytics` instead.
  * :cpp:func:`deprecated_A3DProjectPointCloud2`. Use :cpp:func:`A3DProjectPointCloud3` instead.
  * :cpp:func:`deprecated_A3DComputeOrthoHLROnModelFile`. Use :cpp:func:`A3DComputeOrthoHLROnModelFile3` instead.
  * :cpp:func:`deprecated_A3DComputeOrthoHLROnModelFile2`. Use :cpp:func:`A3DComputeOrthoHLROnModelFile3` instead.
  * :cpp:func:`deprecated_A3DDisableHandleSIGSEGV`.
  * :cpp:func:`deprecated_A3DEnableHandleSIGSEGV`.
  * :cpp:func:`deprecated_A3DAsmPartDefinitionFeatureTreesGet`.
  * :cpp:func:`deprecated_A3DSurfBaseGetAsNurbs`. Use :cpp:func:`A3DSurfBaseWithDomainGetAsNurbs` instead.
  * :cpp:func:`deprecated_A3DMkpRTFInit`. Use :cpp:func:`A3DMkpRTFFieldCreate` instead.
  * :cpp:func:`deprecated_A3DMkpRTFGetField`. Use :cpp:func:`A3DMkpRTFFieldGet` instead.
  * :cpp:func:`deprecated_A3DMkpRTFDelete`. Use :cpp:func:`A3DMkpRTFFieldDelete` instead.
  * :cpp:func:`deprecated_A3DAsmProductOccurrenceUnload`. Use :cpp:func:`A3DAsmModelFileUnloadParts` instead.
  * :cpp:func:`deprecated_A3DSimplifyModelFileCurveAndSurfaceAsAnalytic`. Use :cpp:func:`A3DSimplifyModelFileWithAnalytics` instead.  
  * :cpp:func:`deprecated_A3DPDFInitializePDFLib`. Use :cpp:func:`A3DPDFInitializePDFLibAndResourceDirectory` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentCreateUniquePage`. Use :cpp:func:`A3DPDFDocumentAppendNewPage2` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentAppendNewPage`. Use :cpp:func:`A3DPDFDocumentAppendNewPage2` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentAppendPageFromPDFFile`. Use :cpp:func:`A3DPDFDocumentAppendPageFromPDFFileAndSuffixFields` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentCreateUniquePage2`. Use :cpp:func:`A3DPDFDocumentAppendNewPage2` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentGetUniquePage`. Use :cpp:func:`A3DPDFDocumentGetPage` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentSetPassword`. Use :cpp:func:`A3DPDFDocumentSetPasswordSecurity` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentSetDocumentPermissions`. Use :cpp:func:`A3DPDFDocumentSetPasswordSecurity` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentSave`. Use :cpp:func:`A3DPDFDocumentSaveEx` instead.
  * :cpp:func:`deprecated_A3DPDFImageCreate`. Use :cpp:func:`A3DPDFImageCreateFromFile` or :cpp:func:`A3DPDFImageCreateFromStream` instead.
  * :cpp:func:`deprecated_A3DPDFPageInsertImage`. Use :cpp:func:`A3DPDFPageInsertImage2` instead.
  * :cpp:func:`deprecated_A3DPDFDefineViewCarousel`.
  * :cpp:func:`deprecated_A3DPDF3DArtworkCreate`. Use :cpp:func:`A3DPDF3DArtworkCreate2` instead.
  * :cpp:func:`deprecated_A3DPDFAnimMotionCreate`. Use :cpp:func:`A3DPDFAnimMotionCreate2` instead.
  * :cpp:func:`deprecated_A3DPDFDocumentAddImageAsIcon`. Use :cpp:func:`A3DPDFDocumentAddImageAsIcon2` instead.
  * :cpp:func:`deprecated_A3DPDFTableCreate`. 
  * :cpp:func:`deprecated_A3DPDFDefineSlideTable`.
  * :cpp:func:`deprecated_A3DPDFDefineSlideTable2`.
  * :cpp:func:`deprecated_A3DPDFSlideTableLinkTo3DNodes`.
  
  
  
  * The :cpp:func:`A3DAsmProductOccurrenceGetLayerList` function is removed. Please use instead the :cpp:struct:`A3DAsmLayer` entities in :cpp:struct:`A3DAsmProductOccurrence`.
  * All the other functions from the draw module have also been removed.

* Removed types:

  * :cpp:struct:`deprecated_A3DRTFFieldData`. Use :cpp:struct:`A3DMkpRTFFieldData` instead.  
  * :cpp:struct:`deprecated_A3DPDFPageData`. Use :cpp:struct:`A3DPDFPageData2` instead.
  * :cpp:struct:`deprecated_A3DPDFImageData`.
  * :cpp:struct:`deprecated_A3DPDF3DArtworkData`. Use :cpp:struct:`A3DPDF3DArtworkData2` instead.
  * :cpp:struct:`deprecated_A3DPDFAnimMotionData`. Use :cpp:struct:`A3DPDFAnimMotionData2` instead.
  * :cpp:struct:`deprecated_A3DPDFTableData`.  
  * The deprecated ``A3DAsmLayer`` structure is removed.

* Removed members:

  * In :cpp:enumerator:`A3DStatus`, :cpp:enumerator:`A3DPDF_CANNOT_LOAD_TABLETOPDF_DLL`, :cpp:enumerator:`A3DPDF_HTML_TABLE_ERROR`, :cpp:enumerator:`A3DPDF_HTML_STYLE_ERROR` have been removed.
  * In :cpp:enumerator:`A3DETessellationLevelOfDetail`, :cpp:enumerator:`deprecated_kA3DTessLODControlledPrecision` has been removed.
  * In :cpp:enumerator:`A3DEStepFormat`, :cpp:enumerator:`deprecated_kA3DStepAP242` has been removed.
  * In :cpp:struct:`A3DRWParamsGeneralData`, :cpp:member:`deprecated_m_iNbMultiProcess`.
  * In :cpp:struct:`A3DRWParamsTessellationData`, :cpp:member:`deprecated_m_dMinimalTriangleAngleDeg`.
  * In :cpp:struct:`A3DRWParamsIGESData`, :cpp:member:`deprecated_m_bSewBrepModels`.
  * In :cpp:struct:`A3DAsmProductOccurrenceDataJT`, :cpp:member:`deprecated_m_usValidDisplayFields`.
  * The ``kA3DFontStreched`` macro constant has been removed, please use :cpp:enumerator:`kA3DFontStretched` instead.


Documentation Changes
=====================

Expanded File Formats Information
---------------------------------

The :doc:`/start/supported-formats` section of Getting Started now contains expanded information on format-specific features supported by HOOPS Exchange readers and writers. Simply click the format titles in the :ref:`Import <supported_readers>` and :ref:`Export <supported_writers>` tables for more detailed information.


Deprecations
============

These symbols are deprecated. They will enter the opt-in stage in 2027.1.0, and then be removed completely in the 2028.1.0 release:

* :cpp:member:`A3DAsmProductOccurrenceData::m_ucBehaviour`
* :cpp:func:`A3DAsmModelFileDelete`
* :cpp:func:`A3DDllActivateXMLTrace`
* :cpp:func:`A3DFaceUVPointInsideManagerDelete`
* :cpp:func:`A3DGraphicsDelete`
* :cpp:func:`A3DMiscCascadedAttributesDelete`
* :cpp:func:`A3DMkpRTFFieldDelete`
* :cpp:func:`A3DProjectPointCloudManagerDelete`
* :cpp:func:`A3DXmlParsing`
* :cpp:func:`A3DPDFCheckBoxSetForFitSelectedMode`
* :cpp:func:`A3DPDF3DAnnotGetJavascriptHighlightManagerName`


Fixed Bugs
==========

.. csv-table::
    :header: "Issue", "Description"

    "SDHE-23123", "Fixed unexpected behavior when importing corrupted iges file."
    "SDHE-23044", "Fixed an access violation to an uninitialized TfMarkupTessData when all markup symbol entities contain only Note."
    "SDHE-23033", "Fixed unexpected behavior when importing corrupted iges file."
    "SDHE-23031", "Fixed unexpected behavior when importing corrupted iges file."
    "SDHE-23030", "Fixed unexpected behavior when importing corrupted iges file."
    "SDHE-22779", "Resolved a security issue (CVE) in the U3D reader"
    "SDHE-22722", "Handled IGES export of root product-occurrence placements and general transformations with uniform scale."
    "SDHE-22645", "Added type kA3DTypeDrawingCurve3D to the API."
    "SDHE-22521", "Flatten Contours and Rosette are now also linked to correct feature node (CATCoFlattenBodyFeatName)."
    "SDHE-22235", "Improve the Parasolid reader and file format check to reliably process files larger than 2 GB"
    "SDHP-2937", "Fixed support of semantic texts surrounding datums in STEP AP242."
    "SDHP-2936", "Fixed default values for frame and score in dimensions for STEP export."
    "SDHP-2931", "Fixed iType mismatch in Step242 export."
