# HOOPS Exchange 2024.7.0

## Technology Update

### Format Updates

Format | Updated Version
--- | ---
STEP | AP 242 Ed2 (beta) and Ed3 (beta)
Parasolid | 37.0
Revit | 2025

See File Formats for the list of all supported formats.

Beginning with 2024.7.0 release of HOOPS Exchange, STEP AP 242 Edition 2 & 3 is supported in beta state. Although we have not explicitly added any new classes, HOOPS Exchange STEP reader is able to read Edition 2 and Edition 3 files. Thanks to this improvement, the HOOPS Exchange STEP reader is now ready for further evolutions of the STEP standards.

### Third-Party Libraries Updates

Below third-party libraries have been updated:

Library | New Version
--- | ---
ODA | 25.8

Within the context of supporting Revit 2025, we have updated the binary dependencies to ODA (Open Design Alliance) to 25.8. This update fixes few bugs related to our Revit support as well as some third party versions are updated adressing reported CVEs. Windows and Linux packages are updated for this version.

For more information about package content, see Distributing Your Application.

See also

- File Formats
- Revit Reader

## New Features

Export wireframe tessellation in JT

The wireframe tessellation stored in `A3DRiPolyWireData` can now be exported in JT 8.1, 9.5 and 10.0 using the option `m_bWriteWireframe` from `A3DRWParamsExportJTData` (this option is set to false by default).

T-Junctions Detection and Removal

A T-junction occurs when two adjacent triangles subdivide the edge of a third triangle, hence forming T-shaped edge junction. T-junctions can cause issues in rendering, such as visible seams and cracks, or problems in simulations and mesh deformations due to the lack of proper vertex connections, leading to geometric inconsistencies.

We now provide a way to repair mesh geometry by removing T-junctions.

This new feature is provided as experimental (see Experimental Features below). It extends the HOOPS Exchange API with a new function and structure:

- `A3DMeshRepair_experimental()`
- `A3DMeshRepairParametersData`

For more information, see T-Junctions Detection and Removal.

Experimental Features

A new API mechanism is provided to enable experimental API functions. For more information, see Extending HOOPS Exchange.

## API Changes

### Deprecation: Removal of `HOOPS_LICENSE`

As of this release, the automatic inclusion of the hoops_license.h header file from HOOPS Exchange headers is deprecated. This change will take effect in the upcoming release, HOOPS Exchange 2024.8.0.

The hoops_license.h file contains the macro definition `HOOPS_LICENSE` used to pass the license key when initializing HOOPS Exchange via the function `A3DLicPutUnifiedLicense()`. This change removes the automatic definition of `HOOPS_LICENSE` when including HOOPS Exchange header files.

As a reminder, license initialization is currently handled as follows:

    A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE);

While no code changes are required until the 2024.8.0 release, it is possible to prepare for this change by migrating now. The following migration guide is valid starting with the 2024.7.0 release.

To initialize HOOPS Exchange correctly, you now have three options:

1. Explicitly Include hoops_license.h

You can still explicitly include hoops_license.h in your source code:

    #include <hoops_license.h>

    // ...

    A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE);

2. Manually Define `HOOPS_LICENSE`

Alternatively, you can manually define the `HOOPS_LICENSE` macro in your source code before calling `A3DLicPutUnifiedLicense()`:

    #define HOOPS_LICENSE "Enter the license key"

    // ...

    A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE);

This approach eliminates the need to include hoops_license.h entirely.

3. Pass the License Key Directly

Finally, you can pass the license key directly as a string when calling `A3DLicPutUnifiedLicense()`:

    A3DStatus result = A3DLicPutUnifiedLicense("Enter the license key");

This method eliminates the need for both the macro definition and the inclusion of hoops_license.h.

For more information, please refer to our Initializing HOOPS Exchange guide and our Set Up Your Environment tutorial.

## Documentation Update

### HOOPSY

We are excited to introduce HOOPSY our new Documentation AI assistant, now available for HOOPS Exchange and HOOPS Publish users. This tool leverages advanced AI capabilities to help you find relevant information quickly and efficiently, providing on-demand, multilingual support for your documentation needs.

Key Features

- Natural Language Processing (NLP): The assistant understands your queries in everyday language, delivering precise and contextually relevant answers.
- Comprehensive Documentation Search: Searches across the HOOPS Exchange and HOOPS Publish documentation to retrieve the most relevant pages, ensuring you get accurate information for your queries.
- Reference Links: Offers direct links to the original documentation, enabling deeper exploration and providing full context to enhance understanding.
- Conversation Sharing: Easily share your AI assistant conversations with others for collaborative troubleshooting and knowledge sharing.
- Multilingual Support: Supports multiple languages to cater to a global user base, allowing you to interact with the assistant in your preferred language.
- Continuous Learning: The AI assistant continuously improves its responses based on user interactions, ensuring it becomes more helpful over time.

