:orphan:

##############################
Siemens PLM Software NX Reader
##############################

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

+----------------------------------------------------------------------------------------------+
|                        **Siemens PLM Software NX**                                           |
+-----------------------------------------+----------------------------------------------------+
| **File Extension**                      | PRT                                                |
+-----------------------------------------+----------------------------------------------------+
| **Supported Versions**                  | UG11 to UG18, UG NX, NX5 to NX12, NX1847 to NX2512 |
+-----------------------------------------+----------------------------------------------------+
| **Platforms**                           | |wy| |ly| |my| |an| |iy|                           | 
+-----------------------------------------+----------------------------------------------------+
| :ref:`plm_nx_tessellation`              | |c_green| Supported                                | 
+-----------------------------------------+----------------------------------------------------+
| :ref:`plm_nx_brep`                      | |c_green| Supported                                | 
+-----------------------------------------+----------------------------------------------------+
| :ref:`plm_nx_pmi`                       | |c_green| Supported                                | 
+-----------------------------------------+----------------------------------------------------+

The Siemens PLM Software NX files are native CAD formats used by Siemens NX to store complete part 
and assembly design data for mechanical engineering.

The HOOPS Exchange NX Reader provides full access to the Assembly, B-rep, View and PMI data stored 
within a particular NX file. 

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

* `.PRT`
 
How to Import From NX - Unigraphics 
===================================

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

To load a PLM NX 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.prt", &sReadParam, &pModelFile);

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

.. _plm_nx_tessellation: 

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

The visualization data for this format is generated by the HOOPS Exchange tessellation engine.

.. _plm_nx_brep: 

Boundary Representation (B-rep)
===============================

Siemens PLM Software NX uses Parasolid as its core geometry engine. 
As a result the reading of the B-rep in our NX reader is based on our Parasolid reader, 
which allows you to query the full topological and geometric model defined in a Parasolid file. 

HOOPS Exchange provides evaluators which allow you to direct query all the geometry types available in Parasolid. 

You can additionally ask HOOPS Exchange to approximate any specific geometry and provide it in a standard NURBS form.

Surface types available in NX include:

* Blend surface
* B-spline surface
* Cone
* Cylinder
* Offset surface
* Plane
* Sphere
* Revolution surface
* Swept surface
* Torus

Curve types available in NX include:

* B-spline
* Circle
* Ellipse
* Intersection curve
* Line
* UV curve

.. _plm_nx_pmi: 

Product Manufacturing Information (PMI)
=======================================

The PMI definition in NX is extensive and HOOPS Exchange provides full support for it. 

Supported PMI types include:

* 3D dimensions
* Feature control frame (single)
* Feature control frame (composite)
* Note
* Note (datum)
* Note (datum targets)
* Note (feature control frames)
* Security information
* Surface finish symbol
* Table
* Tolerance feature instance
* User-defined PMI
* Weld symbol

Assembly
========

HOOPS Exchange's NX reader supports incremental load. 
Datum planes and construction geometry are also supported and accessed through the assembly tree.

Views
=====

There are two types of views supported in NX:

* *Views:* A view plane in addition to visibilities that are applied to the PMI
* *Cameras:* A full camera definition, visibilities applied to PMI, visibilities and transformations that can be applied to components in the assembly and the optional definition of section planes.

Both types of views are fully supported by HOOPS Exchange.

Format-Specific Notes
=====================

Suppressed entities are supported. 
They are treated as hidden entities by the Exchange API.

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

Entities can be filtered by reference set, layer, and category; all of which are supported by our NX reader.

Additionally, support is provided for:

* User-defined coordinate systems
* Density. Stored in material properties. Densities are only set for models (parts) through Parasolid or material assignment in NX. A density value of -1 means that no density was set in the CAD file.
* External references. Stored in product information (for each occurrence corresponding to a file).
* Persistent and non-persistent IDs. Useful when you need to map data to other CAD systems. HOOPS Exchange supports this feature at the edge, face, and body level.
* User attributes attached at all levels of the model (assemblies, parts, instances and faces).
* Wave geometry linking / promoted bodies.
* Entity names attached at all levels (assemblies, parts, instances, coordinate axes, etc.).

HOOPS Exchange does not support NX arrangements functionality or the reading of 2D .PRT files.
