Difference between revisions of "IfcOpenShell"

From Wiki.OSArch
 
(44 intermediate revisions by 12 users not shown)
Line 1: Line 1:
 +
{{Infobox software
 +
| icon      = Ifcopenshell logo.png
 +
| screenshot = IfcOpenShell_screenshot.png
 +
| website    = http://www.ifcopenshell.org/
 +
| source    = [https://github.com/IfcOpenShell/IfcOpenShell github]
 +
| license    = [https://github.com/IfcOpenShell/IfcOpenShell LGPL-3.0 & GPL-3.0]
 +
| bugs      = [https://github.com/IfcOpenShell/IfcOpenShell/issues Report a bug]
 +
| community  = [https://sourceforge.net/p/ifcopenshell/discussion/ Forum]
 +
| maturity  = Mature
 +
| donation  = [https://opencollective.com/opensourcebim OpenSourceBIM]
 +
}}
 
{{Template:IfcOpenShell}}
 
{{Template:IfcOpenShell}}
[[IfcOpenShell|IfcOpenShell]] is an open source (LGPL 3) software library that helps developers work with the [http://www.buildingsmart-tech.org/specifications/ifc-overview industry foundation classes]  (IFC) file format. The IFC file format can be used to describe building and construction data. The format is commonly used for [https://en.wikipedia.org/wiki/Building_information_modeling building information modelling] (BIM), for example, mechanical loading analysis, and thermal and energy efficiency studies. IfcOpenShell is primarily a collection of C++ libraries, however, as it has [[Python|Python]] bindings, it can be integrated with programs like [[FreeCAD]] and [[Blender]].
+
[[IfcOpenShell|IfcOpenShell]] is an open source (LGPL 3) software library that helps developers work with the [http://www.buildingsmart-tech.org/specifications/ifc-overview industry foundation classes]  (IFC) file format. The IFC file format can be used to describe building and construction data. The format is commonly used for [https://en.wikipedia.org/wiki/Building_information_modeling building information modelling] (BIM), for example, mechanical loading analysis, and thermal and energy efficiency studies.
 +
 
 +
IfcOpenShell is primarily a collection of C++ libraries, however, as it has [[Python|Python]] bindings, it can be integrated with programs like [[FreeCAD]] and [[Blender]]. It has support for Windows, Mac, and Linux. IfcOpenShell can be used as C++ developer libraries, through Python modules, via a number of Unix-style command line applications, or via graphical interfaces. The core libraries have support for IFC2X3, IFC4, IFC4.3, as well as custom IFC schemas defined by the user. Supported serialisations include IFC-SPF, IFC-JSON, IFC-XML, and IFC-HDF5.
 +
 
 +
IfcOpenShell supports geometry processing using the [[Open_CASCADE|Open CASCADE]] geometry kernel. IFC geometry may be uniformly triangulated regardless of their original definition.
 +
 
 +
IfcOpenShell is also unique in its extensive Python API, which includes hundreds of functions for common IFC manipulation operations. This API supports many aspects of IFC not usually supported in other tools, including cascading geometric coordinate changes, subgraph purging, appending elements, and extensive support for 4D and 5D BIM operations like cost formulas, critical path analysis, and calendar-based scheduling propagation. It is also unique in its support for HDF5 caching, voxel analysis for dealing with less than precise BIM geometry, and semantic SVG-based drawing generation.
  
 
=Tools=
 
=Tools=
  
IfcOpenshell contains multiple tools which can be used independently or together :
+
In addition to a developer library, IfcOpenshell can be used through multiple command line tools which can be used independently or together :
 +
==[https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.6.0/src/bcf bcf-python]==
 +
A simple Python implementation of [[BIM_Collaboration_Format_(BCF)]]. The data model is described in data.py. Manipulation of BCF-XML is available via bcfxml.py and manipulation of BCF-API is available via bcfapi.py. See also [[:Category:BIM_Collaboration_Format_(BCF)]]. [[Category:BIM_Collaboration_Format_(BCF)]]
 +
 
 
==[http://ifcopenshell.org/ifcconvert IfcConvert]==
 
==[http://ifcopenshell.org/ifcconvert IfcConvert]==
 
A command line tool to convert IFC to different format including :
 
A command line tool to convert IFC to different format including :
Line 82: Line 102:
  
 
=Softwares powered by ifcopenshell=
 
=Softwares powered by ifcopenshell=
 +
 +
The following lists of projects, academia, and industry organisations is incomplete. People who use IfcOpenShell are not required to advertise that they do so and IfcOpenShell is a community effort that does not collect or have a list of customers like private companies.
 +
 
==FOSS projects==
 
==FOSS projects==
 
* [[BIMxBEM]] : import IfcRelSpaceBoundary, IfcSpace and related building elements geometry and data
 
* [[BIMxBEM]] : import IfcRelSpaceBoundary, IfcSpace and related building elements geometry and data
Line 87: Line 110:
 
* [[FreeCAD]] : ifcopenshell-python - import/export Parametric 3D modeler allowing you to easily modify your design.  
 
* [[FreeCAD]] : ifcopenshell-python - import/export Parametric 3D modeler allowing you to easily modify your design.  
 
* [[ifc-pipeline]] : IfcConvert / ifcopenshell - python
 
* [[ifc-pipeline]] : IfcConvert / ifcopenshell - python
* [https://tridify.com/ Tridify] (Epic Megagrants recipient) Stream large & complex BIMs from the Cloud. A BIM Communication Service for all stakeholders with communication to issue management software.
+
* [https://youshengcode.github.io/IfcToolbox.Doc/#/ IFC Toolbox] No-code IFC editing uses IfcOpenShell for model conversions.
 
* [https://github.com/opensourceBIM/BIMserver BIMServer] enables you to store and manage the information of a construction (or other building related) project.  
 
* [https://github.com/opensourceBIM/BIMserver BIMServer] enables you to store and manage the information of a construction (or other building related) project.  
 
* BIMSurfer
 
* BIMSurfer
 +
* [https://www.openproject.org/ OpenProject] An open source commercial CDE that uses IfcOpenShell for model processing.
 
* [https://xeokit.io/ xeokit-sdk] An open source 3D graphics SDK from xeolabs for BIM and AEC. Built to view huge models in the browser. Used by industry leaders.
 
* [https://xeokit.io/ xeokit-sdk] An open source 3D graphics SDK from xeolabs for BIM and AEC. Built to view huge models in the browser. Used by industry leaders.
* [https://augin.app/en/ Augin.app] Publish and view AEC content in augmented reality in the environment on a 1:1 scale.
 
  
 
==Proprietary projects==
 
==Proprietary projects==
 +
* [http://areo.io/ Areo] SMART Facilities Management
 +
* [https://augin.app/en/ Augin.app] Publish and view AEC content in augmented reality in the environment on a 1:1 scale.
 
* [https://bimdata.io/ BIMData.io] Provides an integrated viewer capable of loading several tens of thousands of objects.  
 
* [https://bimdata.io/ BIMData.io] Provides an integrated viewer capable of loading several tens of thousands of objects.  
* [http://areo.io/ Areo] SMART Facilities Management
+
* [https://bimforce.com/en/homepage/ Bimforce] for IFC drawing generation
 +
* [https://www.cove.tools/ Cove.Tool] to integrate into Blender for sustainability analysis
 +
* [https://modulize.io/ Modulize] - Uses IfcOpenShell "quite a lot"
 +
* [https://regola.io/ Regola] - Used for model checking
 +
* [https://rengabim.com/ RengaSoftware] - used in [https://github.com/IfcOpenShell/IfcOpenShell/issues/1028#issuecomment-776085665 various operations] internally
 +
* [https://www.spectar.io/ Spectar] - Used for IFC conversions
 +
* [https://streambim.com/ StreamBIM] (previously known as Rendra.io) (Winner of 2020 buildingSMART Awards in Construction via Project Celsius)
 +
* [https://tridify.com/ Tridify] (Epic Megagrants recipient) Stream large & complex BIMs from the Cloud. A BIM Communication Service for all stakeholders with communication to issue management software.
 
* [https://www.tridyme.com/ TriDyme] TriDyme helps construction's companies to develop their own cloud-based (online) applications.
 
* [https://www.tridyme.com/ TriDyme] TriDyme helps construction's companies to develop their own cloud-based (online) applications.
* [https://streambim.com/ StreamBIM] (previously known as Rendra.io) (Winner of 2020 buildingSMART Awards in Construction via Project Celsius)
+
* [https://github.com/louistrue/PythonForIFC/tree/main/IfcPropertyRenamer IfcPropertyRenamer] A GUI to bulk rename properties
* [https://rengabim.com/ RengaSoftware] - used in [https://github.com/IfcOpenShell/IfcOpenShell/issues/1028#issuecomment-776085665 various operations] internally
+
* [https://ifcdev.baseapps.net/viewer IFC Werkzeug] A web app to view and edit data about IFCs
 +
 
 +
==Academia==
  
 
IfcOpenShell is also used in university courses around the world.
 
IfcOpenShell is also used in university courses around the world.
  
 +
* École Polytechnique Fédérale de Lausanne (EPFL Switzerland)
 
* Fachhochschule Nordwestschweiz FHNW (University of Applied Sciences and Arts Northwestern Switzerland)
 
* Fachhochschule Nordwestschweiz FHNW (University of Applied Sciences and Arts Northwestern Switzerland)
* MSc-education of Architecture, Civil Engineering and Construction & Robotics tracks at RWTH Aachen University and TU Eindhoven
+
* Federal University of Viçosa in Brazil
 +
* MSc-education of Architecture, Civil Engineering and Construction & Robotics tracks at RWTH Aachen University in Germany
 +
* Technical University of Denmark
 +
* TU Eindhoven in the Netherlands
 +
* Parametric Design with Visual Programming in BIM by the Online Zigurat Global Institute for Technology
 +
* [https://bimfag.no/ BIMfag] Courses for BIM technicians in Norway
 +
* Tallinn University of Technology in Estonia
 +
* [https://ideamechelen.be/masterclass-building-intelligence Masterclass Building Intelligence] Thomas More Mechelen in Belgium
 +
 
 +
It has also been a primary contributor in a number of research papers.
 +
 
 +
* [https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=ifcopenshell&btnG= IfcOpenShell results on Google Scholar]
 +
* [https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=blenderbim&btnG= BlenderBIM Add-on results on Google Scholar]
 +
 
 +
==Industry==
 +
 
 +
IfcOpenShell is known to be used in various companies and organisations. Size is roughly based on employee numbers: tiny (1-10), small (<100), medium (<1000), large.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Name !! Country !! Company Size !! Sector
 +
|-
 +
| AF Gruppen Norge AS || Norway || Large || Example
 +
|-
 +
| Ai.K Data Labs || India || Tiny || Example
 +
|-
 +
| BAUPUNKTNULL AG || Switzerland || ? || Example
 +
|-
 +
| BCCV || Morocco || Tiny || Example
 +
|-
 +
| bda2bim|| France || Tiny || Example
 +
|-
 +
| Bouygues Construction || Australia || Large || Example
 +
|-
 +
| Brasfield & Gorrie || USA|| Large || General Contractor
 +
|-
 +
| Bylor || UK || Large || Example
 +
|-
 +
| Géo²Concept || France|| Small || Example
 +
|-
 +
| Geosurv || Australia || Small || Example
 +
|-
 +
| John Holland || Australia || Large || Example
 +
|-
 +
| Ingenieursbureau 3BM || Netherlands || Example || Example
 +
|-
 +
| Laing O'Rourke || Australia || Large || Example
 +
|-
 +
| LAB Entreprenør AS || Norway || Medium || Example
 +
|-
 +
| Lendlease || Australia || Large || Example
 +
|-
 +
| Norconsult Norge AS || Norway || Large || Example
 +
|-
 +
| OpeningDesign || USA || Tiny || Example
 +
|-
 +
| Société des Grands Projets || France || Medium || Example
 +
|-
 +
| Spectar || USA || Small || Example
 +
|-
 +
| Tietoa Finland Oy || Finland || Small || Example
 +
|-
 +
| Transport for NSW || Australia || Large || Example
 +
|-
 +
| WSP || Australia || Large || Example
 +
|}
  
 
=Installation=
 
=Installation=
Line 123: Line 223:
  
 
https://github.com/bimfag/intro-python-bim (by Sigve Martin Pettersen and Hans Martin Eikerol)
 
https://github.com/bimfag/intro-python-bim (by Sigve Martin Pettersen and Hans Martin Eikerol)
 +
 +
https://github.com/jakob-beetz/ifcopenshell-notebooks (by Jakob Beetz)
 +
 +
* Tutorial and code examples:
 +
 +
https://github.com/stefkeB/ifcopenshell_examples (by Stefan Boeykens)
  
 
[[Category:IfcOpenShell]]
 
[[Category:IfcOpenShell]]
 
[[Category:Software]]
 
[[Category:Software]]
 
[[Category:Industry Foundation Classes (IFC)]]
 
[[Category:Industry Foundation Classes (IFC)]]

Latest revision as of 13:51, 12 April 2024

Ifcopenshell logo.png
IfcOpenShell screenshot.png
Website: http://www.ifcopenshell.org/
Source: github
License: LGPL-3.0 & GPL-3.0
Bugs: Report a bug
Community: Forum
Maturity: Category:Mature
Donate: OpenSourceBIM
Red curve on white disc 128px.png Software Directory


Ifcopenshell logo.png IfcOpenShell is a C++ and Python open source software library that helps users and software developers to work with the IFC file format. You can see all articles related articles in the Category:IfcOpenShell.

IfcOpenShell is an open source (LGPL 3) software library that helps developers work with the industry foundation classes (IFC) file format. The IFC file format can be used to describe building and construction data. The format is commonly used for building information modelling (BIM), for example, mechanical loading analysis, and thermal and energy efficiency studies.

IfcOpenShell is primarily a collection of C++ libraries, however, as it has Python bindings, it can be integrated with programs like FreeCAD and Blender. It has support for Windows, Mac, and Linux. IfcOpenShell can be used as C++ developer libraries, through Python modules, via a number of Unix-style command line applications, or via graphical interfaces. The core libraries have support for IFC2X3, IFC4, IFC4.3, as well as custom IFC schemas defined by the user. Supported serialisations include IFC-SPF, IFC-JSON, IFC-XML, and IFC-HDF5.

IfcOpenShell supports geometry processing using the Open CASCADE geometry kernel. IFC geometry may be uniformly triangulated regardless of their original definition.

IfcOpenShell is also unique in its extensive Python API, which includes hundreds of functions for common IFC manipulation operations. This API supports many aspects of IFC not usually supported in other tools, including cascading geometric coordinate changes, subgraph purging, appending elements, and extensive support for 4D and 5D BIM operations like cost formulas, critical path analysis, and calendar-based scheduling propagation. It is also unique in its support for HDF5 caching, voxel analysis for dealing with less than precise BIM geometry, and semantic SVG-based drawing generation.

Tools[edit]

In addition to a developer library, IfcOpenshell can be used through multiple command line tools which can be used independently or together :

bcf-python[edit]

A simple Python implementation of BIM_Collaboration_Format_(BCF). The data model is described in data.py. Manipulation of BCF-XML is available via bcfxml.py and manipulation of BCF-API is available via bcfapi.py. See also Category:BIM_Collaboration_Format_(BCF).

IfcConvert[edit]

A command line tool to convert IFC to different format including :

.obj WaveFront OBJ (a .mtl file is also created)
.dae Collada Digital Assets Exchange
.glb glTF Binary glTF v2.0
.stp STEP Standard for the Exchange of Product Data
.igs IGES Initial Graphics Exchange Specification
.xml XML Property definitions and decomposition tree
.svg SVG Scalable Vector Graphics (2D floor plan)
.ifc IFC-SPF Industry Foundation Classes

You can pass multiple options. Type IfcConvert --help to learn more (considering it is installed on your system).

IfcGeomServer[edit]

A command-line tool which allow to process geometry in a crash safe manner using a child process with dynamic linking.

IfcOpenShell-python[edit]

A python API to manipulate IFC. See IfcOpenShell code examples. Comes with many utility functions for geolocation, data extraction, IFC query filtering, and more.

IFC Clash[edit]

IFC Clash detection using the flexible collision library.

IFC2CA[edit]

Conversion of IFC files into input files for Code_Aster structural simulation software.

IFC COBie[edit]

Conversion of IFC-SPF data into SpreadsheetML format for the COBie MVD. Includes error logging of invalid data and support for open format alternatives like CSV and ODS. See also: BlenderBIM_and_COBie

IFC CSV[edit]

Import and export support of IFC data to and from CSV files using a custom IFC query language. See also: BlenderBIM_IFCCSV

IFC Diff[edit]

Compares two IFC files with settings to check geometry or particular data relationships. Produces a parseable diff in JSON.

IFC Patch[edit]

Provides a standard interface for users to easily apply predetermined "recipes" to manipulate IFC data without needing to have any technical knowledge. See forum topic for a example how to run it. https://community.osarch.org/discussion/10/ifcpatch-tool-now-available#latest

IFC Sverchok[edit]

Provides an extension to the Blender Sverchok add-on for visual programming nodes for IFC within the Blender environment.

BIMTester[edit]

Provides a way to specify BIM exchange requirements using natural human language and audit IFC files to check if they comply with the requirements.

IfcBlender[edit]

Replaced by BlenderBIM Add-on.

IfcMax[edit]

This plugin seems to not be developed anymore. It was an Ifc importer for 3ds Max.

Softwares powered by ifcopenshell[edit]

The following lists of projects, academia, and industry organisations is incomplete. People who use IfcOpenShell are not required to advertise that they do so and IfcOpenShell is a community effort that does not collect or have a list of customers like private companies.

FOSS projects[edit]

  • BIMxBEM : import IfcRelSpaceBoundary, IfcSpace and related building elements geometry and data
  • BlenderBIM Add-on : ifcopenshell-python - import/export, multi-core geometry processing and more (Winner of 2020 buildingSMART Awards in Technology)
  • FreeCAD : ifcopenshell-python - import/export Parametric 3D modeler allowing you to easily modify your design.
  • ifc-pipeline : IfcConvert / ifcopenshell - python
  • IFC Toolbox No-code IFC editing uses IfcOpenShell for model conversions.
  • BIMServer enables you to store and manage the information of a construction (or other building related) project.
  • BIMSurfer
  • OpenProject An open source commercial CDE that uses IfcOpenShell for model processing.
  • xeokit-sdk An open source 3D graphics SDK from xeolabs for BIM and AEC. Built to view huge models in the browser. Used by industry leaders.

Proprietary projects[edit]

  • Areo SMART Facilities Management
  • Augin.app Publish and view AEC content in augmented reality in the environment on a 1:1 scale.
  • BIMData.io Provides an integrated viewer capable of loading several tens of thousands of objects.
  • Bimforce for IFC drawing generation
  • Cove.Tool to integrate into Blender for sustainability analysis
  • Modulize - Uses IfcOpenShell "quite a lot"
  • Regola - Used for model checking
  • RengaSoftware - used in various operations internally
  • Spectar - Used for IFC conversions
  • StreamBIM (previously known as Rendra.io) (Winner of 2020 buildingSMART Awards in Construction via Project Celsius)
  • Tridify (Epic Megagrants recipient) Stream large & complex BIMs from the Cloud. A BIM Communication Service for all stakeholders with communication to issue management software.
  • TriDyme TriDyme helps construction's companies to develop their own cloud-based (online) applications.
  • IfcPropertyRenamer A GUI to bulk rename properties
  • IFC Werkzeug A web app to view and edit data about IFCs

Academia[edit]

IfcOpenShell is also used in university courses around the world.

  • École Polytechnique Fédérale de Lausanne (EPFL Switzerland)
  • Fachhochschule Nordwestschweiz FHNW (University of Applied Sciences and Arts Northwestern Switzerland)
  • Federal University of Viçosa in Brazil
  • MSc-education of Architecture, Civil Engineering and Construction & Robotics tracks at RWTH Aachen University in Germany
  • Technical University of Denmark
  • TU Eindhoven in the Netherlands
  • Parametric Design with Visual Programming in BIM by the Online Zigurat Global Institute for Technology
  • BIMfag Courses for BIM technicians in Norway
  • Tallinn University of Technology in Estonia
  • Masterclass Building Intelligence Thomas More Mechelen in Belgium

It has also been a primary contributor in a number of research papers.

Industry[edit]

IfcOpenShell is known to be used in various companies and organisations. Size is roughly based on employee numbers: tiny (1-10), small (<100), medium (<1000), large.

Name Country Company Size Sector
AF Gruppen Norge AS Norway Large Example
Ai.K Data Labs India Tiny Example
BAUPUNKTNULL AG Switzerland ? Example
BCCV Morocco Tiny Example
bda2bim France Tiny Example
Bouygues Construction Australia Large Example
Brasfield & Gorrie USA Large General Contractor
Bylor UK Large Example
Géo²Concept France Small Example
Geosurv Australia Small Example
John Holland Australia Large Example
Ingenieursbureau 3BM Netherlands Example Example
Laing O'Rourke Australia Large Example
LAB Entreprenør AS Norway Medium Example
Lendlease Australia Large Example
Norconsult Norge AS Norway Large Example
OpeningDesign USA Tiny Example
Société des Grands Projets France Medium Example
Spectar USA Small Example
Tietoa Finland Oy Finland Small Example
Transport for NSW Australia Large Example
WSP Australia Large Example

Installation[edit]

IfcOpenShell may be packaged in different Linux repositories, ready to install and use; or it can be packaged together with some programs that use it, for example, FreeCAD.

In other cases you may get one of the stand-alone, pre-compiled distributions, or you may download and compile the source code yourself.

To learn more about installing IfcOpenShell, visit the page in the FreeCAD wiki: IfcOpenShell.

See also[edit]

External Resources[edit]

https://github.com/jakob-beetz/IfcOpenShellScriptingTutorial (by Jakob Beetz)

https://github.com/bimfag/intro-python-bim (by Sigve Martin Pettersen and Hans Martin Eikerol)

https://github.com/jakob-beetz/ifcopenshell-notebooks (by Jakob Beetz)

  • Tutorial and code examples:

https://github.com/stefkeB/ifcopenshell_examples (by Stefan Boeykens)