Friday, February 7, 2014

Surface styles

Support for IfcSurfaceStyles, when importing geometry from IFC files, is a feature that has been requested much over the years. Starting with IfcOpenShell 0.4 surface styles are supported. Some refer to these styles as materials, but within the realms of IFC, surface styles and materials are actually two different beasts. Materials (IfcMaterialDefinition) describe metadata that pertain to the physically built structure. For example: the composite structure of an insulated brick wall can be described using an IfcMaterialLayerSet.

Surface styles on the other hand govern the way that surfaces or solids are visualised in IFC viewers. Often there is some correlation between the two: that the style of a surface is actually an indication of the material, but this is not necessarily the case. For example in MEP models, surface styles can also be used to colour code the contents or direction of flow segments, as can be seen above. In this post you find two images attached that derive their colouring straight from the IFC file: the Hitos HVAC model and an interior part of the Cobie Duplex Architectural model. In the image below you can also see how multiple distinct styles can be applied to different items within the same product.

Subsequent releases of IfcOpenShell will also account for surface styles linked to IfcMaterials and will provide an option to slice the geometric representation of elements according to their compound layer structure defined in the IfcMaterialLayerSet.

Sunday, January 12, 2014

IfcOpenShell 0.4.0 rc1 released!

It has been a while, but today the immediate availability of the first release candidate for the IfcOpenShell 0.4 release is announced! On this blog some of the new features of this release will be highlighted in detail. For example on file format conversion. Please report all issues found (by leaving a comment, starting a thread on the forums, a message on IRC, e-mail or a letter, you know where to find us)!

Changes since 0.3:
  • Introduction of IfcConvert 
    • A new utility that writes STEP, Collada, IGES and Wavefront OBJ files
  • Support for IfcSurfaceStyles when importing geometry
    • Surface styles govern the colours applied to elements in IFC viewers
  • More robust support for clipped representations
  • Blender IFC importer updated for 2.69
  • 3ds Max IFC importer updated for 3ds Max 2014
  • Improved performance and stability

The release can be downloaded from the website:

Enjoy! And remember that IfcOpenShell still needs your help!

Tuesday, January 7, 2014

Converting IFC files to STEP, IGES and Collada files

One of the brand new features in the upcoming IfcOpenShell 0.4 release is the ability to convert geometry in IFC files into three new file formats by using the new IfcConvert utility. The in total four supported output formats now are:
  • Wavefront OBJ (.obj)
  • Collada Digital Asset Exchange (.dae)
  • STEP (.stp)
  • IGES (.igs)
Wavefront OBJ conversion was already supported by the IfcObj utility. This utility is now obsolete. Both the Wavefront and Collada files, as created by IfcConvert, contain only tessellated geometry. More specifically: when using these formats all geometry is defined using explicit triangular polygons and curved surfaces would be approximated using these triangles. The great thing about these formats is that they can be imported by virtually any application, at the expense of some precision in the geometry definition.

For example consider the following statement:
#106 = IFCISHAPEPROFILEDEF(.AREA., $, #103, 302., 1008., 21., 40., 30.);
This defines an I-beam profile cross-section with a 302mm width, 1008mm height, a thickness of 21mm for the web, 40mm for the flanges and a fillet radius of 30mm. The left-most image depicts how such a beam, with a single opening added, would be defined using triangles. Notice how the fillet radius where the web and the flanges meet is approximated using planar surfaces and the round opening is in fact an n-gon.

Where STEP and IGES are different is that these formats allow the exporter to specify the surfaces using a boundary representation that supports curved surfaces and faces with holes. Therefore, no geometrical fidelity is lost in the conversion process. This can be useful in many of the engineering applications that do not natively support importing IFC files, but do provide support for either STEP or IGES files. After all, even though STEP and IFC(-SPF) share the same notation format (ISO 10303-21), STEP has been around for longer and is used in a variety of domains, where IFC is used only for describing building data. An illustration of the same beam without the triangular tessellation is provided on the right.

Stay posted for the first Release Candidate of the new IfcOpenShell 0.4, to be made available soon, which includes this new utility!

Monday, February 11, 2013

IfcOpenShell 0.3.0 released!

After another (rather lengthy) period of testing we proudly announce the immediate availability of IfcOpenShell 0.3.0, the latest stable release of this open source toolkit for working with IFC files.

Meanwhile several interesting new features have already been developed in anticipation of the following release: Support for writing IFC files is especially something to look forward to given the powerful geometry back-end based on Open Cascade. Note that these features will not be available in the 0.3.0 release though.

Thanks go out to everybody for reporting bugs and contributing to this release. Naturally this includes everybody using IfcOpenShell and those being involved in the discussion and adoption of IFC in the AEC industry as well.

Changes since 0.3.0-rc3

