Showing posts with label BIM. Show all posts
Showing posts with label BIM. Show all posts

Wednesday, 10 December 2014

IfcScript Introduction

It's an honour to have the work I've done as an early adopter of IFC4 recognized by Building Smart International.

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.  https://github.com/BuildingSMART/IfcScript

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.

Friday, 18 July 2014

Building Smart International Award


Any GeomGym users out there using the IFC tools (and of course anyone using OpenBIM) are encouraged to enter into this award scheme from Building Smart International.
More details at http://www.buildingsmart.org/bsi-award-2014

Sunday, 9 February 2014

BIMDayOut IFC4: The Shape of Things to Come





The BIM Day Out 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 OpenBIM IFC to turn Grasshopper 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.

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 http://mdradvies.blogspot.nl/2013/10/ifc-for-content.html 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 http://www.nationalbimlibrary.com/generic/exposed-cistern
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. http://www.geometrygym.com/downloads

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. http://www.buildingsmart-tech.org/future-extensions/ifc-future-extensions/project-proposals/pa-1-parametric  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.

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 (http://www.geometrygym.com/downloads ) 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.

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 jonm@geometrygym.com 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.


Thursday, 27 September 2012

Grasshopper to Vasari

Thanks to Lilli Smith (and her Autodesk Colleagues) for arranging a very interesting Vasari Webinar discussing some of the different developments to link Grasshopper to Vasari.

The panelists were myself demonstrating the OpenBIM approach using IFC4, Hiroshi Jacobs presenting Chameleon, Tim Meador demonstrating HummingBird and Nathan Miller showing his OpenNurbs importer.

If you missed it, you can watch it here:
Or the individual playlists are here.

I'm sure this is the start of the discussions, so keep an eye on the Vasari and Grasshopper forums.




Tuesday, 18 September 2012

IFC Importer for VASARI

Vasari Beta1 was released a couple of weeks ago, and last week the SDK that I set about adjusting my Revit IFC importing code for.

I've just uploaded the first public installer, http://www.geometrygym.com/downloads

Here's an example model to start testing.
Grasshopper Definition   IFC File

You can nominate site longitude and latitude and also building storey levels.  Conceptual masses can also be nominated, this example uses a loft/sectioned spine.

There's lots more improvements and features to add, let me know what you'd like to see and I'll try to prioritize it.


Saturday, 11 August 2012

GH to Archicad (OpenBIM IFC)

With the new release of Archicad v16, it permits me the opportunity to download and test improvements made to IFC support.  This is still in progress, and initially I was a little disappointed, but revisiting a single test case for Constructive Solid Geometry (CSG) or Solid Element Operation as it might be known to Archicad users leads me to confidence and optimism about IFC exchange with Archicad.

So here's the test case that has me excited.  I posted nearly 2 years ago about most software reverting to "coordination" IFC models, primarily faceted breps (meshed surfaces).  Possibly this is acceptable for visualization and clash detection (but not efficiently) but if you want smart models that can be enhanced and edited down stream, IFC is derived from STEP and capable of many advanced and accurate shape representations.  This is also explained in my Technical Paper from last year.

So in two years I've still had no success in other software understanding the CSG steps that can define a gothic arch roof, until now.  I was thrilled to see Archicad v16 import this accurately, which might enable some really exciting project work flows from Grasshopper.  Perspective view doesn't seem to render anything, but isometric does (maybe someone can explain why).



Here's the IFC file if you want to test yourself, and here's the Grasshopper Definition.

The first test I ran also worked quite well.  Archicad doesn't have nurbs (at least yet), so I converted the nurbs curves for the Klein Building slabs into polycurves.  IFC file, Grasshopper Def



Now for some tests with scope for improvement. I tried to import an IFC file with swept beams.  It was pleasing to see the straight beam generate accurate edit handles, but none of the curved beams worked.  IFC4 does not appear to developed, so useful improvements such as cardinal points are not accessible.  IFC file, Grasshopper Def



And the final test for the time being, the waffle structure.  Slabs come in fine, seems to be an orientation issue for the walls.  Geometry looks accurate otherwise.  IFC file, Grasshopper Def



I'm hoping to do some more tests very soon.  If you've comments, suggestions or questions, I look forward to hearing them.

Tuesday, 19 June 2012

Tekla exchange Grasshopper/Rhino

The Geometry Gym Grasshopper/Rhino plugin to generate and import Tekla model data will be presented by RhinoForYou and Decode at the France Tekla User Days in Paris and Toulouse.

Decode will be explaining the use of the connector to generate fabrication data from Grasshopper for the impressive Canopée des Halles de Paris project.  Hopefully I can post details on this here soon for those unable to attend.

I recorded a couple of youTube videos to further explain graphical programming in Grasshopper for Tekla users, and outline fabrication model attributes presently available including assemblies, welds, bolts and cut parts and planes. (I will gladly accept requests for more)


Wembley Arch Grasshopper File  Twisting Tower Grasshopper File

Wednesday, 13 June 2012

IFC inclusive of Analytical Model

I'm pleased to have the opportunity to implement something I've discussed with quite a few Architectural offices in the past.  Coordination and duplication of models is a really time consuming aspect of working in a Design Team.  And despite the best efforts to date, success has been limited in sharing or using a single model for cross purposes.  Say an architecture office has prepared a great 3d model of a project, and then asked the Structural Engineer to analyze it and provide advice.

Structural Analysis models are quite fussy, and are only an approximation (to some extent) of the physical entities it represents.  An analytical model requires clean "junctions" or in effect ends of members tied into "nodes"  to not have unsupported parts that don't participate in the frame stiffness.  The physical reality has junctions where members are "cut" apart from the junction, or offset locations (say purlins sitting on top of a joist) and a BIM model should represent the physical situation as accurately as possible.  Because a structural analysis model is an approximation, care is not usually take to "precisely" replicate element position.  So the Structural engineering team leading the modelling process is also quite often not successful.

The advancement in software such as Revit (release 2012) had particular emphasis on an intelligent analytical representation trying to detect the physical situation.  I've been planning on implementing something similar, and now have a commercial user prepared to embrace this model transfer.  Note there are other aspects such as responsibility and other legalities that mean team work and close working relationships are essential to this process.

If engineering makes you a little squirmish, look away now.  This isn't really for the faint hearted.  But it has the potential to save hours and hours of duplicated effort or coordination if used successfully.  I can't wave a wand and make technical requirements of a model disappear, but I (and other software developers) can make them as easy as possible to incorporate into the process.



The attached model is a simple and crude truss.  The vertical member is physically modelled short of the chords.  The IFC components that define the analytical model are input with a "sphere radius" to search for other members terminating in this region.  An eccentricity or end offset is created joining the member to the other elements in the analytical model.  Mathematical stability and intended behaviour without explicitly having to identify the end offsets, demonstrated here in SAP2000 import.



The IFC model contains physical and analytical representations.  I hope that the "OpenBIM" structural analysis software soon recognizes this aspect of IFC.  To enable the Structural Engineering office to open the IFC model, I've developed an importer for SAP2000 (I'm happy to do similar for any of the other structural analysis software I've developed links to).  Attributes including constraints, releases, loads, material and profiles can all be conveyed.

This is just the beginning, lots more to implement on this process.  Note IFC4 has some subtle improvements that means I'm primarily targeting this version of IFC.
To try yourself, update plugin from http://www.geometrygym.com/downloads
Here's the Grasshopper model, and IFC file.  If you're interested in a Structural Analysis importer (Such as to SAP2000), please get in touch.


Wednesday, 6 June 2012

Curved Beams Grasshopper to Revit

It's been a little while since the last update, but I have been working on some subtle and not so subtle improvements.

The primary new feature is the ability to generate and import to Revit beams with curvature (arc and splines).  This includes preservation of cardinal points.  For the time being it works with IFC4, I will enable IFC2x3 initially with mid cardinal point.  At present the axis curve must be planar, but if you need non-planar I'll take a look at it.



If you look carefully at the image (or try for yourself the models), then you'll see Revit alters the end details at the junction.  These elements using the IfcSurfaceCurveSweptAreaSolid shape representation, which is totally under utilized in my opinion.  I've seen some client models where IFC is not practical to use due to bloated file size from faceted brep shape representations of these parts.

Here's the Grasshopper file, and here's the IFC file.

Monday, 28 May 2012

Generative Adaptive Component

Adapative components has been one of the common threads amongst those pursuing model transfer from Grasshopper to Revit (refer here).  So not wanting to miss out, I decided to start to start implementing this (an extension of the blog post from Nathan Millers great blog The Proving Ground).

I've enabled generation of the adaptive component itself from Grasshopper (where as to date the others have provided means of locating existing adaptive components).  This model demonstrates that IFC can exchange topology (or connectivity) of elements including vertex and edges of faces, as well as parametric locations (such as position on curve).  Note then that manually editing (or inserting) of the adaptive component, these relationships are retained.



Here's the Grasshopper model, and here's the IFC file.

One of the common criticisms of IFC is that it's a "lowest common denominator" model format, so you can't exchange parametrics or model specific attributes and have to revert to APIs.  This only has to be demonstrated in one circumstance to hold true, but doesn't mean it to be true in all circumstances.  I hope that some of the recent work I've shown demonstrates that IFC is capable of pretty advanced model transfer.  I read an interesting tweet quote from a recent BIM conference that said "If you can't get IFC to work maybe your vendor doesn't want it too", and it is important for software vendors to request and demand improvements to the IFC format for areas they have identified as a short coming.  

One of the IFC short comings I worked around in this example is how to nominate the Adapative Point locations for instance insertion.  I decided at the moment to apply the type (family) to the instance, and use a polyline shape representation to convey the point locations.  Of course a possible desired improvement for IFC might be a more specific description of this type of entity, and I'm sure there are many more that can help make this format be used more successfully.

Friday, 18 May 2012

Grasshopper to Vasari (via Revit for the time being)

I've started developing more aspects of conceptual mass family development primarily extruded form.  Others will follow ASAP like blends (http://thebuildingcoder.typepad.com/blog/2009/07/revit-form-creation-api.html is a good reference for forms that can be created from the API and some of the restrictions on the defining geometry).  I'd like to highlight and publicly thank Jeremy for the excellent resource his blog provides, it's been instrumental in me getting my addon up and running.

I also implemented an aggregation of buildings associated to a site as a conceptual family.  This then opens up an easier model transfer to Vasari.  Note I have started trying to implement a revit addon to generate conceptual IFC files directly, but some technical details (ie a crash I am yet to resolve) in initiating the import is preventing thus far.



So, here's the process for the time being.  Bake the IFC file from this Grasshopper definition (or download ifc file here).  Then import the IFC into Revit using the GeomGym addon.  This will create a revit conceptual family in the same folder as the model (or download here).  You can then import this into Vasari and run analysis such as the virtual wind tunnel.

Look forward to hearing suggestions and requests for improvements.

EDIT 21st September 2012  Note now there is a Vasari addon for Beta1 that directly imports IFC files.  Note the above example generates an individual mass family element for each building (there is not means to generate an inplace family object from Revit API).  Here's a Grasshopper file where there is a single site family and here's the resulting IFC file (but this isn't as fast to generate as I might expect so patience will help).

Thursday, 10 May 2012

IFC Import Revit - Walls

Todays build (http://www.geometrygym.com/downloads) of the Rhino and Revit plugins includes improvements related to wall model exchange.  This includes creation of families where they are not already loaded.

I initially started with testing the wall path curve as a NURBS (spline) curve, but Revit (2012) doesn't seem to permit spline paths so I used my BullAnt component to approximate it with a polycurve of arcs.

For the moment, the wall path curve has to be on the centroid (I'll look to enable face and offset locations) and I'll have to investigate whether I can enable my nurbs to polycurve routine using openNurbs outside of Rhino.

Look forward to hearing feedback and comments.  Openings are one of the items next on my agenda.  Improvements that come to mind include locking top/bottom to levels and I'm sure users can propose many more.
Grasshopper Model,  IFC File

Tuesday, 8 May 2012

GH to Revit, Families & Cardinal Points

I've been implementing many aspects of IFC model data that facilitate the "family" based approach consistent with Revit.

You'll notice many new components for Slabs, Walls, Columns, Beams and framing members to generate a "Type" (equivalent to a family in Revit) and then "standard case" components to generate objects based on that family.

This can include cardinal (or insertion) point locations (such as Top-Mid or bottom right) as this information can be conveyed in IFC4 (make sure you right click on the ssiBake button to enable this).  Here's the example model in the image above.  Plugins should be updated from http://www.geometrygym.com/downloads

If you use IFC2x3 the location of the beams should still be accurate, but a default "mid" insertion point will be used.

Next on the agenda (other than improving and expanding on the above) are aspects such as curtain walls, grids and grid relative locations.  If you've particular requests or suggestions, I look forward to hearing them.

Tuesday, 24 April 2012

NURBS GH to Revit

Another example model for you to test (Inspired by Tim Meador's post on the Grasshopper Forum).  I've been enabling nurbs profile/perimeter exchange using the IFC2x4 format (status Candidate Release, anticipated to be approved late this year).



Here's the example Grasshopper model, and the IFC file.  You need to right click on the SSIBake component and check the IFC2x4 option. This should be sticky then for the model (I need to check why it sometimes reverts when reopening the model).

Note I'm yet to find other viewers/software that can interact with this version of IFC, so for the time being it's only useful for my Rhino/Revit developments.  I'm still implementing other aspects of IFC2x4 (which might still have subtle changes), so be careful as exported file might not always open in the future.  I'm presently implementing advanced breps, that should permit much smaller IFC file sizes (and avoid the implications of meshing objects).  Look forward to hearing comments and suggestions.

Friday, 13 April 2012

GeomGym Revit Addon importing IFC

Here's some sample models and an explanation/demonstration of the work I'm advancing to import IFC models into Revit.



You can test for yourself.  Here's the grasshopper files used in the demonstration and some example IFC output..  You need to download the latest plugins from http://www.geometrygym.com/downloads

Note I've only been working on the Revit addon over a period of 3 months compared to 22 months for the Rhino plugin (although I can reuse 80 to 90% of the same code) so I still need to enable many aspects of IFC file importing.  But I will prioritize any example models and requests that come from users, so please don't hesitate to ask.  I look forward to hearing from you.

Wednesday, 14 March 2012

GeomGym IFC API

I've recently been considering and developing means of interacting directly to my IFC c# assembly without necessarily using my Grasshopper addon components (which in effect is a graphical wrapper to my assembly) or Rhino plugin commands.  This can enable academic and 3rd party interaction with my developments to generate IFCmodel files in a more direct manner.

Still early days, but already quite a powerful capability.  The example can be tried yourself if you've installed and licensed my IFC plugin.  You might have to alter the path to the referenced assembly in my plugin folder.    Grasshopper Model Download 



Scripting in Grasshopper is difficult for debugging and developing when there's more than a few lines of code, so you can reference the .dll from visual studio projects for Rhino/Grasshopper addons.  There's also means to execute my code outside of the Rhino/Grasshopper environment based on OpenNurbs (as my Revit Addon is doing).  Get in touch if you want to register interest, learn more or request particular features to be enabled.

Wednesday, 22 February 2012

Rhino/Grasshopper MEP Piping

The question arose on the Rhino forum today about exporting pipe objects into Rhino.  Refer here

I'm interested to see how Revit MEP handles IFC files (other than faceted brep/mesh) shape representations, as it can make the file much more compact and efficient.  Fitting such as elbows/bends can cause large problems if these "coordination" shape representations are used.



Here's my example model that you can download as Grasshopper model or IFC file to test yourself.  I look forward to hearing the results.