# STEP Reader

Standard for the Exchange of Product Data (STEP)
File Extension | STEP STP STPZ
Supported Versions | AP 203 Ed1, Ed2 - AP 214 - AP 242 Ed1, Ed2, Ed3
Platforms |
Tessellation | Supported (Computed)
B-rep | Supported
PMI | Supported

The STEP file format was created by the International Organization for Standardization (ISO). It was developed to facilitate the exchange of 3D data between different CAD systems and was first published in 1994. The format is defined in the ISO 10303-21 standard, which ensures compatibility across various CAD applications.

STEP (Standard for the Exchange of Product Data) is a widely-used ISO standard file format for representing 3D product data. It is commonly employed in industries such as manufacturing, engineering, and aerospace for exchanging 3D models between different CAD systems. The STEP format supports detailed and accurate representations of 3D objects, including geometry, topology, and product manufacturing information (PMI). This makes it ideal for applications requiring interoperability, data exchange, and long-term archiving of product information.

Our STEP reader provides full access in reading and writing to the assembly, B-rep and PMI.

STEP uses Application Protocols (AP) as versions, which can be seen as specific subsets of the STEP standard.

## How to Read from STEP

To load a STEP file, use `A3DAsmModelFileLoadFromFile()`. The `A3DParamsLoadData` structure is used to customize general loading behavior. Additionally, the `A3DRWParamsStepData` structure can be used to specifiy load options specific to STEP files. This structure is available as a field of `A3DParamsLoadData`:

    A3DAsmModelFile* pModelFile = 0;

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

    // Configuration specific to Step
    sReadParam.m_sSpecifics.m_sStep.m_bPreferProductName = A3D_TRUE;

    // ... set other A3DRWParamsLoadData fields as necessary

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

See Simple Load and Export for more about loading model files.

## Tessellation

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

## B-rep

We provide full support for the B-rep model defined in a STEP file. Evaluators are provided to allow you to directly query these geometries.

The specific surfaces supported by STEP are:

- `BEZIER_SURFACE`
- `BOUNDED_SURFACE`
- `B_SPLINE_SURFACE_WITH_KNOTS`
- `B_SPLINE_SURFACE`
- `CONICAL_SURFACE`
- `CURVE_BOUNDED_SURFACE`
- `CYLINDRICAL_SURFACE`
- `DEGENERATE_TOROIDAL_SURFACE`
- `OFFSET_SURFACE`
- `QUASI_UNIFORM_SURFACE`
- `RATIONAL_B_SPLINE_SURFACE`
- `RECTANGULAR_TRIMMED_SURFACE`
- `SPHERICAL_SURFACE`
- `SURFACE_OF_LINEAR_EXTRUSION`
- `SURFACE_OF_REVOLUTION`
- `TOROIDAL_SURFACE`
- `UNIFORM_SURFACE`

The specific curves supported by STEP are:

- `BEZIER_CURVE`
- `B_SPLINE_CURVE_WITH_KNOTS`
- `B_SPLINE_CURVE`
- `QUASI_UNIFORM_CURVE`
- `UNIFORM_CURVE`
- `CIRCLE`
- `COMPOSITE_CURVE`
- `ELLIPSE`
- `HYPERBOLA`
- `PARABOLA`
- `INTERSECTION_CURVE`
- `POLYLINE`
- `RATIONAL_B_SPLINE_CURVE`
- `SURFACE_CURVE`

## PMI

We provide support for the graphical representation of PMI which includes a link back to the referenced entity. The specific PMI supported include:

- `Datum Target`
- `Datum`
- `Dimension (angular)`
- `Dimension (curve)`
- `Dimension (diameter)`
- `Dimension (general)`
- `Dimension (linear)`
- `Dimension (ordinate)`
- `Dimension (radial)`
- `Feature control frame`
- `Label`
- `Note`
- `Roughness`
- `Weld`

Note: A `DIMENSION_SIZE_WITH_PATH` from STEP is read as a `KEA3DMDDimensionTypeLengthCurvilinear` in HOOPS Exchange, while a `DIMENSION_SIZE` with “curve length” is read as a `KEA3DMDDimensionTypeLength`.

Assembly

In addition to full support of the assembly tree our STEP reader will also honor external file references including those that point to other non-STEP files.

## Views

HOOPS Exchange provides support for the SAVED VIEWS concept in STEP. We specifically support the following SAVED VIEW concepts:

- `CAMERA_MODEL_D3_MULTI_CLIPPING`
- `CAMERA_MODEL_D3`
- `DRAUGTHING_MODEL`

## 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 through file import or API-based authoring.

Please note that the STEP file format is only available to define the 3D model in Advanced Publish.

For more information about using Advanced Publish with this file format, refer to the Advanced Publish section of the Programming Guide here.

### Other Features

Our STEP reader provides support for both user defined and validation properties defined at a part level. Also, support for compressed STEP files is included.

Our STEP reader includes a built-in healing algorithm. However, in the interest of performance, it is not enabled by default.

For shell based surface models, each body is put into a separate B-rep entity. This can be toggled using the m_bSplitSHELL_BASED_SURFACE_MODEL flag.

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Exchange in your own language, or choose a sample question below to start a conversation:

What is HOOPS Exchange?
What are the latest release notes for HOOPS Exchange?
How do I start evaluating HOOPS Exchange?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...