The HOOPS Exchange HIO component (HIO Exchange) supports both import and export capabilities. For import, it utilizes the capabilities of HOOPS Exchange to access assembly, tessellation, and PMI information from many MCAD formats and bring it into the HOOPS/3DGS scene-graph. A full list of the supported HOOPS Exchange formats is detailed here. Before reviewing the specifics of this component, developers should become familiar with the general HIO architecture and capabilties, covered in Section 4.0 of the HOOPS/MVO Programming Guide.
For export, the component supports exporting the HOOPS/3DGS scene graph information to IGES, STEP, Parasolid, and STL. (The scene-graph can also be exported to the PRC format, which is the native 3D representation used within PDF. Exporting to a 3D PDF requires a license to the HOOPS Publish product.)
The HIO Exchange component is delivered in the form of a .hio file, which gets dynamically loaded by the HOOPS/MVO file import logic. To ensure your application can access the hio_exchange component, perform the following:
Windows:
Linux:
Additionally, ensure the HOOPS Exchange DLLs are in your environment path.
During start-up, when HOOPS/MVO finds the HIO Exchange component and HOOPS Exchange DLLs, it will perform the following steps:
Once the hio_exchange component is successfully loaded, your application will be able to import any of the files supported by HOOPS Exchange. To utilize the extensive HOOPS Exchange API services, you must compile against HOOPS Exchange directly.
Reading a file involves setting up the HInputHandlerOptions structure with a valid HOOPS Exchange license key and HBaseView object, and then loading the model into the desired HOOPS Visualize scene-graph segment by calling HBaseModel::Read. The following shows how you would import a CATIA file:
Several of the CAD file formats supported by HOOPS Exchange have a concept of multiple model 'configurations' which can be stored in the file. (Each configuration may have a list of 'views', described down below in Section 2.1) HOOPS Exchange is able to access the list of configurations at load time, and this info can in turn be accessed in HIO Exchange by defining a load-time callback using HInputHandlerOptions::m_pPRCMultiModelSelectionCallback. This method will provide your callback with the number of configurations, and let you pass back the configuration that you've selected for loading. (You would typically provide the list of configurations in a GUI pulldown dialog, and use the configuration selected by the user as the 'out_config_selection').
The callback is specified in the HInputHandlerOptions used to control file input:
If HInputHandlerOptions::m_bPRCImportHiddenObjects is set to true, representation items marked as 'hidden' will be imported but have their visibility turned off. If set to false, representation items marked as hidden will be skipped and not imported
You can write files in formats supported by HOOPS 3D Exchange from your HOOPS 3DF-based application using code similar to this:
HOOPS Exchange first maps all incoming CAD data to the neutral 'PRC' format, which in turn is then mapped to the HOOPS/3DGS scene-graph. Here are some key notes on supported graphical primitives and attributes:
All analytics (Polycylinders, NURBS Surfaces, Spheres, Ellipses, Circles) will be turned into shells via ::Compute_Shell_From_Geometry. Furthermore, all curves will be turned into polylines.
It is important to note that the hio_exchange component ignores b-rep data and asks HOOPS Exchange to provide all data in tesselated form.
A view consists of a group of information in the original CAD file, and displays a particular state of the model. This typically includes a camera, set of cutting planes, lights, PMI, background color, and 'linked items' which are references to model objects along with specific visibility and position information.
The HIO_Exchange module provides support for querying the view information from the PRC data, and mapping it to HOOPS/MVO MarkupManager layers. Each view is associated with a markup 'layer'. Refer to the Markup Manager Programming Guide for more details on how to query the list of MarkupManager 'layers' and open (activate) a layer.
The view information stored in the MarkupManager layers should not be edited, as it is quite specific to the particular CAD-View. If you wish to have additional markups, they should be added to newly created MarkupManager layers.
It is important for developers to be able to map between objects within their HOOPS/3DGS database and the corresponding entities within HOOPS Exchange. Recall that HOOPS Exchange maps CAD data to the PRC data format.
The HIOConnector supports this data mapping functionality. When you call HIOConnector::GetKernelEntity and pass a HOOPS key, the HIOConnector will return a pointer to the corresponding PRC entity. Similarly, if you provide a pointer to a PRC entity when calling HIOConnector::GetHoopsEntity, the HIOConnector will return the key(s) of object(s) within the HOOPS/3DGS database which are used to represent the PRC entity.
Here is some sample code which sets up and utilizes the HIOConnector capabilities. Note that we create a new HIOConnector object and pass its handle into the HInputHandlerOptions class. After input is complete, the HIOConnector class will encapsulate the mapping information.
Once a PRC entity is obtained via the HIOConnector::GetKernelEntity method, we can use various HOOPS Exchange methods to further query the PRC data, including traversing up the PRC topology:
For Release 19.14, the HOOPS Exchange HIO component is supported under Windows 32-bit/64-bit for Microsoft Visual Studio 2008/2010, and 32-bit/64-bit Linux (Ubuntu 10.04 LTS gcc/g++ 4.4.3).
For Release 19.1, the HOOPS Exchange HIO component is supported under Windows 32-bit/64-bit for Microsoft Visual Studio 2008 and 2010.
For Release 19.34, the HOOPS Exchange HIO component requires HOOPS Exchange 6.0.
For Release 19.28, the HOOPS Exchange HIO component requires HOOPS Exchange 5.3.
For Release 19.16, the HOOPS Exchange HIO component supports HOOPS Exchange 5.0.
For Release 19.14, the HOOPS Exchange HIO component supports HOOPS Exchange 4.2.
For Release 19.1, the HOOPS Exchange HIO component supports HOOPS Exchange 4.1.