Technical Documentation

HOOPS Exchange

This section is aimed at developers of 3D engineering applications who wish to decide whether the HOOPS Exchange data translation SDK is suitable for further investigation or technical evaluation.

It describes the features and benefits of the HOOPS Exchange libraries and focuses on areas where HOOPS Exchange has particularly unique features. Many features and functions of HOOPS Exchange are mentioned briefly or are omitted altogether. A more detailed description can be found in the HOOPS Exchange documentation found on the installation package.

What is HOOPS Exchange?

What is HOOPS Exchange?

HOOPS Exchange is a set of high-performance software libraries designed to provide software developers with the ability to read and write popular 3D formats from within their application. HOOPS Exchange reads CAD data from the most popular 3D file formats and converts that 3D data to the PRC data format, a highly compressed and open file format that is currently submitted for ISO standardization. PRC is also one of the container formats used for 3D in Adobe PDF.

HOOPS Exchange is optimized to read various kinds of 3D data, especially those coming from computer-aided design (CAD) systems. Most of the data types stored by CAD systems are supported by HOOPS Exchange:

  • Assemblies and parts
  • Trees of 3D entities (coordinate systems, wireframes, surfaces, and solids)
  • Exact geometry representation for curves and surfaces
  • Topological structures for surface and solid models
  • Tessellated (triangulated) representation
  • Markup data including Product Manufacturing Information (PMI)
  • Metadata such as name, color, layer and other non-geometric data

HOOPS Exchange also provides the capability to write PRC data to file. This PRC data file can then be inserted into a 3D PDF file. 3D PDF is currently used in 3D documentation workflows for several large industries, including aerospace, automotive, architecture and construction. The manufacturing industry has come to rely on PDF for the exchange of manufacturing documentation, distribution of service and parts manuals, and capture and submission of regulatory documentation.

Evaluating HOOPS Exchange

Evaluating HOOPS Exchange

…using the API

For simplicity it is recommended that evaluators write conversion code from HOOPS Exchange in the following step-by-step manner:

  • Parse and convert tessellated data
  • Parse and convert markup and PMI data
  • Parse and convert B-rep topology and geometry

The basic structure for parsing the in-memory PRC data is roughly the same in each case. This approach is designed with the intention that an evaluator can get started quickly by converting and viewing the tessellated data. This will then provide a solid framework for the more complex tasks that follow.

…using the HOOPS Demo Viewer

The HOOPS Demonstration Viewer (HDV) is a desktop application which demonstrates how HOOPS Visualize, HOOPS Exchange, and HOOPS Publish work together to provide a complete 3D CAD presentation. HDV is able to load any model file that is supported by HOOPS Exchange. You can then view and interact with model using HOOPS Visualize, our 3D visualization toolkit. Finally, you can use HDV to export the model to a different CAD industry format using HOOPS Exchange or HOOPS Publish. Contact Tech Soft 3D to obtain HOOPS Demo Viewer.

…by running the examples

The HOOPS Exchange installation provides several examples that are useful in aiding a quick understanding of the HOOPS Exchange API.

