# Industry Foundation Classes (IFC) Reader

Industry Foundation Classes
File Extension | IFC, IFCZIP
Supported Versions | IFC2 up to 2.3.0.1, IFC4 up to 4.3
Platforms |
Tessellation | Supported
Boundary Representation (B-rep) | Supported
Product Manufacturing Information (PMI) | Partial

IFC (Industry Foundation Classes) is an open standard used to represent building and construction data, including spatial structure, elements, and associated properties.

The IFC data model provides access to data used in the building and construction industry, and so some of the concepts like Assembly, B-rep and PMI are not exactly the same concepts as they are with our other formats.

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

- .IFC
- .IFCZIP

## How to Import From IFC

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

To load an IFC file, use `A3DAsmModelFileLoadFromFile()`. The `A3DParamsLoadData` structure is used to customize the loading behavior:

    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.ifc", &sReadParam, &pModelFile);

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

## Tessellation

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

## Boundary Representation (B-rep)

The B-rep definition within IFC is based upon STEP. HOOPS Exchange supports specific IFC B-rep definitions by creating a tessellated solid.

### IFC-Specific B-rep

HOOPS Exchange can create primitives by performing simple geometric operations on 2D entities.

The list of geometric objects available in IFC include:

- IFCBOOLEANCLIPPINGRESULT
- IFCEXTRUDEDAREASOLID
- IFCOPENINGELEMENT
- IFCSURFACECURVESWEPTAREASOLID
- IFCSWEPTDISKSOLID

The list of surface types available in IFC include:

- IFCSURFACEOFLINEAREXTRUSION
- IFCSURFACEOFREVOLUTION

The list of curve types available in IFC include:

- IFCBEZIERCURVE
- IFCBSPLINECURVE
- IFCCIRCLE
- IFCCOMPOSITECURVE
- IFCELLIPSE
- IFCPOLYLINE

Please note that for performance reasons, the level of detail of the generated tessellation is limited to a low setting.

## Product Manufacturing Information (PMI)

IFC has a concept similar to PMI called Notes, which is supported by HOOPS Exchange.

The names of the Notes in IFC are:

- IFCCANNOTATIONTEXTOCCURENCE
- IFCTEXTLITERALWITHEXTENT
- IFCTEXTLITERAL

## Assembly

The full assembly tree definition is supported. This includes maintaining any hidden attributes which may be set.

Incremental load is unsupported by our IFC reader.

## Views

Views are not a concept supported by the IFC format.

## 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 IFC 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.

### Support for IFC 4 Types

By the version 2019, IFC reader supports the following B-Rep and Tessellation types:

- IFCADVANCEDBREPWITHVOIDS
- IFCADVANCEDBREP
- IFCINDEXEDPOLYCURVE (from IFC 4 Addendum 2)
- IFCPOLYGONALFACE (from IFC 4 Addendum 2)
- IFCTESSELLATEDFACESET

### IFC Relationship

IFC relationship can be read from an input file. Our support of this feature is currently limited to reading the related and relating elements, for the following relations:

- IFCRELADHERESTOELEMENT
- IFCRELAGGREGATES
- IFCRELCONNECTSPATHELEMENTS
- IFCRELCONTAINEDINSPATIALSTRUCTURE
- IFCRELFILLSELEMENT
- IFCRELSPACEBOUNDARY
- IFCRELVOIDSELEMENT
- IFCRELASSIGNSTOGROUP

See the Building Information Modeling in the programming guide for more information.

### IFCXML

BIM Data can be exported to IFCXML using A3DAsmModelFileExportToIfcXMLFile() from the A3DSDKBim.h header.

### Limitations

- The HOOPS Exchange IFC reader does not support double precision. However it is still possible to improve it by declaring a `TF_IFC_REPOSITION` environment variable for relocating models near the origin.

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...