:orphan:

##########
PRC Reader
##########

.. rst-class:: format-title-block

+----------------------------------------------------------------------+
|                        **PRC**                                       |
+-----------------------------------------+----------------------------+
| **File Extension**                      | PRC                        |
+-----------------------------------------+----------------------------+
| **Supported Versions**                  | All                        |
+-----------------------------------------+----------------------------+
| **Platforms**                           | |wy| |ly| |my| |ay| |iy|   | 
+-----------------------------------------+----------------------------+
| :ref:`prc_rd_tessellation`              | |t_green| Supported        | 
+-----------------------------------------+----------------------------+
| :ref:`prc_rd_brep`                      | |c_green| Supported        | 
+-----------------------------------------+----------------------------+
| :ref:`prc_rd_pmi`                       | |c_green| Supported        | 
+-----------------------------------------+----------------------------+

PRC is the internal format of HOOPS Exchange. 
As such it supports all the different concepts supported by the other formats. 

A file does not need to have a particular extension to be read correctly by HOOPS Exchange. 
However, the file extension of PRC files that you can expect to be loaded by HOOPS Exchange is:

* `.PRC`

How to Import From PRC 
======================

Reading ``PRC`` files follows the same pattern as other formats: configure load parameters, then call the standard load function.

To load a PRC file, use :cpp:func:`A3DAsmModelFileLoadFromFile`.
The :cpp:struct:`A3DParamsLoadData` structure is used to customize the loading behavior:

.. code-block:: c

   A3DAsmModelFile* pModelFile = 0;

   A3DRWParamsLoadData sReadParam = A3D_MAKE_DATA(A3DRWParamsLoadData);
   sReadParam.m_sGeneral.m_bReadSolids = true;

   // ... set other A3DRWParamsLoadData fields as necessary

   A3DAsmModelFileLoadFromFile("path/to/file.prc", &sReadParam, &pModelFile);

See :doc:`/guide/basic_operations/load_model` for more about loading model files.

.. _prc_rd_tessellation: 

Tessellation
============

PRC has full support for Visualization data including textures.

.. _prc_rd_brep: 

B-rep
=====

PRC supports all the geometries that are imported by its readers.

.. _prc_rd_pmi: 

PMI
===

Full support for both semantic and visual PMI is included.

Assembly
========

The full assembly tree definition is supported by PRC. 
Datum planes and construction geometry is also supported and accessed through the assembly tree.
Incremental load is unsupported by our PRC reader.

Views
=====

Full support for Views is included.

Miscellaneous
=============

Advanced Publish
****************

Advanced Publish is an authoring SDK within HOOPS Exchange that enables creation and export of rich engineering data using the PRC data model. 
It supports generating output for several supported formats, such as PRC, through file import or API-based authoring.

For more information about using Advanced Publish with this file format, refer to the Advanced Publish section of the Programming Guide :doc:`here </guide/publish/overview>`.

PRC-specific Import Options
***************************

At export time, you can request that user options and the B-rep definition are removed from the PRC stream. 
This allows developers to remove what is potentially sensitive information from the PRC data.
For more regarding exporting to PRC, please see the :doc:`prc_writer`.