The following are available in the HOOPS Exchange package:

  • Viewer: demonstrates a quick way to build a prototype viewer using graphics callbacks. These callbacks are intended for prototyping use only and are not suitable for production code.
  • PRC to XML: Dump the contents of PRC in-memory to XML. A good example for studying how to hierarchically parse data from HOOPS Exchange.
  • Cascaded attributes: An example showing how to correctly maintain Miscellaneous Cascaded Attributes when parsing the topology of a file in memory.
  • B-rep adaptor: A short example demonstrating how to call A3DCopyAndAdaptBrepModel. The sample copies the input Brep models from the CAD file and geometric surfaces of type plane, cylinder and cone are convert to NURBS, faces are split and UV Curves are computed.
  • Load CAD file with multiple configurations: A short example showing how to enumerate different configurations in a CAD file and then load the default one.
  • Create PRC cube: An example of how to create a model within HOOPS Exchange. This example creates a tessellated texture cube with a simple markup and saves the data to a PRC file.
  • Create PRC B-rep with geometry: This example shows how to create a paramaterised surface representing a cylinder and attach attribute data within HOOPS Exchange. The data is saved to a PRC file.
  • Drawing viewer: This sample demonstrates how to programmatically visualize a drawing PRC file from a basic OpenGL program using HOOPS Exchange.
  • Import-Export: This sample demonstrates how to programmatically import a CAD model using HOOPS Exchange and convert it to another format.
  • Incremental load: This sample demonstrates two ways of loading a CAD file: normal loading and incremental loading (first the assembly tree, then the parts contained in the file). While this example shows two ways of doing the exact same thing, using the incremental loading technique allows a more fine-grained approach, which is especially beneficial when dealing with huge files.
  • Import multiple PRC files: This sample demonstrates how to programmatically create and read multiple PRC files from a CAD assembly using HOOPS Exchange. The input is the CAD assembly file path and a directory. The program generates multiple PRC files from this CAD assembly.
  • .NET wrapper: This sample demonstrates how to use HOOPS Exchange with a .NET wrapper by converting any CAD file to XT.
  • Sew B-rep: This sample demonstrates how to programmatically adapt B-rep models to particular needs using HOOPS Exchange.
  • Shattered mode: This sample demonstrates how to use the shattered mode using HOOPS Exchange. The program generates multiple PRC files from this CAD assembly.
  • Translate to Parasolid Parts: This sample demonstrates how to use the Parasolid bridge in HOOPS Exchange the send the converted CAD data to Parasolid and then use the Parasolid APIs to perform advanced functions on the geometry, like healing, merge, simplify, sew, or accurate.

Typical Use-Cases for HOOPS Exchange

Typical Use-Cases for HOOPS Exchange

HOOPS Exchange is a general toolkit for the reading and writing of both proprietary and open CAD data formats. Users of HOOPS Exchange may be working in a variety of different markets, from traditional mechanical design, engineering and manufacturing e.g. automotive and aerospace, through to markets in which mechanical data is used but is not seen as core to the activity of that market e.g. construction, plant design, shipbuilding and energy.

The list of use cases below is neither market-specific nor comprehensive. It focuses on the type of data and workflow that is most useful for a particular use-case. The list is provided to help the reader identify which use-case is most applicable to their needs in order to further aid understanding of HOOPS Exchange concepts.

The four use cases considered are:

  • Visualization
  • Modeling
  • Archiving
  • PDF Publishing

Visualization users are typically interested in the tessellated representation of the geometry. Topological connectivity and accurate surface definitions may not be required but markup data, graphical and non-graphical attributes are likely to be important.

Typical uses for visualization data can include product catalogs, work instruction creation, re-meshing for finite element analysis and computational fluid dynamics and inclusion in large assemblies for design review and clash detection e.g. building, ship and plant models.

While many systems can perform modeling operations on tessellated data, for the purposes of this document these are considered visualization users as they are primarily interested in tessellated data.

Modeling includes surface and solid-modelers, along with hybrid surface and solid modelers. In this case the B-rep topology and accurate surface information is important.

Tech Soft 3D has much experience integrating HOOPS Exchange with the commonly used solid modeling kernels, Parasolid from Siemens and ACIS from Dassault Systèmes, and can provide consulting services for this purpose. If you are interested in integrating HOOPS Exchange with one of these kernels please contact your Tech Soft 3D account manager.

Typical users of HOOPS Exchange for modeling include many manufacturing applications that exist downstream of mechanical design e.g. Computer-Aided Manufacturing/Machining (CAM), Computer-Aided Engineering (CAE/CFD/FEA) and Coordinated Measurement Machine (CMM) planning software.

Data archiving represents the requirement to preserve and protect an organization’s intellectual property in terms of accurate 3D model data. HOOPS Exchange offers the unique capability to store the original modeler-specific surface data in an open format that is aiming for ISO certification. This allows large manufacturing companies and PLM systems vendors to ensure digital assets are protected for the long-term and can be made available at the original accuracy for future users.

Again, the B-rep topology and accurate surface information is important, although many such systems will primarily use this information mainly in tessellated form for display.

PDF Publishing
HOOPS Exchange contains the ability to export to PRC file format. This format is the main container format used within Adobe PDF files for 3D data. HOOPS Exchange extends this capability to convert CAD data directly into these containers for use in PDF publishing.

PLM systems vendors can use HOOPS Exchange as part of a strategy to create intelligent 3D PDF documents that can be used to setup and manage advanced document-based workflows beyond a company’s firewall.

