Is on next week, and I'm really excited about returning to London to attend and present at this event. There's an amazing line up of speakers and the opportunity to speak with the staff attending makes this an event not to be missed. Thanks to for all the effort to organize this. It's 7 years ago that I last attended Shape To Fabrication, number 3 at Metropolitan Works in 2009.
I'd been promoting and publicly releasing the Rhino plugin online that I'd been working on in house at, known as SSI (Smart Structural Interpreter Connector to GSA). Bob McNeel suggested pretty close to the event that I should present them at Shape to Fabrication.
(my colleague at Expedition) was already a confirmed speaker on the, and at late notice he was generous enough to let me share the speaking slot to present the rhino plugins. This event quickly increased awareness, triggered a launching pad for Geometry Gym as a business. A meeting for clients with McNeel staff (including Carlos Perez and David Rutten) was arranged soon after by and soon afterwards I had my first paying client and left Expedition to start full time on the development and support of the plugins. If you'd like to see what I presented, it was posted to (but with no commentary).
The tools have come a long way and it's great to have the chance to get back to this fantastic event. A few years back, I advanced on a plugin to generate structural analysis data. For a few different reasons, this stalled and didn't work as successfully as I would have liked. Late last year I started work again on the ability to convert Structural Analysis files into SCIA, and now I've enabled the same code into a revived Grasshopper plugin. It's now available from At present it can generate beam elements with releases, restraints etc.
I will be looking to enable loads, area elements and other features that users might request so please get in touch. Here's a sample to start with. The core c# classes developed by Geometry Gym to import and construct have been released as an Open Source project under the license. The source code is being hosted on GitHub, I've uploaded the compiled dll to Note this isn't the entire IFC code base that Geometry Gym has developed, the interfaces to, 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, and you can also refer to the Building Smart examples at (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 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, 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 (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. It's an honour to have the work I've done as an early adopter of IFC4 recognized. With the library of c# code that I have for importing and exporting IFC4, I've been working on a project for Building Smart to generate sample IFC4 files. These are small unit tests that highlight a particular aspect (or comparison) of the schema, concentrating on new features and aspects of IFC4. This includes shape representations such as nurbs and triangulated face sets, cardinal points, reinforcing and new standard case classes.
Now that the bulk of the project has been set, it should be easy to add many more. Here's an introduction to the project. It's using my c# library as a means to generate and export the IFC files, but the scripting aspect of it is opensource on github, you can access it here. What's nice with the scripting approach to generating the examples is that examples can be kept in a consistent style, with common changes swept through them. The scripts can also be built across different schema (including IFC2x3, IFC4 and IFC4 addendum 1) although I still need to enable some exceptions to be thrown when invalid classes are called on. It's been a good opportunity to polish my library as an API, and it also serves as some good examples of how to use my c# library as an API. If you'd like to get involved or test this, please don't hesitate to contact me.
And if you have more requests/suggestions for further examples, then do let Building Smart or myself know. I've been asked many times about a manual for the Geometry Gym plugins, particularly Grasshopper to Revit. I've hesitated a few times.
The plugins are still evolving fairly rapidly and I've been reluctant to spend time on something that might quickly be irrelevant. I also find this by David quite relevant. And there's also the question about what format help documentation should be in and how it could be contributed to by a wider user group. My opinion has been that the best format for user guidance should be example scripts (which is why I've populated my blog with lots of short examples. But this can be hard to search and find, and maintaining lots of files takes some effort.
I've recently been using Git (and in particular GitHub) more and more when working with others on projects (and for my own code management). So I'm going to try hosting an example script of the Grasshopper to Revit functionality there. If I save it as a.ghx (which is xml) that means it can be versioned and tracked, branched and a wider group of users can participate in it (even if it's just subscribing to updates). I do intend to also note upcoming features etc in the definitions. I'm seeking out users (and potential users) for a new workflow for this grasshopper plugin. For anyone that doesn't know Karamba, it's a structural analysis plugin for Grasshopper.
GeometryGym has developed various plugins to allow generation of structural analysis data within Grasshopper, but then has the overhead of having to export the data out of Grasshopper to the external software, and then import back the results. Karamba works as a solver entirely within Grasshopper, and should perform faster as a result. But more traditional software has advantages of being proven and trusted, and often project requirements mandate particular software or certifications for detailed design.
At present, many users are generating the Karamba model for preliminary design, but then rebuilding the model using Geometry Gym equivalent components to export the model out for refined analysis or advanced assessment. I've been discussing with the Karamba developer Clemens (and advancing on) a utility to extract the Karamba Structural Analysis model so that it could be verified or advanced in alternative commercial structural analysis software. I know that Karamba can presently export to RSTAB, but I'm working on enabling this further for a wider range of software. The exporter for Karamba would save users on generating, maintaining and coordinating multiple components if desired to use the data downstream. At least initially the primary options are the software that I have developed plugins for. This includes, and hopefully shortly. The way this exporter would work also means that any structural analysis software recognizing the structural analysis aspects of IFC could also be utilized.
This would permit verification of the model results, and often projects have mandates on using specific (often certified) software for detailed design calculations. If you're interested in participating in the early testing and advancing of this feature, please get in touch. Also refer to this for discussion and details. I was very fortunate last week to be able to attend the McNeel event for. It was an amazing event and fantastic to be able to meet in person so many of the Rhino3d community in person for the first time. It was also great to see many others that I have met before again.
I'd like to publically thank McNeel Europe for arranging such a wonderful meeting, and can only hope it happens again in the near future. I took the opportunity during this very brief venture back to Europe to meet with a couple of clients (apologies to those that I missed) and the feedback had one common thread. The IFC functionality for OpenBIM export from Grasshopper has great functionality, but was confusing to new (and experienced) users as to how to put together the components. Given that the vast majority of the users are transferring Grasshopper to Revit, I've decided to develop a new front end for the plugin using Revit phrases, terms, conventions and relationships. This should make it a lot more intuitive for new and experienced users alike. In the back, it's still doing the same as the existing components. It's just I can condense 2 or 3 IFC components into 1 specific revit version, and a lot of the 'optional' or additional features of IFC that don't really relate to Revit can be masked.
Here's a screen capture of the initial components I've got working in the past 3 days. A lot more should quickly follow. If you'd like to be involved in the early testing, or request particular functionality, then please get in touch. Any feedback welcome. Initially these components will be included into the existing IFC plugin, but I plan to spin it out into it's own file some time soon. It should be noted that the IFC generated can still potentially be used with other software (although I advise to use IFC4 for it's new features and this has barely been implemented by anyone). I will also consider other application specific components if there is sufficient demand.
One other strong theme of the meeting was Rhino for Mac, which will be available 'soon'. After the session by Steve Baer about developing plugins for Rhino Mac, we sat and tested with a compiled version of the IFC importer. It loaded and the commands were available (but not quite executing with some user input not collected) but we can be confident it might be something users can start testing very 'soon' (even if not officially supported initially). I've been having a few requests recently about getting Rhino/Grasshopper geometry into Revit, and haven't really posted many examples of what is (and isn't) possible so thought I'd add some new examples to the blog. Some of this functionality has been available a while, but I've refined it recently so update rhino and revit plugins from With the release of 2015, Revit has enabled some more generic solid generating functionality. At the moment it enables plane faceted objects (with straight edges) and extrusions.
I've been putting forward requests for further improvements (including masking of internal edges with co-planar faces adjacent) and if more users do so, the faster we'll see this materialize. Grasshopper is a fantastic tool for projects such as sports stadia, so here's a slightly simplistic example of generating some seating tiers. You can use the IfcFacetedBrep shape representation with a categorization of an IfcSlab object (as a floor). Here's an image of the resulting Revit import. Note that it's not really possible to edit the object downstream (although I am working on improvements for updating the model).
It would also be really great to be able to fix walls to the underside of the objects. To facilitate the ability to do something similar, it is possible to generate a revit extruded roof (subject to various constraints on what revit can do with this). You'll find an example of this on the inner ledge. Just note when using a stepped shape, you need to be careful that revit doesn't have thick roof types loaded in the project/template (but you need at least one).
Voronoi Rhino Download For Mac
Revit has a bug that crashes if the roof is generated with a proportionally thick type. You can test with this blank project (download from ). Here's the Grasshopper (Rhino document units should be mm) and here's the resulting IFC.
So this works for faceted objects with plane faces and straight edges. If your shapes don't meet this criteria, one of the few options remaining for the time being is to import a SAT (or DWG) into a generic model family.
My tools can automate this process, allowing automation of categorization and assignment of parameters/properties. This example is a little crude, but hopefully it starts to demonstrate how powerful IFC might be if it was implemented to it's existing capability. Here's a video demonstration which was part of my presentation at the Revit Technology Conference earlier in the year in Melbourne. Sorry for the audio quality. It demonstrates round tripping a revit family through IFC, preserving types and dimensional constraints. At this point in time I've only implemented specific attributes for this prototype, but certainly I am keen to advance this much further if the demand is there. It's nice to be able to announce a new plugin I've been developing for Rhino v5 and Grasshopper to import/export files.
Lots of aspects to implement and improve on, but I've advanced to a state where more public feedback and suggestions will help inform and shape this tool. In rhino, the functionality is initially to import gbXML.
The identified data is arranged into a hierarchical layer with color contouring by zones and construction types. There's also a tree viewer to inspect the gbXML entities and relationships.
If you select a node in the tree viewer, the associated rhino object will be selected. Try rhino commands ggImportgbXML and gggbXMLTreeView. The in Perth last year was a fantastic event, attracting presenters and attendees of a wide spectrum within the AEC industry. Having been caught in the rain and cold (not really expected in Perth) earlier that week, my voice nearly disappeared (apologies, but the audio captured isn't too bad). The presentation above primarily demonstrates the utilization of to turn into BIM authoring software (and then receiving and utilizing the models in other software such as Revit or Tekla).
It aims to motivate software users (of all BIM enabled software) to demand more of the IFC implementation of their software, and hopefully shows a capability of IFC to convey intelligent models capable to use downstream in other software. Congratulations and thanks to BIM Day Out committee for their work in arranging BIM Day Out, looking forward to many more of these events in the near future. 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. 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. 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.
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 and which retain parametric geometry. You can download this IFC file.
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 of IFC software do not require the implementation of 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 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,000002); to something like #3674= IFCSWEPTDISKSOLID(#3675,40.0,$,0.0,000002); Download the revised file. 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 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. 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.
( 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 ). 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. 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. I was born in Australia and raised on a farm near the coast in South West Victoria.
I studied a double degree in Structural Engineering and Computer Science at the University of Melbourne. I joined Connell Wagner (now Aurecon) as a Graduate, and spent four years there working on Eureka Tower (300m tall), the 2006 Melbourne Cricket Ground Redevelopment and Wembley Stadium roof and arch. In 2005, I decided to leave for London where I joined Expedition. A unique design firm with challenging and interesting projects. They introduced me to the wonderful software this is Rhino3d. Projects included Supreme Engineering Award recipients Infinity Bridge and 2012 Velodrome. This formed the basis and test platforms for developing the Geometry Gym BIM software.
Are you sure this is the most recent definition? Many of the scaled/filleted curves are invalid, resulting in a failed loft. Only 53 of the 100 lofts actually worked, so there's no way for me to troubleshoot any further. You may want to look into using instead of Weaverbird.
Unfortunately, it looks like the website that hosts Cocoon is currently offline, so I'm not sure where you'd be able to get the installer. EDIT: Ok, I managed to cull the invalid curves and see how your definition worked.
You definitely want to be using cocoon instead of WB mesh thicken. I actually still had a copy of the, but you might also have to download plankton to be able to use some of the components (I'm not sure which version you need).
The actual website for cocoon had some interesting example files but since the site is offline you can't access them. A thread on the website for grasshopper has a few example files which should hopefully be enough for you to figure out how to use it.
A hint regarding how to use cocoon is to use a range of numbers and a graph mapper to make the curve charge vary along the length of the curve (this will give you round corners at each of the vertices).