============================
HOOPS/HIO Technical Overview
============================

The HOOPS/HIO Plug-In Architecture, built on HOOPS/MVO, lets you seamlessly integrate with a variety of third party libraries.  During start-up, HOOPS/MVO uses the HIO components to dynamically load third party libraries and registers information with the file I/O manager. Naturally, this modular environment releases your application from being tightly coupled with any specific third party libraries.

Within HOOPS, an *.hio* file encapsulates an HIO component. To use an HIO component, simply place the associated *.hio* files into your application's working directory. During start-up, HOOPS/MVO looks for *.hio* files in your application's path. When the HIO component is loaded, it locates the third party libraries associated with it, links them to HOOPS, creates the necessary input/output handlers and registers them to the appropriate file extensions in the HOOPS/MVO HIOManager.  Note that the location of the third party libraries should be within the application's path.

The HOOPS/HIO components can be found in the *bin/<platform>/hio_plugins* directory of your installation of HOOPS Visualize. Within the *hio_plugins* directory, there are directories representing a variety of third party integrations and an *.hio* file associated with each of them.  Because of the the modular and dynamic nature of the HOOPS/HIO plug-in architecture, you can have a number of different configurations for your application without recompiling.  This can be especially useful if you have different versions of your application.

.. image:: images/HIOPluginArchitecture.jpg

*This diagram illustrates the HIO plug-in architecture.*

The HIO plug-in architecture does have limitations. Functionality of the HIO components usually includes the basic importation of data into the Visualize database. In some cases, export is available as well. Note that each HIO component was built against a specific version of a third party library. Thus, it can only run with that version.  For more information about a specific HIO integration, please see the programming guides listed below.  These guides also include a detailed discussion on how developers who are interested in tighter integration with a third party toolkit can proceed.

Please see the following documents related to specific integrations:

:doc:`RealDWG </prog_guide/hio/HIO_RealDWGIntegration>`

.. only:: not spatial

	:doc:`HOOPS Exchange </prog_guide/hio/HIO_Exchange>`
	
	:doc:`HOOPS Publish </prog_guide/hio/HIO_Publish>`

:doc:`DGNDirect </prog_guide/hio/HIO_DGNIntegration>`

:doc:`SketchUp </prog_guide/hio/HIO_SketchUpIntegration>`
