first steps and tools

Folder hello wall small mini example (tool distributed with source code) to write a simple ifc-file, the building elements within this example are driven by basic geometric parameters and the ifc-export can be customized according to some options. Folder string encoding Open source tool and code that supports the encoding and the decoding of any character to and from the IFC step physical file structure Folder IFC GUID Open source tool and code that supports the encoding and the decoding of any character to and from the IFC step physical file structure

Development tools

Folder IFC Toolboxes — by Thomas Liebich — last modified Jan 27, 2009 01:52 PM List of tools that supports the development of IFC compliant applications Folder IFC open source — by Thomas Liebich — last modified Aug 20, 2009 07:18 PM A collection of available open resources to support software development for IFC based interoperability.

Hello wall

The HelloWall is a small application build to export valid ifc files, following the already agreed view definition "Coordination View" and a proposed view definition "Presentation View". The latest version includes the export of property sets (as part of the "Coordination View" and "Presentation View"), and the export of base quantities as part of the proposed "Quantity Take-off Addon View". The export can be configured by a range of shape parameters and options. The source code is provided so that developers can follow the algorithms used.

The sample application has been developed by Peter Bonsma, TNO Bouw en Onderground with help by Thomas Liebich and Nick Nisbet, AEC3 and has been dedicated to the MSG development work. Future updates may be made available directly at the TNO BOUW website, focusing on IFC development, http://www.ifcbrowser.com/

Example 1 - export of the basic IFC structure with a wall, a wall opening and an included window, and export of property sets and base quantities see the page for an in-depths explanation of the IFC elements used see the page for download of the source, written and made available for C++

string encoding

The IFC exchange format "STEP physical file" only allows characters represented by decimal value 32 to 126 from the code table in ISO 8859-1. Any other character, like some Western characters, like the German "Umlaut", Greek or Cyrillic letters, or Asian characters, has to be encoded before being exchanged as part of a string value.

