Monday, 18 November 2013

IFC exchange of Curtain Panels

An area that's been on the back burner for longer than I'd like, and that is the exchange of curtain panel plates from Grasshopper to Revit (etc etc).  Some potential clients evaluating the tools for this purpose led me to implementing some ideas and strategies for this.

Note that this isn't means to rationalize or divide surfaces into panels (there are other plugins such as paneling tools for this) but as a means to generate the curtain panel plates in Revit having already conducted the paneling process.

Update to the latest plugins for Rhino and Revit IFC from to test these.

I've implemented a means to represent the panels as surface objects (not extruded to thickness).  If the perimeter is planar, and has 3, 4 or 5 edges linear edges, then the Revit plugin will initiate an adaptive component family that generates an equivalent object.  Material needs to be manually altered in the family if appropriate.

Here's a sample GH definition creating a random array of planar panels and here's the generated IFC file.

I've also been looking at means to generate non-planar panels.  If the panel is an loft from one end curve to the other, then I've implemented a means to again generate a revit equivalent.

Here's a sample gh definition and here's the resulting IFC file.

I'm also investigating a means to create a non-planar panel with 5 edges.  I'd also really like to able to define master "families" of the same shape panels, and then propogate instances in Revit.  But the Revit API seems to be lacking fairly fundamental functionality to do this.

If you've requests, suggestions or questions, don't hesitate to get in touch.

Thursday, 17 October 2013

Navisworks 4D IFC

At the BIMDayOut event earlier this year (great event, hope it runs again next year) I presented some 4D IFC workflows from Grasshopper to Constructivity (still the only other software I know of reading and writing IFC4).  It was really encouraging to be able to show a virtual construction sequence in Constructivity but I found the software had issues with large scale geometry and strict requirements for the way data is defined.

What I've been working on now is an IFC import enhancement for Navisworks Manage 2014.

At this point in time, you can't create products in Navisworks from the API, but if you import the IFC using the native importer (IFC2x3 only), then you can run my IFC enhancer (plugin can be downloaded from ) which can generate the timeliner tasks and identify the ifc products by their unique identifiers.

Grasshopper Definition  IFC file

I hope to improve further the sequencing calculations and add cost data.  If you have requests or suggestions, let me know.  I will also consider developing a similar utility for VICO or other software if the demand is there.

Thursday, 10 October 2013


We were lucky to return back to London recently for my brother's wedding.  Being August and summer, it was a great time for a wedding but not the ideal time to try and meet lots of existing and potential users of the Geometry Gym tools.  I did manage a few meetings and Simply Rhino organized 4 computer lab sessions for those interested to not only view but try hands on application of the tools (This worked quite well and is something I'll look to repeat if I'm visiting other cities).

I was asked a few times about model exchange Grasshopper to AECOsim and it's something I've made a start on testing.  As per all BIM software, they do have IFC coordination import/export, but I've made a start on using the ISM as a basis of generating structural model data from IFC (grasshopper generated or not) into AECOsim and various other software interacting with ISM.

Here's some prototype models.  Curved members are coming quite well into AECOsim.
I tried my klein building slabs and they preview well in ISM viewer, but causes some errors when importing the ISM into AECOsim (Bentley will hopefully advise soon).

If you're interested in testing this work flow, please get in touch.  Initially this will be structural based but I am keen to enable other disciplines and data if demand is there (ISM has provided a fast means of getting started with a strong overlap of IFC structural data).   Of course Bentley have Generative Components as a very similar tool to Grasshopper, but freedom to exchange models across platforms can enable very powerful work flows.

Wednesday, 9 October 2013

Parametric IFC

There's been a few private and public discussions about Parametric IFC and IFC for Content.  As a prelude refer to and perhaps we need a twitter hash tag?
Manufacturers and suppliers are caught in a difficult situation at the moment about generating BIM data and leveraging the best value (and success) in doing so.

There is obviously a cost in preparation and there is little choice at the moment but to either generate pick which BIM software that native content can be created for or generate IFC as neutral data.  Budget, time and expertise constraints make it highly unlikely anyone will author native content for all BIM software (and is a lot of duplicated effort).  Current BIM software capability with IFC is presently leads to a lot of frustration and poor performance, but I don't think it has to be that way and will try to convey that with this blog post.