Vendors of CAD systems and downstream manufacturing and analysis systems can make use of HOOPS Exchange to enhance report generation options by including secure 3D data within the PDF file.

A 3D PDF with GD&T displayed in Acrobat Reader.

Reading 3D Files

Reading 3D Files

Reading CAD files into a HOOPS Exchange-enabled application is a very simple process. The first step is to set the options to control what data is read, and then call a single API to load the CAD file, which provides access to the original CAD data in the PRC data format.

Using HOOPS Exchange with Parasolid

HOOPS Exchange includes a Parasolid connector component. This connector uses the native Parasolid APIs to ensure that the mathematical representation of the source data is correctly matched to the expectations of the Parasolid modeler. During this process, a variety of healing and optimization algorithms are used to ensure the imported model is of the highest quality. If a developer is only interested in the B-rep data, then they can use a single, high-level API which extracts B-rep from any file and brings it into an active Parasolid session. This approach greatly reduces the time needed to integrate HOOPS Exchange into a Parasolid-based application.

Using HOOPS Exchange with other kernel modelers

HOOPS Exchange provides full access to the B-rep definition of the model, which developers can use to import their model to their geometric engine. APIs are also provided which allow developers to adapt the model to the constraints of their geometry kernel. Operations like splitting periodic surfaces and converting trimming curves between parametric and 3D space are available through this API.

HOOPS Exchange is able to export to a number of B-rep formats, including STEP, IGES, JT, and ACIS. Developers can use these file exporters to avoid needing to query into the B-rep. Instead, they simply use HOOPS Exchange to automatically convert the model to their BREP file of choice, then import that model into their system. The export can be performed on a whole model through one single high-level API, or performed on a per-part basis depending on the preferred use-case. Face and body level attributes are maintained during export.

The PRC File Format

PRC format stands for Product Representation Compact Format. PRC is a highly accurate and highly compressible format for describing 3D CAD models including assemblies and product manufacturing information (PMI). A PRC file is a sequential binary file, written in a portable way and is the core internal format of HOOPS Exchange.

The PRC format is an openly published format subject to ISO certification ISO/AWI 14739-1.

PRC supports PDF-based documentation workflows and can also be used as an independent 3D visualization file format. By using PRC, documents can be created that are interoperable with Computer Aided Manufacturing (CAM) and Computer Aided Engineering (CAE) applications. PRC supports documentation requirements for design reviews as well as distribution of detailed design documentation to supply chains. In addition, its use can help support regulatory mandates which require the use of open standards.

Specifically, PRC supports the following data forms:

  • Allows storage of large CAD files in a highly compressible form that is a fraction of the original size. The complete product structure of the parts defined by the CAD system is contained in a PRC file.
  • Can represent Product Manufacturing Information (PMI), which includes Geometric Dimensioning and Tolerancing (GD&T) and Functional Tolerancing and Annotation (FT&A).
  • Allows geometry use in CAD, CAM, and CAE applications. The geometry can be stored in either a tessellated or precise form.

PRC is currently used in 3D documentation workflows for several large industries, including aerospace, automotive, and architecture. The manufacturing industry has come to rely on PDF for the exchange of manufacturing documentation, distribution of service and parts manuals, and capture and submission of regulatory documentation.

The release of PRC to ISO has accelerated innovation around PRC, driving even broader adoption of PRC, and is helping to ensure that PRC evolves to meet the 3D documentation needs of product manufacturing and related industries.

While there are a number of other 3D file formats, PRC integrates well with document formats such as PDF and XML.

Specifically, PRC supports:

1.     Structural and Geometrical Representation
PRC has direct support for a wide variety of high order primitives that correspond to those used by CAD applications. This permits more of the original design intent of the file to be retained. Compared to other 3D file formats, PRC retains more information about the product structure and relationships defined in the original design application. Other 3D formats take a more general or display-oriented approach to product structure. This may make it harder or impossible to reconstruct aspects of the original design relationships needed to support “manufacturing from a file” or maintenance workflows.

2.     File Size
PRC captures meshes and compresses them far more efficiently than native CAD formats. Files containing both precise geometry and tessellated geometry can be significantly smaller when converted to PRC. This results in great benefits when transporting and storing the data, particularly over limited bandwidth or to wider groups of reviewers and consumers of this data. Even large 3D models can be easily shared over email.