The rules for decoding and encoding are defined in ISO10303-21: "Industrial automation systems and integration — Product data representation and exchange — Part 21: Implementation methods: Clear text encoding of the exchange structure". A short summary and guideline is included in the IFC Implementation Guide (section "Encoding in STEP physical file structure", available here >>>.

Example: The following encodings define the character "Upper A umlaut" Ä - the hexadecimal character code is xC4 (decimal 196)

'\S\D' character code of D = x44 (decimal 68) added to x80 (128) is x44 + x80 (68+128) = xC4 (196); since Ä is defined in ISO 8859-1 it is the default code page and no \P encoding is required. '\PA\S\D' same as above, but the \PA\ directive at the begin of the string explicitly defines that the value of xC4 (196) is taken from ISO 8859-1 '\X\C4' character code xC4 as 8-bit character code found in ISO 10646 (first 255 characters - also referred to as "row 0") '\X2\00C4\X0\' character code xC4 as 16-bit character x00C4 in ISO 10646 (Unicode)

To support the encoding and decoding of strings, the team from Bauhaus University Weimar and Hochtief, developers of the OPENIFCTOOLS, has extracted code from its IFC Open Java Toolbox (btw. now also available as .NET) and made available as a standalone tool with accompanying source code. It is, in the same way as the whole OPENIFCTOOLS, under the license expressed at http://creativecommons.org/licenses/by-nc-sa/3.0.

The package made available includes:

OPENIFCTOOLS_StringConverter.jar - the binary, under the Windows environment it can be started by double-click, if .jar is associated with java.exe OPENIFCTOOLS_StringConverter_src.jar - contains the Source Code OPENIFCTOOLS_StringConverter_doc.zip - contains the javadoc documentation

download the package here >>> when downloading you agree to the license expressed at http://creativecommons.org/licenses/by-nc-sa/3.0 download the whole IFC Open Java Toolbox at http://www.openifctools.com Note: buildingSMART provided the content on behalf of its developers on an as-is basis and is not responsible for its content.

example_encoding_russian The picture shows a screen shot of the demo application

The encoding uses an example from Russian language. The encoding uses ISO-8859-5 (table including Cyrillic) example encoding japanese disclaimer: the Japanese text had been copied from a website not knowing its meaning. So hopefully it makes any sense and is not offending in any way

The encoding uses an example from Japanese language. The encoding uses 2-byte characters based on ISO10646 example encoding korean disclaimer: the Korean text had been copied from a website not knowing its meaning. So hopefully it makes any sense and is not offending in any way

The encoding uses an example from Korean language. The encoding uses 2-byte characters based on ISO10646 Remarks: The functionality is encapsulated in the class stringconverter.StringConverter.java, the demo application is included in demo.StringEncodingDemo.java.

IFC GUID Summary

Introduction

The IFC specification uses an unique identifier for object instances that follows the universal unique identifier standard UUID with its implementation as a globally unique identifier GUID. The generated GUID is compressed for exchange purpose following a published compression function. The compressed GUID is called "IFC-GUID" here.

Background Information

A Globally Unique Identifier (GUID) or Universal Unique Identifier (UUID) (as defined by ISO/IEC 11578:1996 Information technology -- Open Systems Interconnection -- Remote Procedure Call (RPC) specification and more recently in ITU-T Rec. X.667 | ISO/IEC 9834-8:2005) provides a way of uniquely identifying an object. GUID generation algorithms have been developed for most software development framework environments and methods exist within these frameworks for persistence.

For file-based data exchange, a methodology was devised to compress these GUIDs to conserve space when physically exchanging IFC models through various media. Given that each IFC object instance required a unique identifier containing a 128-bit number, a base 64 character encoding was devised as shown below:

IFC-GUID Base-64 character encoding mapping:

0 1 2 3 4 5 6 0123456789012345678901234567890123456789012345678901234567890123 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$ The resulting IFC-GUID is a fixed 22 character length string. Software implementations will need to use an algorithm that converts standard GUIDs to and from this encoding for compliance with the IFC specifications.

Note The compression of the GUID for IFC file based exchange had been introduced back in 1996 for version IFC1.0. At that time data files were still stored on floppy disks with 1,44 MB capacity where every byte counted. Today compression of a GUID would be considered unnecessary but due to backward compatibility issues it is still enforced.

IFC-GUID sample code and applets

Several algorithms in various languages have been made available to the IFC development community by their respective authors to use "as-is" and subject to the disclaimer terms cited below. No guarantees of suitability are provided by the IAI and all copyrights remain with their respective authors:

C sample code based on the Microsoft CoCreateGuid() method written by Peter Muigg and Janos Maros can be downloaded here >>> IfcGuid-C Sample Code Update to C++ by Janos Maros >>> IfcGuid-C++ Sample Code

Java sample code written by Jan Tulke and Eike Tauscher can be downloaded here >>> IfcGuid-Java Sample Code Java applet written by Jan Tulke and Eike Tauscher can be downloaded here >>> IfcGuid-Java Applet

C# update to previous code by Jeremy Tammik conversion by Hakon Clausen [fixed by Tim Chipman] here >>> IfcGuid-C# Sample Code See the informative thread related to the development of this code here >>> http://thebuildingcoder.typepad.com/blog/2010/06/ifc-guid-algorithm-in-c.html

IFC Toolboxes Summary

Here is a listing of tools that supports the development of IFC compliant applications. Tools are listed by category and alphabetically by company name within each category. Available categories are:

IFC toolboxes (generic toolbox) IFC toolboxes (high level API) IFC model servers IFC geometry viewers IFC file browsers IFC file validators IFC schema development tools other IFC related tools (converter, etc.)

IFC open source and freeware summary

Various organizations collaborates with buildingSMART to support the idea of an open standard to share building information models - IFC. In order to ease the developments some have opted to provide open source developments or other freely available resources to the community. The following page lists those developments and wants to acknowledge these contributions.

Open source BIMserver based on IFC The Building Information Model server (short: BIMserver) enables you to centralize the information of a construction (or other building related) project. The core is based on the open standard IFC and therefore knows how to handle IFC files. The bimserver team is supported by TNO and TU Eindhoven, both from the Netherlands.

read more about BIMserver

Open source IFC Tools for processing, visualization and 4D Open source development using latest Java technology to include read/write IFC files, including a IFC loader for Java3D and a Boolean modeler. The first part of the tool set has been made available for download. The development team of the Open IFC Tools is based at the Bauhaus University Weimar, Germany and supported by the Bauhaus University and HOCHTIEF AG.

read more about open IFC Tools

Open source software library for IFC file format IfcOpenShell is an open source software library that helps users and software developers to work with the IFC file format. IfcOpenShell uses Open CASCADE to interpret the implicit geometry in IFC files. IfcOpenShell's permissive LGPL license encourages it to be used freely in both proprietary and open source software.

read more about IfcOpenShell

Open IFC read and write examples using different programming languages Based on the IFC engine DLL a set of open read/write examples are provided for anyone to get familiar with the first steps on how to use IFC. A subset is published on this site as the "Hello Wall" tutorial. The IFC engine DLL is developed at TNO, Netherlands, and is made available freely for non-commercial usage.

read more about Open IFC read/write examples

Open Source STEP Class Library Generates C++ and Python from EXPRESS schemas, including IFC 2x3 and 2x4. Includes software classes for SDAI (ISO 10303-22), and a part21 file reader/writer executable. Used for the STEP translator in BRL-CAD. BSD license allows for free use in commercial software.

read more about Open Source STEP Class Library

Freeware IFC SDK The IFC SDK project provides a Software Development Kit (SDK) for reading and writing a Building Information Model (BIM) defined in Industry Foundation Classes (IFC) format. First version of the IFC SDK is provided in C++ programming language and is compliant with IFC 2X3 TC1 standard developed by buildingSMART International.

read more about IFC SDK

Freeware IFC File Analyzer The IFC File Analyzer generates an Excel spreadsheet from an IFC file. A worksheet is created for each type of entity where every row contains the attributes of an entity instance. Multiple IFC files can be analyzed at once to compare entity usage. The IFC File Analyzer is made available as freeware by NIST

read more about IFC File Analyser

Freeware IFC syntax checker and viewer The IfcObjCounter analyses an IFC file against the IFC schema for syntax error and the FZKViewer visualizes the IFC file (geometrically and for property content), it also allows to read other open file formats. The tools are made available by Karlsruhe Institute of Technology, Institute for Applied Computer Science.

read more about FZKViewer and IfcObjCounter