# HOOPS Exchange 2018 SP2

Format Updates

Format | Updated Version
--- | ---
Creo | 5

New Format Support (Summary)

Format | Import/Export | Platforms
--- | --- | ---
Autodesk 3DS Reader | Import Only | Windows Only
DWG Reader | Import Only | Windows/Linux/Android
COLLADA Reader | Import Only | Windows Only
Autodesk DWF Reader | Import Only | Windows/Linux
glTF Reader | Import Only | Windows/Linux/Mac
Revit Reader | Import Only | Windows 64 bits only
Wavefront OBJ Reader | Import Only | Windows Only

## New Format Details

The import of OBJ, COLLADA and 3DS files is now officially supported, having moved from the vault to the main HOOPS Exchange product release. We encourage you to try these file formats and give us your feedback.

### glTF

The glTF format (version 2.0 only) is now supported for import. It includes the support for Texture Mapping.

- kA3DTextureMappingMetallness
- kA3DTextureMappingNormal
- kA3DTextureMappingOcclusion
- kA3DTextureMappingRoughness
- Plus combinations of above. See `A3DGraphMaterialData` Documentation for details.

### Autodesk Revit

Autodesk Revit import is now supported (Revit 2015 to 2018 inclusive, Windows 64bits Only). This is a first pre-release version for testing and feedback, released complete with some caveats and known issues. The main purpose of this first release is to allow the access and viewing of the contents of Revit files and understanding of structure. (Levels, categories and views).

The functionality for this first pre-release and is as follows:

- Import .rvt files and .rfa files
- Import tessellated objects only, no B-Rep.
- Ability to sort and display objects by level then by categories inside each level (This is similar to the method available in IFC
    files). Each level has a metadata TYPE = IFCBUILDINGSTOREY, again this is similar to IFC.
- Read the basic material (color, transparency) for tessellation
    objects.
- Read and import the 3D views (change visibility + set camera)
- The handling of visibility/graphics overridden by views (graphics
    override per view is not handled)
- Using layers to set category for each item.

Currently known issues:

- Visibilities overrides sometimes do not handle some sub-categories
    correctly.
- Wire coloring is disabled.
- Drawing sheets are not supported.
- Some items may be located at the structure root instead of the
    correct level.

Please send us your feedback and feature requests for Revit support in future releases.

### AutoCAD DWF

The import of .DWF and .DWFx files is now available for Windows and Linux. It is currently limited to the reading of 3D objects only.

### AutoCAD DWG DXF

The ability to import .dwg and .dxf files on the Android mobile platform is new for this release.

### Enhancements (New Functionality)

Identifying Rigidly Connected Parts

HOOPS Exchange has added new functionality to identify components within a CAD assembly that are rigidly fixed to each other. This is valuable for helping to understand and reduce the complexity of assemblies when doing motion and kinematic analysis, reducing the number of possible moving components. This is achieved by looking for and reading the appropriate associated attribute stored in the CAD file. This attribute flags and identifies this condition, locking together certain parts.

There are 3 new functions:

- `A3DAsmGetFixedComponents()` – This gives a list of components with a locked position at a specific assembly level.
- `A3DAsmGetFixedTogetherComponents()` – This gives a list of the components rigidly connected to each other.
- `A3DAsmGetFlexibleComponents()` – Identifies which components are considered flexible.

Please note that this functionality is supported for CATIA, NX and SolidWorks files only at this release.

“Deep Copy” of a Product Occurrence

When editing the properties of an individual instance of a component in an assembly that has multiple instances of that component, the property will be changed for all instances of the product. The Deep Copy function will allow the associativity of a single instance to be removed (exploded) from its related instances, so that it can be treated and edited separately as if it were an individual and independent component.

`A3DAsmProductOccurrenceDeepCopy()` is available to duplicate and copy a selected product occurrence and all its associated data. (For more details please see the `A3DAsmProductOccurrenceDeepCopy()` “API Reference”.)

### Enhancements to Existing Functionality

Mass Property Calculation Improvements

Physical properties can now be computed on B-rep when it is available using the geometry of an A3DRiBrepModel. Additional properties (center of surface and inertia) are now calculated and available.

To accommodate this, the physical properties structure has been expanded with additional parameters. The surfacic gravity center and surfacic/volumic inertia matrix (relative to their respective center of gravity) are new additional return values available.

A new precision parameter is added as part of the control input determining how accurate (precise) the user wants the computation to be, and the ‘use geometry’ parameter allows the user to control whether tessellation or geometry should be used for the computation, when both are available.

This affects all three physical properties-related functions A3DComputePhysicalProperties, A3DComputeModelFilePhysicalProperties and A3DComputePolyBrepPhysicalProperties). When using default input parameters, their behavior remains consistent with the previous release, the only difference being the extra computed values.

SolidWorks

Datum entity visibility can be controlled by option `A3DRWParamsSolidworksData.m_usDisplayVisibleDatum`.

Rhino