3.     Product Manufacturing Information
PRC can represent Product Manufacturing Information (PMI), which is used to primarily communicate the full design intent to suppliers and their shop floors. Without PMI embedded in the file format, OEMs are required to send many 2D drawings to their suppliers to communicate the full design intent. The use of PRC can reduce the need to create 2D drawings from 3D models for distribution to the supply chain.

PRC In-Memory and On-Disk

In general usage the term PRC is used to mean the PRC file format.

Developers using HOOPS Exchange will encounter another usage of the term PRC to represent the data structures that exist in memory within a HOOPS Exchange process either after a file has been loaded directly or after the application has populated the structures prior to export.

HOOPS Exchange stores CAD data in modeler-specific form using in-memory PRC as the intermediate format.

These internal data structures used by HOOPS Exchange to store CAD data in a general form that maps very closely to those that define a PRC file on disk. In particular, there is no requirement to write a file to disk during the process of reading a CAD file and then parsing the resulting data into a host application.

PRC Versioning

The PRC file format contains versioning information that allows both forward and backward compatibility. This is fully implemented by HOOPS Exchange:

  • Forward compatibility: The HOOPS Exchange libraries are designed to avoid failing if they read a PRC document that conforms to future releases of the PRC standard. It does so by ignoring any information it does not understand.
  • Backward compatibility: In a major release, the HOOPS Exchange support for PRC is backward compatible. Each new version of the software can read PRC files that conform to an earlier PRC format version.

ISO Certification Process for PRC