## Deprecations

These symbols are deprecated. They will be moved to a separate namespace and/or header file and made opt-in starting with version 2025.1.0, and then removed completely in 2026.1.0:

- `A3DAsmPartDefinitionFeatureTreesGet`
- `A3DAsmProductOccurrenceUnload`
- `A3DCallbackDrawBegin`
- `A3DCallbackDrawBeginFixedSize`
- `A3DCallbackDrawBeginFrameDraw`
- `A3DCallbackDrawBeginLineStipple`
- `A3DCallbackDrawBeginLineWidth`
- `A3DCallbackDrawBeginMaterial`
- `A3DCallbackDrawColor`
- `A3DCallbackDrawCylinder`
- `A3DCallbackDrawEnd`
- `A3DCallbackDrawEndFixedSize`
- `A3DCallbackDrawEndFrameDraw`
- `A3DCallbackDrawEndLineStipple`
- `A3DCallbackDrawEndLineWidth`
- `A3DCallbackDrawEndMaterial`
- `A3DCallbackDrawFont`
- `A3DCallbackDrawGetDrawContext`
- `A3DCallbackDrawMarkupTriangle`
- `A3DCallbackDrawMaterial`
- `A3DCallbackDrawMultMatrix`
- `A3DCallbackDrawPattern`
- `A3DCallbackDrawPicture`
- `A3DCallbackDrawPoint`
- `A3DCallbackDrawPolyLine`
- `A3DCallbackDrawPolygon`
- `A3DCallbackDrawPopMatrix`
- `A3DCallbackDrawProject`
- `A3DCallbackDrawPushMatrix`
- `A3DCallbackDrawSetTessellationPoints`
- `A3DCallbackDrawSymbol`
- `A3DCallbackDrawText`
- `A3DCallbackDrawTriangle`
- `A3DCallbackDrawTriangleFan`
- `A3DCallbackDrawTriangleFanOneNormal`
- `A3DCallbackDrawTriangleFanOneNormalTextured`
- `A3DCallbackDrawTriangleFanTextured`
- `A3DCallbackDrawTriangleOneNormal`
- `A3DCallbackDrawTriangleOneNormalTextured`
- `A3DCallbackDrawTriangleStripe`
- `A3DCallbackDrawTriangleStripeOneNormal`
- `A3DCallbackDrawTriangleStripeOneNormalTextured`
- `A3DCallbackDrawTriangleStripeTextured`
- `A3DCallbackDrawTriangleTextured`
- `A3DCallbackDrawUnProject`
- `A3DComputeOrthoHLROnModelFile`
- `A3DComputeOrthoHLROnModelFile2`
- `A3DDisableHandleSIGSEGV`
- `A3DDraw`
- `A3DDrawGetBoundingBox`
- `A3DDrawInitCallbacks`
- `A3DDrawMarkup`
- `A3DDrawRepresentationItem`
- `A3DEnableHandleSIGSEGV`
- `A3DGetCurveAsAnalytic`
- `A3DGetCurveAsAnalyticFromCoEdge`
- `A3DGetSurfaceAsAnalytic`
- `A3DMkpRTFDelete`
- `A3DMkpRTFGetField`
- `A3DMkpRTFInit`
- `A3DProjectPointCloud2`
- `A3DSimplifyModelFileCurveAndSurfaceAsAnalytic`
- `A3DSurfBaseGetAsNurbs`
- The A3DSDKDraw.h header.

For more information, please see our Support policies documentation.

Messages will be emitted by the compiler for these symbols. They can be silenced by defining the A3DAPI_IGNORE_DEPRECATED macro before including HOOPS Exchange headers.

## Fixed Bugs

As of 2026-04-14

Issue | Description
--- | ---
SDHE-21929 | Fixed misplaced geometry in NWD file
SDHE-21888 | Fixed incorrect PMI upon importing from 3DXML
SDHE-21847 | Fixed undefined behavior while reading from SAT
SDHE-21819 | Fixed vulnerability exposed by reading some Parasolid files
SDHE-21802 | Fixed garbled names in Creo on Chinese locale
SDHE-21801 | Fixed error upon importing from Creo
SDHE-21616 | Fixed incorrect behavior in ‘Prefer Face’ projection option
SDHE-21418 | Upgraded Zlib dependency to 1.3.1
SDHE-20867 | Improved performances of point projection

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Exchange in your own language, or choose a sample question below to start a conversation:

What is HOOPS Exchange?
What are the latest release notes for HOOPS Exchange?
How do I start evaluating HOOPS Exchange?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...