Parsing and geometry
  • Potentially faster processing of files that can not be parsed sequentially, i.e. that require many random access operations throughout the file
  • Fixed a bug that caused IfcCircleHollowProfileDefs to be processed incorrectly
  • More robust processing of IfcCompositeCurves if no plane angle unit is provided in the file
  • More robust processing of IfcTrimmedCurves with tolerances on trimming by IfcCartesianPoint and, if possible, falling back to trimming by IfcParameterValue
  • Updated for Blender 2.65
  • Allow opening of non-latin filenames on Windows (other platforms already supported this)
  • Use positive vertex indices for Wavefront OBJ files, which is more widely supported in importing applications
  • Updated for Autodesk 3ds Max 2013
  • Allow opening of unicode filenames (only in 3ds Max 2013)
BIMserver IfcEngine
  • No longer throws an exception if a building element's geometry is requested for an element that has not been processed by the IfcOpenShell binary

The release can be downloaded from the website:
Enjoy! And remember that IfcOpenShell still needs your help!

Sunday, November 4, 2012

Say Hi to IfcOpenHouse!

Up until now, most people have been using IfcOpenShell to read and import IFC files, but today we bring you a three-dimensional IFC building model that is entirely generated from lines of code, using IfcOpenShell. With the use of some of the helper classes that IfcOpenShell provides, some might even say that creating IFC files this way is easier than operating a full-fledged BIM authoring tool, but that would we somewhat of an overstatement.

IfcOpenHouse rests on a Nurbs-surface hilltop constructed in Open Cascade. The tight relation between IfcOpenShell and Open Cascade will in the future provide everything you need to write complex parametric shapes right to an IFC file. However, for now the surface had to be tessellated, as Ifc2x3 does not support Nurbs and IfcOpenShell is not yet smart enough to pick the correct way of representing arbitrary shapes from Open Cascade, therefore it resorts to a triangular surface model.

For the other building elements IfcExtrudedAreaSolids are used, IfcBooleanClippingResults with IfcHalfSpaceSolids are used for the walls under the slanted roof and IfcOpeningElements are used for the boolean subtractions for windows and door. The hierarchical structure of an IfcProject, IfcSite, IfcBuilding and IfcBuildingStorey is created as well. This way a model is obtained that can be directly imported into your favourite three-dimensional modelling package.

IfcOpenHouse rendered in Blender using IfcBlender, imported into Revit and opened in Solibri Model Viewer and Tekla BIMsight. 

If you know of an application that is unable to represent the generated model correctly, or have any other questions or remarks, drop us a line in the comments! You can download the generated IFC here (updated November 17, 2012), and take a look at the source code for generating the file over here.

Update November 10, 2012 IfcOpenHouse has been updated to import correctly into Autodesk AutoCAD Architecture 2013.

Sunday, April 8, 2012 0.3.0 rc3 released!

With pleasure the third release candidate of 0.3.0 has been released. If no new major show-stoppers are encountered this release will become the official 0.3.0 version after a period of testing.

Since the previous release candidate several issues have been addressed
  • The clipping of building elements behaves much better now, especially if a polygonal boundary of the clipping volume coincides with faces of the first operand solid.
  • Bugs have been fixed in the processing of mapped representations, trimmed curves and connected faces sets.
  • IfcBlender has been updated for compatibility with Blender 2.62. Furthermore, hidden elements in the 3d View are now hidden in the Render as well.
  • IfcOpenShell now warns if entities with the same GlobalId or id are encountered.
  • A major performance issue has been addressed by only sewing faces of IfcConnectedFaceSets when they are needed for Boolean operations.
  • We now have automated visual test cases!
Very interesting for us to witness has been the development of the IFC importer for FreeCAD that uses IfcOpenShell as a fall-back for their customly developed importer. Because both FreeCAD and IfcOpenShell are based on Open Cascade the level of integration between FreeCAD and IfcOpenShell could be much deeper than it is currently the case with the importers for 3ds Max and Blender!

Furthermore we would like to congratulate the talented BIMserver team with their upcoming 1.1 release. It is a pleasure working with you to provide an open source IFC geometry engine for the BIMserver. I think this is the beginning of a beautiful friendship.

The release can be downloaded from the website:
Enjoy! And remember that IfcOpenShell still needs your help!

Thursday, March 1, 2012

Visual test cases added to IfcOpenShell

To spice things up for the upcoming 0.3 release of IfcOpenShell, I have just committed a test suite to the repository. The tests use Blender to automatically render images of whatever IFC files I could find on the Internet. A selection of these cases you see parading in the image below. Truth be told, these are the ones that behave nicely with IfcOpenShell. Luckily, by now this holds for a rather large majority, but there are still some quirks that need to be addressed before the 0.3 release.

We are very grateful for the models hosted on-line by the following parties:
Karlsruher Institut für Technologie / Data Design System / Nemetschek Vectorworks / Open IFC Model Repository / / buildingSMART alliance
Special thanks go out to Ryan Schultz (, and Jon Mirtschin ( for kindly including their models in our test case suite.

If you have some IFC models laying around that you would like to donate for inclusion in the test suite, you can send them to There is some benefit in doing this for you too: we will do our very best the files submitted to us are always rendered correctly.

Stay posted for the 0.3 release of IfcOpenShell. Among other things it will feature quite a nice increase in performance!