In December 2008 Adobe Systems released the PRC format to the AIIM (http://www.aiim.org).

AIIM is an ANSI (American National Standards Institute) accredited standards development organization. AIIM also holds the Secretariat for the ISO (International Standards Organization) committee focused on information management compliance issues, TC 171. TC 171 is the ISO committee that developed the existing ISO standards relating to Adobe PDF/A and PDF/E. Accordingly, AIIM is an authority that ANSI uses to submit proposed standards to ISO.

In June 2010 Adobe transitioned future development of the PRC standard to Tech Soft 3D, who are committed to working together with AIIM to develop the PRC specification as an open ISO-certified standard. The normal time frames for the development of an ISO standard range from 24 to 36 months.

Preservation of Original Parametric Information

Preservation of Original Parametric Information

HOOPS Exchange has a full topological structure for describing manifold and non-manifold models. Local tolerances can also be retained for vertices and edges.

The PRC file format comprises the union of all geometric entities defined and used by the major mechanical CAD systems and relevant open standards e.g. STEP and IGES. Each entity is stored in the original parametric form as defined by the originating modeling system.

Therefore PRC has a significant advantage over many existing standards as there is no requirement for loss of precision or accuracy when 3D curve and surface data is represented in PRC.

Surface definitions are preserved for the following surface types:

  • Blend
  • Cone
  • Cylinder
  • Extrusion
  • Curves
  • Offset
  • Pipe
  • Plane
  • Revolution
  • Ruled
  • Sphere
  • Torus

All curves and surfaces can be fitted with NURBS curves and surfaces that are accurate to a user-specified tolerance.

Querying Modeler Specific Surfaces
Access functions are provided so that all modeler specific curves and surfaces can be obtained in their original parametric form. Additionally PRC files containing modeler-specific curve and surface definitions can be created from the appropriate functions in HOOPS Exchange.

Conversion to General Surfaces
HOOPS Exchange provides functions to convert all modeler-specific curves and surfaces to a standard general standard form i.e. NURBS. A tolerance can be specified for the conversion process so that the resultant curve or surface is accurate to within that tolerance (typically 0.001 mm).

HOOPS Exchange provides functions to measure the modeler-specific surfaces directly based on the u,v parameterization to return an accurate 3D point.


Files stored in the PRC format can be highly compressed. A compressed PRC file written by HOOPS Exchange can be typically 100 times smaller than the original proprietary CAD file and is typically three times smaller than U3D, a legacy 3D format still used in PDF.

Regular Compression
Regular compression refers to directly representing the CAD data without loss or transformation from the original CAD system. Regular compression includes:

  • Modeler-specific representations of curves and surfaces that are often significantly more compressed than a generalized NURBS representation. Preserving them leads to a file that is both smaller and contains more accurate data.
  • The PRC format has the concept of current values for certain state information. This means that this state information is not unnecessarily duplicated within the file.
  • All sections of a PRC file except header sections are individually compressed with a Flate method. The Flate method is based on public-domain deflate compression, which is a variable-length Lempel-Ziv adaptive compression method cascaded with adaptive Huffman coding. This form of compression is considered to be “lossless”. It occurs systematically whatever the actual content of the PRC file, and even if it also contains compressed parametric or tessellated geometry.

High Compression
Both parametric and tessellated geometry can be stored in a compressed form in the PRC file to a specified physical tolerance relative to the original shape. This tolerance is typically 0.001mm for parametric data and 0.01mm for tessellated data.

For NURBS data knot vectors, multiplicities, control points and weights are all stored in a compressed format. NURBS can also be approximated using simpler canonical surface forms such as planes and cylinders. For tessellated data triangle meshes, vertex coordinates, normals and textures are all compressed.

A variety of lossy techniques are used including variable coordinate basis, elimination of redundant coordinates and storage of floating point numbers in reduced numbers of bits depending on required precision.

Units, Tolerances and Tolerant Modeling

Each PRC file contains a global unit definition in the header. The unit is specified in multiples of millimeters, with 1 being one millimeter, 10 being one centimeter etc. In addition an identifier indicates if this unit is the same as the source CAD file.

Additionally, for assemblies of multiple parts, each Product Occurrence can have its own units. However for consistency and ease of use HOOPS Exchange converts all the underlying data into a single unit for the model file.

When formats are read in that do not have units or for whom units are unreliable, HOOPS Exchange defines a default unit. These formats are U3D, STL and Dassault Systèmes CGR.

There are several types of tolerances associated with HOOPS Exchange and the data in a PRC file:

  • Tolerances specifying the how tessellated data can be generated from parametric curve and surface data.
  • A tolerance specifying how NURBS data should be created from modeler-specific curves and surfaces.
  • A tolerance specifying the maximum deviation between data compressed for PRC export and the original data. In HOOPS Exchange there is API access to this value for parametric surface and curve data but not for tessellated data.
  • Tolerance values required to circumvent numerical uncertainty present in all modeling systems. In general this will comprise a value for zero e.g. less than 1e-12, infinity e.g. greater than 1e6 and equality e.g. within 1e-3. These values are used internally and are not available in the HOOPS Exchange API.

Tolerance values have no units and need to be combined with the units specified in the Model File and Product Occurrences to get physical real world values.

For example, if the Tolerance parameter of A3DGetSurfaceBaseAsNurbs is specified as 0.001 and the unit is 1000 then the real world tolerance is 1mm.

Tolerant Modeling
Some modeling systems support variable tolerances for tolerant modeling. This is to allow for the situation where sets of faces, edges or vertices need to be considered as connected even when the distance between the vertex coordinates is greater than the global tolerance for that modeling system.

This helps support cases such as translating data from a modeler with a looser tolerance to one with a tighter tolerance.

PRC supports local tolerances on faces, edge and vertices and these are preserved by HOOPS Exchange when they exist in the source CAD file.

Names and Other Strings

String-based attribute data can be added to entities using the miscellaneous attributes mechanism. HOOPS Exchange uses miscellaneous attributes to ensure all names specified within the original CAD file are correctly preserved. Additionally attributes can be used to store user data on any entity.

Character encoding for strings is in UTF8 format.

Unique Identifiers
Some CAD formats support persistent and non-persistent unique identifiers for entities.

An identifier remains persistent if it remains the same even after the CAD file has been modified, with the exception that if the entity is destroyed the identifier is also removed. An identifier is non-persistent if it could change as successive versions of the file are saved.

CATIA V5, NX, Pro/Engineer and Parasolid XT support persistent identifiers.

Binary User Data
As well as the ability to store user data using the Miscellaneous Attribute mechanism, application-defined data can be stored as a binary stream in the PRC file associated with subtypes of assemblies, representation items and markup data.

User data is stored as a bit stream along with the size of the stream for that item. This allows an application that does not have the definition for that data to still read the PRC file and even store the data.

In order to distinguish between user data from different applications in the same PRC file each block of user data is identified by a unique identifier for the authoring application. To obtain a unique identifier for your application, please contact Tech Soft 3D.

HOOPS Exchange Support for Tessellation Data

HOOPS Exchange Support for Tessellation Data

HOOPS Exchange supports reading tessellated data directly from the original CAD file, and also provides an internal tessellator so that all general and modeler-specific curves and surfaces can be converted to polygon data.

HOOPS Exchange divides tessellation data into three types

  • 3D Data, for representing 3D surfaces
  • Wire Bodies for representing 3D curves and polylines
  • Markup data for display of PMI and GD&T

For formats where both surface and corresponding tessellated data is available, a flag is available to determine whether to retrieve the tessellated data directly from the file or whether to calculate it from the surface geometry. For:

  • CATIA V5, SolidWorks, Autodesk Inventor and JT the tessellated data can be read in if present.
  • CATIA V4, NX, Pro/Engineer, Parasolid XT, IGES and STEP the tessellated data is always calculated from the surface data.
  • U3D, IFC and STL only tessellated data is read.

The tessellation process is aimed at producing low numbers of polygons for visualization purposes. A separate tessellator is used by the STL export process to create well-formed meshes such that all connecting edges meet at coincident vertices and long-thin triangles are avoided.

Tessellation data supports vertex normals and texture coordinates. Polygonal data can be provided either in a structured form so that each B-rep face and corresponding face loops are identified within the vertex arrays, or the entire body can be represented just as a single tessellated entity. Optimized triangle forms are available i.e. tristrips and trifans.

Tessellation Options

Tessellation parameters are available to control the degree of tessellation of both curves and surfaces when a file is loaded. For curves the maximum angle between linear chords can be specified.

For surfaces the maximum distance of the tessellated surface from the true surface is expressed as a ratio of the bounding box of the entity. This allows a uniform tessellation of entities irrespective of the physical size of the entity. Additionally a maximum deviation can be specified as can the minimum angle between each edge that forms a triangle.

GD&T display in Catia v5 (top) and 3D Reviewer (bottom).

Configurations, Views, and External Linking


Some CAD formats support multiple configurations of a model or assembly structure. A configuration is a specific arrangement of the model with respect to its defining hierarchy. For example parts may be in different positions, have different geometry or be omitted entirely in different configurations.

An example might be a model of a car with the steering wheel on the left side in one configuration and on the right side in a second configuration. A configuration is separate to a view.

HOOPS Exchange supports configurations for CATIA V4, I-deas and SolidWorks. In Pro/Engineer configurations are known as family tables and the initial/generic version is supported.


In HOOPS Exchange the term view is used specifically to refer to a particular representation of the 3D scene, including the camera settings, entity visibilities, colors, and positions.

For example, a view could be an ‘exploded view’ where geometric entities are displayed in different positions and markup labels are used to describe instructions relating to how to assemble the model. A series of such views could comprise a work instruction.

External Linking

On Microsoft Windows, HOOPS Exchange uses an explicit external linking mechanism to expose API calls to a host application.

Explicit linking requires the application to specifically load and unload the HOOPS Exchange DLL and to obtain the address of each function so that it can then be called via a function pointer.

HOOPS Exchange provides a full set of macros to manage this process and to ensure that application code that calls Exchange functions can look like normal code that uses implicit linking.

External linking offers the application the chance to exit gracefully if for some reason the DLLs are not present. It also allows DLLS in one binary format to be used successfully with different binary formats – for example DLLs built with Visual Studio 2008 can be used successfully with Visual Studio 2010.

PMI, GD&T and Markup

PMI, GD&T, and Markup

Product Manufacturing Information and Geometric Dimensioning and Tolerancing is read by HOOPS Exchange and stored in the Markup classes. As well as providing a complete graphical representation, for semantic PMI HOOPS Exchange maintains the logical hierarchy of the PMI as represented in the CAD system.

PMI markups are associated with assemblies, sub-assemblies and parts. If relevant, PMI is associated with individual topology so that feature control frames and datum references can be displayed correctly. Leader lines attach markup items to geometry. HOOPS Exchange works to provide an accurate tessellation that looks exactly as it does in the originating CAD system.

CATIA V5 PMI example with links to model tree.

HOOPS Exchange provides a complete representation of the PMI associated with a model. PMI information returned by HOOPS Exchange includes:

  • Text
  • Dimensions
  • Arrows
  • Balloons
  • Datum
  • Fasteners
  • GD&T
  • Measurement Points
  • Roughness
  • Welding

Extensive graphical information is given including color, linewidth, linestyle, face pattern, font, symbol, transformation matrix and display types e.g. billboarding, in the camera view plane and fixed size.

The Adobe MyriadCAD OpenType font is provided with HOOPS Exchange to ensure standard GD&T symbols are available. Licensees of HOOPS Visualize may also use the Tech Soft 3D TrueType font (ts3d.ttf).

Graphical Attributes

HOOPS Exchange reads and store a variety of graphical attributes from the original CAD files and hierarchical scene graphs with defined attribute inheritance can be constructed.

Graphical entities include styles, materials, transparency, images, texture pipelines for multi-texturing and advanced blending, line patterns, solid, hatched, dotted and vector fill patterns, ambient, directional, point and spot light definitions and perspective and orthographic cameras.

Parsing a PRC File

Parsing a PRC File

Object Model

While internally HOOPS Exchange is written in C++ and makes use of class inheritance, to enhance compatibility with other programming languages the API is C-based. The hierarchical object model is retained in the data structures provided through the API.

The main data types are termed ‘PRC Entities’ and these represent classes that are hidden from the HOOPS Exchange Programmer. Data is obtained from and added to PRC entities through corresponding C structures, and there is one struct for each PRC entity.

System Callbacks

A variety of callbacks are available to customize memory allocation and deallocation, progress indication and error reporting.

Predefined functions are available to allocate and deallocate memory using the HOOPS Exchange memory manager. Callbacks are available to replace these with an application specific memory manager if desired.

While all necessary functions return a status to indicate success or failure, further messages, warnings and errors can be trapped and handled via the custom report callbacks.

Error Handling

A wide range of return codes are defined for specific conditions including bad input data, geometry problems e.g. failure to convert to NURBS, failure to convert to canonicals, inappropriate tolerances and incorrect parameterization, topology problems e.g. incorrect loops, incorrect co-edges, tessellation problems, incorrect markup data etc.

Out of memory conditions are also reported in the return code of the function that caused the condition.

Structure of Parsing Code

Ideally the code that processes PRC data is structured to reflect the hierarchy of the PRC format, with one function to process or create each of the PRC entities. Additionally, helper functions may be useful to perform repeated tasks, such as processing or creating attribute data that can apply to a broad category of PRC entities.

The PRC hierarchy is similar whether the application is primarily interested in visualization data, markup and PMI, parametric geometry and topology, or any combination of these.

When integrating HOOPS Exchange an evaluator may initially focus on tessellation data, then hooking up attribute and markup data, and finally B-rep topology and geometry. This step by step approach allows a developer to get the parsing structure correct and quickly visualize the results before tackling the more complex areas of markup and B-rep.

PDF Publishing - 3D PDF and PRC

PDF Publishing – 3D PDF and PRC

PRC is the main 3D container format that is supported within Adobe PDF. Adobe also supports U3D.

U3D is a polygonal format defined by the 3D Industry Forum, which included Intel, Boeing and Adobe. Adobe original chose U3D as the 3D container format for PDF. However U3D does not support accurate surface definitions, so Adobe subsequently added PRC as an alternate format for representing 3D data within PDF. Adobe continues to support both formats within PDF and Acrobat although U3D is generally recognized as a legacy format.

HOOPS Exchange can read U3D and PRC and write PRC. As previously described in this document, the internal data structures used by HOOPS Exchange closely match the PRC data specification.

The main advantages of using PRC for publishing PDF documents are:

  • PRC is in the process of being ISO certified
  • PRC stores curve and surface data with no loss of accuracy
  • PRC supports both parametric and polygonal geometry
  • PRC is highly compressed – typically file sizes are three times smaller than the corresponding U3D file.

The PRC export capability is suitable for use by companies who already have a PDF generation capability.

HOOPS Publish is a separate toolkit that works with HOOPS Exchange to generate rich 3D PDF documentation from the PRC data generated by HOOPS Exchange.

Complex GD&T display in 3D Reviewer from a CATIA V5 model.

Loading posts...