You can switch between colors or material with `A3DRWParamsRhinoData.m_bForceRenderedModeColors`. The default parameter sets to use materials.

JT

PMIs support has been improved with respect to the links in JT PMIs and

- Geometry highlight, selecting PMI in an assembly
- Element visibility in views
- Exploded views

There has also been improvement of the PMI tessellation for some symbols/custom fonts.

Accurate Tessellation Improvements

When using the more accurate (water-tight) tessellation, on curved surfaces, many triangles are created of a similar size. Sometimes this is not desirable if the application requires the shape of the triangles to better match the shape of these curved faces and produce better visualization.

For accurate tessellation, there is a new option: `A3DRWParamsTessellationData.m_bAccurateSurfaceCurvatures`

This results in the face curvature controlling and making the triangle length and direction better match the shape of the faces, yielding better visual results and also reducing the number of triangles.

### Improved Debugging

We’ve introduced a way to generate the list of calls to the API (See `A3DCallbackAPITrace()`)

New Sample for Collision Detection

In the 2018 SP1 Release, we added support for collision detection. This release now provides a new example project for Collision Detection.

The sample reads an input CAD file and outputs collision status between representation items. The user may select which items are tested using their UUIDs and the output is available as a report file. Please see the example section or the Programming Guide for more details.

### C API Changes

A number of changes have been made to the C Interface in order to make it compliant to C Language specifications. Though some of these changes may break code compatibility, they provide a safer version of the API:

- A3DSDKConvert.hxx and A3DSDKInternalConvert.hxx which define
    A3DSDKHOOPSExchangeLoader, A3DImport and A3DExport are now only available when compiling C++.
- A3DSDK.h now defines two constants, A3D_TRUE (1), and A3D_FALSE (0)
    which can be used to compare values of type A3DBool
- Calling `A3DSDKLoadLibrary()` was ambiguous when compiling with
    Microsoft Visual Studio. The function name is now a C Macro definitions which expands to:
    - A3DSDKLoadLibraryW if compiling with MSVC and UNICODE is set
    - A3DSDKLoadLibraryA otherwise

The table below lists more specific changes made for the same purpose:

FILE | API | CHANGE
--- | --- | ---
A3DCommonReadWrite.h | A3DRWParamsExportXMLData | m_bExportMetadata, m_bExportTransformations, m_bExportColorMaterial and m_bExportProductInformationByFormat now are of type A3DBool
A3DPDFPublishSDK.h | A3DPDFCheckPDFLibInitialization | Changed reference type to pointer
A3DSDKAdvancedTools.h | A3DHLRCurveData | m_bFirstFaceIsSection and m_bSecondFaceIsSection now are of type A3DBool
A3DHLROptionsData | Declare the structure as a typedef
A3DSDKLoader.h | A3DSDKLoadLibrary | Remove default parameters
All uses of bool are replaced with A3DBool and true/false are replaced with A3D_TRUE/A3D_FALSE respectively.
A3DSDKMarkup.h | A3DMkpViewFlagsGet | Output parameter is a new struct of type A3DMkpViewFlagsData
Function has been renamed to A3DMkpViewGetFlags
A3DMkpRTFInit | pRTFData is now set as A3DVoid**
A3DMkpLinkForMarkupReferenceGet | puiLinkedItemsSize and ppLinkedItems are now set as pointers instead of references
A3DMkpLinkForAdditionalMarkupReferenceGet | puiLinkedItemsSize and pppLinkedItems are now set as pointers instead of references
A3DGlobalFontTextBoxGet | pdLength and pdHeight are now set as A3DDouble*
A3DGlobalFontTextBoxAndScaleGet | pdLength, pdHeight and pdScale are now set as A3DDouble*
A3DGlobalFontTextTessellationGet | pdCharWidth is now set as A3DDouble*
A3DSDKReadWrite.h | A3DChainedBuffer | Declare the structure as a typedef
A3DCheckFileFormat | rCadTypeWanted is now set as A3DEModellerType
A3DAsmModelFileExportToPrcStream | pcStream is now set as A3DUTF8Char**
uLength is now set as A3DUns32*
A3DSDKRepItems.h | A3DRiCurveSupportGet | ppLinkedItem is now set as A3DMiscMarkupLinkedItem**
A3DRiPlaneSupportGet | ppLinkedItem is now set as A3DMiscMarkupLinkedItem**

### Typo fixes

Two identifiers have been renamed:

- m_pSingleAttributesData => m_asSingleAttributesData
- EA3DMDDimensionSymbolSharpe => EA3DMDDimensionSymbolShape

You may change your code accordingly or run the script located at tools/he_2018_2_api_update.py to do it automatically.

### Customer Issues Addressed

For this service pack release we have fixed over 75 issues.

### Special Notes

The upcoming release will include changes to the compilation tools for Linux. For HOOPS Exchange 2019, the binaries will be compiled using CentOS 6 with devtoolset 6 (GCC 6: using the new ABI for libstdc++).

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