Monday, 22 February 2016

OpenBIM just became more Open

The core c# classes developed by Geometry Gym to import and construct IFC (Industry Foundation Classes) have been released as an Open Source project under the MIT license.

The source code is being hosted on GitHub, https://github.com/jmirtsch/GeometryGymIFC
I've uploaded the compiled dll to https://www.nuget.org/packages/GeometryGymIFC/

Note this isn't the entire IFC code base that Geometry Gym has developed, the interfaces to Grasshopper, Revit, Rhino, Navisworks, Tekla and the various structural analysis software remain closed source (for at least the time being) as the revenues provided by these projects support the full time development of this code base.

Example code for using these classes will be posted to this project,
https://github.com/jmirtsch/GeometryGymIFCExamples
and you can also refer to the Building Smart examples at
https://github.com/BuildingSMART/IfcScript (but a little more work is needed to enable this to directly use the opensource tools).

Documentation is sparse, but you can reference Building Smart material online such as  http://www.buildingsmart-tech.org/ifc/IFC4/Add1/html/

Prior to deciding to open source, I studied the capability and state of existing dotnet projects I could find.
Some key advantages I believe this project will offer above these include:
MIT License (Permissive license permitting use of code for many purposes)
Simultaneous of multiple schemas such as Ifc2x3, Ifc4 and Ifc5 (infrastructure)
Pure dotnet library.
Easily extensible for developing custom classes and custom interfaces with other software.
Advanced constructors for classes to permit easier generation of Ifc files (other projects require explicit setting of every relationship requiring more intimate understanding of the IFC framework).

The motivation for this move to opensource the code is support of the Uniform Object Library, and I have also discussed the possibility of using the tools for other open and closed source developments with others.

Note also there are two initial variations of the classes to reference.  The core code has no dependencies and reference, and an extension to this with references to RhinoCommon (OpenNurbs) geometry.  The RhinoCommon flavour is still work in progress with more code to be ported into the opensource project.

If you are interested in utilizing this project, please don't hesitate to get in touch to discuss any aspect of this.  Also if you have suggestions for improvements, or wish to contribute, this is greatly appreciated.

5 comments:

  1. An excellent initiative and a generous sharing-mentality...congratulations Jon!

    ReplyDelete
  2. Thank you for contributing. Wonder if I can make it run within Unity... Do you need a geometric engine/kernel or is the library self-contained? E.g. some others rely on e.g. OpenCASCADE to do the geometry lifting.

    ReplyDelete
  3. Sure, Unity seems to be able to recognize c# so should be able to work.
    At the moment there is a Rhinocommon "essentials" version of the library (which I still need to extend), I haven't yet opensourced all of the RhinoCommon conversions.

    But I suspect there could develop some extension methods/attributes that could convert to Unity geometry such as Meshes. I'll contact you on skype to discuss how this would work.

    ReplyDelete
  4. First test have shown that the basic examples are usable. I had to add a copy of some mono classes (Tuple and Color) that are not inside the Unity Mono library (as System.Drawing is removed). And the Zip-support is also missing, although other libraries may be usable. Nice work!

    ReplyDelete