Let's start with the cistern family that Martijn refers too.  You can download this as an IFC file or Revit Family from
Martijn comments that the IFC file has 2640 lines of IFC to define it (actually the version I just downloaded has 2118).  The authors at National BIM Library have used the faceted brep  shape representation to define the geometry which is pretty typical of IFC files to date.  The geometry is effectively meshed into planar faces.  When you do this, you loose the parametric and intelligent aspects of the geometry (ie, if I want to now make the flush pipe change diameter, it's a near impossible task to relocate all the vertex accurately into the new positions.  Perhaps some manufacturers/suppliers prefer this as it means the content is "protected" but it does come at a cost.

I haven't sought permission to "edit" this file (if someone has a problem, let me know), but I substituted the geometry for extruded area solids and swept disk solids which retain parametric geometry.  You can download this IFC file here.  By replacing the shape representations with more intelligent and accurate shape representations I reduced the file to 357 lines of IFC of which a lot are property values.  If you've had bloated IFC files gigabytes in size, a lot of this can be attributed to meshed hand rails and the like (Please request to your BIM  software developers to implement and utilize swept disk solids).  I actually did simply the shape of the cistern a little, not because IFC isn't capable, but because certification requirements of IFC software do not require the implementation of IfcExtrudedAreaSolidTapered which would more accurately and efficiently the tapered cistern.  This would have added about 30 more lines to the IFC file (and I can post if requested).

Now, here's where using IFC gets frustrating.  We have this more intelligent and accurate IFC file, and it doesn't work very well in trying to use it.  I tried all the IFC software I have to hand, Revit, Archicad, Tekla Bimsight, DDS Viewer, Solibri, Constructivity and all of them displayed non or only the cistern part of the geometry.  I put this file through the Building Smart verification tool which indicates only inherited errors (that didn't prevent the original file being used).  The fact none opened the file suggests it might be a problem with the file and I will be most grateful to anyone that can identify this (maybe it's my curve parameterization, I'm aware that my IFC is not yet perfect).  You can of course test the file with my rhino3d importer.

Now if you wanted to change the geometric diameter of the pipe, you could open the ifc file in a text editor like Notepad, and set line
#3674= IFCSWEPTDISKSOLID(#3675,15.0,$,0.0,94.0000000000002);
to something like
#3674= IFCSWEPTDISKSOLID(#3675,40.0,$,0.0,94.0000000000002);

Download the revised file here.  In one quick step I changed the 2nd field for radius from 15mm (30mm diam) to 40mm (80mm diameter).

Now, what we really want to do is drive content as we can in Revit (and I understand, GDL in Archicad) from parameters.

An IFC pipe segment (or type) can have a  property value stored in the common property set for "Nominal Diameter"  What would be nice is to change this value (akin to changing a parameter on the family in Revit) and have the geometry and any calculated values update to this change.
IFC as presently defined does not have this capability, but there is a very interesting proposed extension for IFC to do just that.  I don't know any software that has implemented it (really users are going to have to demand it) and I thought I'd implement file exporting to demonstrate it.

Download the IFC file here.

So if you read the IFC, you see I've bound the property single value to the circle hollow profile def radius, with a formula to adjust by a factor of 0.5 (to adjust from diameter to radius).  It would be possible to define formula relationships and the like (akin to Revit and to my knowledge GDL) and have them converted from the IFC file into the native equivalents.  (Grasshopper definition if you want to test, the components are hidden from the menu at this stage).

So, if the industry wants to generate more intelligent model content, and use it in a wider variety of software and contexts, it would seem a good idea to get on and implement (and improve) this extension.  Note also this extension can provide provision for constraint relationships.

To quickly address the comment from Martijn about "IFC is meant for Projects), this is perception rather than technical intention (Refer definition of IfcProject here). IFC4 does improve this situation, where a project can declare "types" without populating an instance of this in space.

I state all the time, IFC isn't perfect.  But it is capable of a lot more than implementation demonstrates at this point in time.  And before we can really work on improving it, we really need to be able to test and utilize what it is already capable of to identify improvements and shortfalls.  I look forward to discussing further.

Sunday, 11 August 2013

Oasys Webinar - Linking GSA With Rhino and Grasshopper

Thanks to Oasys for the invitation to help present a webinar on COM execution of GSA and how I've applied this to develop the Grasshopper/Rhino to GSA interactions.

Here's the recording in case you missed it.  If you'd like to see a follow up with explanation of more detailed models, get in touch with myself or Oasys.

Here's the GH definition.  I realized that setting orientation to a point is pretty simple in GSA, setting it to the normal of a defining surface isn't so easy so I've modified for this.  I also made the points internal to the gh definition (rather than linking to a rhino document).

Tuesday, 9 July 2013

GeomGym IFC import to VisualARQ (via Grasshopper)

At the request of RhinoForYou, I've been prototyping an IFC import to VisualARQ using their recently released Grasshopper Components (and of course the Geometry Gym GH components).

I know Asuni are working on adding more components including to generate styles (until then, the user must manually create and assign in Grasshopper) but the evidence of Grasshopper being a fantastic environment for interop is again evident.

Here's a demonstration and description:

The grasshopper definition used (update to latest version of IFC plugin and you need VisualARQ components) can be downloaded here.  I'm seeking permission to post the IFC file in this demonstration.

I'm working on adding beams, columns and other objects that can be created in GH by VisualARQ.  Don't hesitate to get in contact if you have suggestions, requests or observations.

Monday, 10 June 2013

More D's for Grasshopper BIM

Recently I've been working on enabling more dimensions to Grasshopper BIM, primarily Planning and Costing.  I've just posted an installer ( ) that's capable of generating the attached program example (which is just like a Gantt chart just in Grasshopper format).

Grasshopper 0.9.0056 Definition Grasshopper 0.9.0014 Definition IFC4 created
This example creates a residential project construction program.  It demonstrates nesting tasks inside others, nominated precedence dependency (including lag time and start-finish or start-start type relationships) and nominating task duration.  It's also possible to assign task to work calendars defining working times  or exceptions (such as holidays or rostered days off).

At the moment there's not components to provide feedback such as collated/aggregated scheduled finish time etc, but this is certainly something I'll pursue.  Of a higher importance is probably to develop an importer for existing management software such as Microsoft Project (or other suggestions made by users) so that gantt charts (in a more typical/recognizable format) and reports can be generated there.

I've also started work on costing and resourcing metrics which I'll be posting soon.  I think what would also be impressive/useful with this is assigning products to tasks and creating a virtual build construction sequence within Grasshopper (or other software).

And remember this is all being managed within the IFC OpenBIM framework, so if you already use software capable of importing the model data, it's a really powerful opportunity.  At present I'm only generating IFC4 models as there are significant improvements in this area (but also means significant differences from IFC2x3) but if existing software only using IFC2x3 can be used I'll look at enabling "equivalent" IFC2x3 where possible.

Look forward to hearing suggestions and requests.

Thursday, 23 May 2013

OpenBIM Scripting : Python IFC

Goswin posted to the Grasshopper forum a week or so ago about the possibility of scripting IFC data from Python (Rhino Python to be exact).  I hadn't had much of a chance to try Python to date, but I've tested GH Python today (Rhino python should work just the same).

You can download the sample GH def here.

Note there is also the possibility of using my c# libraries (from C#, VB.Net, Python or other compatible languages) outside of the Rhino/GH environment.  Get in touch if you would like to learn more.  Also not everything is enabled, but I can quickly do so.  Grasshopper is really a graphical programming language, so what is available there is certainly easy to provide in the API.

Wednesday, 27 February 2013

The End of Babel

We had two very successful OpenBIM evenings in Melbourne last week, at SIAL (RMIT) and Arup.  The first was recorded (although I'm going to re-record mine) and hopefully we can post soon.

Matt Rumbelow of Revitall did a fantastic job of handling most of the organization, and it was great to see him show this video to promote and explain IFC (from nearly 20 years ago). Many thanks to Stephen Hamil for posting this for us all to access.

It was great to meet Dr Thomas Liebich in person (after quite a few emails).  One of the improvements in IFC4 that I wasn't aware of (or had implemented) prior to his presentation was a new tessellated shape representation optimized with objective of smaller file sizes.  This is particularly useful given how many IFC files are generated with this primitive (useful enough for coordination or visualization) shape representation leading to bloated file sizes.

I've now implemented it, and here is a comparison.
This mesh sphere (with 4900 faces) is generated in IFC2x3 (file) and IFC4 (file).  IFC2x3 generated a file of 750kB and IFC4 214kB, an improvement of around 70%.  When amplified over many objects (acknowledging real files contain other data influencing overall size improvement) this will still have a significant effect.  If you want to test the generation of these models, the gh def is here.  Note you right click on the ssiBake component to toggle IFC2x3 or IFC4.

Tuesday, 29 January 2013

Melbourne OpenBIM Event

SIAL (Spatial information Architecture Laboratory) at RMIT University in Melbourne have been very generous to host an OpenBIM event on the evening of Monday the 18th February.  

It's a great privilege to announce that Dr Thomas Liebich is also in Melbourne at this time.  Thomas is the leader of the IFC Development team for Building Smart International based in Germany, and also a director of AEC3.

Thomas will present on the IFC standard (past, current and future) including the imminent release of IFC4 as an ISO standard.

I will also present on OpenBIM workflows and the research/development I've done in the past 3 years.  This will include insights into project application of generative BIM workflows from Grasshopper to Revit and Tekla.  I will also be discussing why current IFC implementations by BIM software vendors have only utilized IFC to a fraction of it's capability and potential.   I will also demonstrate benefits design teams can realize from collaboration of model sharing using IFC including Fabrication, Analysis and Design ( Structural, Energy, Egress, Building Regulation compliance), Facility Management etc.

Please rsvp if you'd like to attend to or contact me for more details.  We plan to start presentations at 6pm, but will be there from 5:30pm at the multi-purpose room of the Design Hub (Level 1).
Design Hub
RMIT University
150 Victoria Street (Corner of Swanston & Victoria Street)
Melbourne VIC 3001

Note there will be a second event hosted at Arup on the Wednesday evening.  More details to be posted shortly.

Friday, 18 January 2013

IFC - What It Is and Why You Should Care?

IFC - What It Is and Why You Should Care?

Christopher Zoog of HOK presented this great explanation to the New York City Revit User Group earlier this week.  HOK are certainly pushing and pursuing IFC in a number of impressive ways into their workflows, including pressure on software providers (such as myself).  They are not alone, but this provides some great insights into what is possible and what will be.

Thanks to Ryan Shultz for recording and enabling sharing.