ODA IFC SDK Developer's Guide > Get Started with IFC SDK > ODA IFC SDK Overview
IFC SDK Overview

What is IFC?

ODA IFC SDK implements functionality for working with the Industry Foundation Classes (IFC) open data format, which is widely used in the building information modeling and facility management industries. The IFC format is represented with an object-oriented data schema model that consists of a set of class definitions for common types of objects:

  • Construction and building elements.
  • Shapes.
  • Spaces.
  • Different object properties.

These class definitions can be used by any software for different projects related to construction or facility management.

The IFC concept provides easy sharing of data at all stages of a project's life cycle and for all asset processes. IFC can provide information exchange between any type of application used for design, construction, development and maintenance activities.

The IFC data formats are:

  • IFC-SPF — An .ifc file that contains data in the STEP physical file structure format. This format is described in the ISO10303-21 standard. The IFC specification considers this file format as the default for exchange operations.
  • IFC-XML — An .ifc file that contains data represented as an XML document. This format is described in the ISO10303-28 standard. An IFC XML document file is significantly (several times) larger than a STEP physical file.
  • IFC-ZIP — An .ifc file that contains compressed STEP physical or XML document data. The compression rate differs for .ifc (60-80%) and .ifcXML (90-95%) files.

IFC SDK implements reading and writing operations for IFC-SPF files (files with an *.ifc extension). An IFC-SPF file consists of an IFC model as described below.

Any object in an IFC model is defined with the EXPRESS SCHEMA specification and stored in a STEP physical file.

The typical structure of a STEP physical file is illustrated below.

The header section contains the .ifc file description, name, and schema. The data section contains entity data encoded according to the express schema definition.

Entity instance data records are stored in text format (one line for each entity instance record) and consists of the following fields:

  • #HANDLE — An entity's handle represented with a positive integer value in the range 0 to 263. The handle is unique within the .ifc file and identifies the entity instance. It also can be used for a reference to an entity instance.
  • ENTITY_NAME — A name of an entity data type.
  • attrValue1, ..., attrValueN — A set of an entity instance's attribute values. The set of entity attributes and their order are defined by the EXPRESS SCHEMA. Attribute values follow after the ENTITY_NAME within parentheses.

You can find an example of .ifc file content in the ExIfcModelFiller sample application documentation.

IFC is an open standard format and is developed and maintained by buildingSMART International.

The IFC data format is described in the international standard ISO 16739.

IFC Support by ODA

ODA IFC SDK supports the idea of an abstract model containing a common data schema that determines storage and processing conditions for any suitable information about construction or facility assets. This provides:

  • Storage of useful and actual information.
  • Easy data exchange between different software.

IFC SDK public API contains a set of schema-dependent C++ classes automatically generated from files of supported IFC Express Schema formats. These classes support specifications of an IFC model's objects (IFC2x3 and IFC4 versions) with the Express Schema descriptive language.

Another part of the IFC SDK API provides the following functionality:

  • Data access features (implementation of the Data Access Standard Interface, DAI):
    • A set of standard classes that incorporate working with IFC 2x3 and IFC 2x4 entity types including the ability to access all property data.
    • Iterators for sequential access to the model's objects.
    • Creating new entities and setting their attributes for the active schema.
  • A new module for working with IFC geometry, including Facet and B-Rep modelers.
  • Visualization features:
    • IFC model visualization on all desktop and mobile platforms supported by ODA (using ODA Visualize SDK).
    • Full support of navigation, view modes, selection and property queries.
    • Interference detection in IFC models.
    • Level of detail (LOD) support provides the best performance.
    • Detailed examination of an IFC model's hidden parts with real-time cutting planes.
    • Fast visualization via the web (using ODA Web SDK in any browser that supports WebGL technology).
  • Exchange features:
    • Converting geometry of an .ifc file to a .dwg drawing database.
  • Publishing features:
    • Publishing .ifc file content to a standard 2D PDF document (using ODA Publish SDK).
    • Publishing .ifc file content to an interactive, feature-rich 3D PDF document (using ODA Publish SDK).

IFC SDK Modules

IFC SDK includes several modules that interact with other ODA SDKs and applications:

  • IfcCore — A module that implements base IFC-related functionality. This module contains:
    • Classes that draw IFC models using ODA Kernel SDK functionality (such as Gi and Gs classes, database protocol extensions, host application services).
    • Abstract classes that implement IFC entity functionality and working with IFC geometry.
    • Interoperable entities that are common for different schemas (IfcCartesianPoint, IfcDirection classes).

    Source Code Location: Ifc.

  • Ifc2x3 — A module that implements operations with IFC entities represented in the 2x3 version format. This module contains:
    • Predefined EXPRESS SCHEMA definitions for the 2x3 version format.
    • Sets of 2x3 version format entities for working both in early binding and late binding styles.

    Source Code Location: Ifc.

  • Ifc4 — A module that implements operations with IFC entities represented in the 4 version format. This module contains:
    • Predefined EXPRESS SCHEMAs definitions for the 4 version format.
    • Sets of 4 version format entities for working both in early binding and late binding styles.

    Source Code Location: Ifc.

  • sdai — An extension module that implements the Data Access Interface (DAI) for accessing and working with IFC data. This module contains:
    • STEP physical file read functionality.
    • A STEP physical file's header section handling.
    • Ability to work with schema definitions.
    • Ability to get access to entity attributes.

    Source Code Location: Ifc.

  • Ifc2Dwg — An extension module that is used to export the contents of an .ifc file to a drawing database. To use this extension module, the Drawings SDK archive of the appropriate version is needed. To access Ifc2Dwg geometry conversion, choose File —> Open in the OdaMfcApp example application.

    Source Code Location: Ifc/Exports/Ifc2Dwg.

  • Ifc2Visualzie — An example application that implements importing from an .ifc file to a Visualize SDK database for further rendering. This example plug-in is included in the Visualize SDK archive.

    Source Code Location: Visualize/Examples/Ifc2Visualize.

  • IfcGeom — A module that provides an interface for working with IFC geometry objects. It implements building a geometrical representation of an IFC model. This module is a realization of the IFC ModelerGeometry Abstract Level (represented with the OdIfcModelerGeometry abstract class).

    Source Code Location: Ifc.

  • IfcFacetModeler — An extension module that implements working with Facet Modeler geometry and implements low-level geometry build operations. This module is a realization of the IFC ModelerGeometry Abstract Level (represented with the OdIfcModelerGeometry abstract class).

    Source Code Location: Ifc.

  • Example Applications — A set of sample applications that illustrate different IFC functionality features.

    Source Code Location: Ifc/Examples.

    For additional information about examples, see Usage of IFC SDK Sample Applications.

IFC SDK depends on Kernel SDK. To use IFC SDK for creating custom applications, you need to download and unpack the Kernel SDK archive.

See Also

Supported Platforms

Get Started with IFC SDK

Copyright © 2002 – 2020. Open Design Alliance. All rights reserved.