So you’re new to COBie and a deadline is approaching, your favourite project BIM manager comes up to you a few hours before the deadline and tells you “We have to do dimensions.. on every element in the COBie drop. You have your dimensions ready right?”
Well there is no need to stress, as always there is potential for Dynamo to come to the rescue. I put this one together in Dynamo v1.3, but I have tested it in v2.x as well and it still works just fine, just a note though. If you save your old 1.3 graphs in 2.x, it’s now a 2.x graph forever.
The way that I approach the majority of my COBie work is through a 3D view and a schedule with a set of very hand filters, so I’ve continued down this route for my Dynamo graph and I start it off by getting all the elements in the active view – my 3D COBie view.
Just in case there is anything in the view that isn’t a family I’m getting the element type of each element, convert that value to a string and then filter the list based on the string “family”. This is because every family in the view will be prefixed with Family Type: whereas non-family objects will not.
Once we have the filtered list of families, we need to take the bounding box of each element, we do this with an Element.BoundingBox node. Using Spring Nodes, we next use Springs.Geometry.Extents to separate out each dimension individually.
The next step is a bit of simple math. I want to ensure that the length parameter is always longer than the width, so with a few if statements and some greater than and less than nodes, the top pair of nodes always provide the smaller number that will populate our width parameter and the lower set of nodes now provide the large number which will feed into our length.
Finally, we populate our parameters with the correct information. Note that your parameters must be set correctly to type parameters for this to work, if you have incorrectly made them instance parameters the script will not work but if you’re paying attention you’ll see that the hint is in the name of the parameter.
Now, don’t forget that with the COBie element data, you should be nominating dimensions inclusive of the maintenance requirements for that object, you could always add a little bit of extra fat to your dimensions, but I would highly recommend approaching COBie and BIM in general the right way and including spatial elements that indicate the overall dimensions including maintenance access similar to what is shown in the electrical switchboard below.
For those that want to get stared a bit quicker, I’ve provided my graph for download below
Download 1.4.0-FINAL-2015-11-04.jar, save it somewhere on your local machine. Don’t use spaces in the folder names when you save it or the tool won’t work properly, use underscores if you need a space.
There is even quite a comprehensive help document with information on configuring the BIMServer tool:
There is not a lot to do in the setup process though, I just made sure I was set to local host and that there were no conflicts with my port and then clicked start. After you click start, it will take a while to run through what it needs to do, when finished you’ll see a line that looks like:
02-10-2018 11:23:33 INFO org.bimserver.JarBimServer – Server started successfully
Now click the launch web browser button. It will take you to a window that looks like this:
For all the work that you are going to do from here on, you need to use Chrome or similar. Internet Explorerwill not work. Also note that if you log yourself out, you will need to log back in with your email address as the username, not your name.
Fill out this page with your details, you’re creating a user here. You will be able to login with these details again in the future. Because this is a web application, we could actually host this internally and have a permanent server setup, it’s just this workflow is using it as a web application hosted on your local machine.
Now that you have created your user and logged in, you will now be in a project browser. Select Project -> New Project
Fill out the details as required to create your project:
This provides essentially a bucket that you store all of your data. The next step is to create sub-projects to add your IFC files that you want to merge
To then upload a model to each sub-project, you need to use the “Checkin” option. It will take a little while to import the files depending on how complex they are.
My files are between 30 – 70mb each depending on the file. They take about 4-6mins to import using a laptop with an i7 6820 CPU
You’ll know that the files are importing because the IfcGeomServer will be using CPU:
You can view your model in the web browser to verify everything is in the correct location by clicking on the eye (grey = off, coloured = on)
For the merge, you literally just have to click the little arrow to the right of the top level project, and select download.
Depending on how big your models are, the problem might be if you have enough memory to perform the merge.
If the download doesn’t work, hit the back button or refresh the main page before you try and download. You need to see an eye on the top level project for the download to work.
You can verify your IFC file either by loading it into a new project within the BIM Server web application, or you can load it into Navisworks.
My resulting IFC file is 173mb which is exactly the sum of my four individual files.
If you want to try reduce the size of the IFC file, use the Solibri IFC Optimiser
If you’re finding yourself modelling more detailed models that reflect proposed fabrication or constructed works, Cesare Caoduro over at the BIM and Others blog has a great step by step tutorial on how to use Dynamo to generate Unistrut style pipework supports.
If you’re mechanical or electrical it would be quite easy to adapt the first portion of the script to generate the same type of supports for ductwork and cable trays.
In the last 6 to 18 months, the 3D collaboration and visualisation world has exploded with new software solutions to make life easier. The latest contender is from a startup based in Cambridge called Modelo. Modelo is a cloud based service that allows you to view 3D models that have been optimised for your web browser, giving you the ability to view models on almost any device with a data connection. Being a cloud based service, the recipient of your model doesn’t even need to own viewing software as the model is comes to you through a series of tube and viewed entirely on the line.
You can upload any Revit, SketchUp or Rhino file to Modelo, the original file is converted to an optimised format for viewing is generated. The original file is kept on the Modelo servers, however there is the option to delete the original file after the optimised file has been created.
Modelo is impressively fast for a browser based model viewing platform. You can share models with clients and the design team no matter where they’re located, allowing the team to annotate models and discuss through an online chat system.
It’s not collaboration in the league of Revizto, It’s collaboration made simple.
The commenting functionality is extremely well thought out, with ability to cut 3D sectional views or attach 2D images such as photos or plan views, comments can be kept private or flagged as ‘client ready’ so when you share your model on the client ready comments are displayed.
Camera locations are remembered in the comments as well, meaning that when a comment is selected, the model seamlessly flies around to the view the comment was created in so you see exactly what the person making the comment sees.
You can even adjust basic settings within the model, such as turning layers on and off (it uses Revit worksets) and even adjusting the location of the sun to change shadow detail in realtime. Of course with just simple sliders and the model not being located in any real space it’s a rough guide rather than daylight and shadowing simulation but the future potential is obviously there for Modelo.
Sharing a model is as easy as sharing a file in any cloud based hosting service, it’s as simple as a few clicks and share a link. When sharing a model you have options to restrict who can view the model and who can see model comments.
Sharing the model also has the ability to embed the model as an iframe, you may not realise this but iframes are not just something that can be embedded within websites, but with a plugin like iSpring or LiveWeb you can even embed the live models directly into a Powerpoint presentation.
The example above is a small part of a project that I’ve been working on for around 12 months now. The project involves a building structure on a bridge deck which has been constructed of spans of supertee structure, the bridge team working on the project were not working in Revit so that supertee structure that you’re seeing is actually a DWG file embedded within a Revit family which has come across quite nicely. To get the colours to come through, you will need to have materials applied to your modelled elements which in this instance I have applied at a piping system level.
On top of all the collaboration features, Modelo also gives you the ability to create a virtual reality model from a Revit model. Check out the transformation from Revit to VR in the video below, Eli from Modelo demonstrates just how easy it is, going from Revit to VR in 120 seconds.
All this is great, but what about this new fangled on the line technology? Won’t everything fall over when the data connection drops out? Well Modelo have this figured out, one the 3D model is loaded into your browser, Modelo can still be used to present regardless of if you have a data connection or not.
Finally, what does it cost? Well if you’re a personal user, it’s free. You’re limited to a single user, 5gb of storage and a maximum model upload size of 50mb. At the free tier you can still share and collaborate with others as well as create VR models. For small businesses of up to 10 users, Modelo will set you back $25 per user per month but you also get bumped 1tb of storage and model uploads of up to 1gb per model. If you need more than 10 licences you can contact Modelo for enterprise pricing as well.
I’ve only been using Modelo for a short while but I already love it. I actually prefer it to Autodesk’s web based offering. The simplicity and execution really hits the mark.
In Australia and likely elsewhere, a lot of people believe that BIM = Revit, however this is certainly not the case; there are many other software packages out there and if you need to collaborate with these software packages, chances are you will need to use IFC files.
IFC stands for Industry Foundation Class, it is a platform neutral file format that is not controlled by any of the software vendors.
For those that haven’t worked with IFC files before, there are a few things you need to keep in mind before you jump headlong into working on a project where IFC is used for collaboration. I will specifically be talking about my experiences working with IFC outputs from ArchiCAD.
You need time
Depending on the size of the project, the process of importing and IFC file into Revit could take a very long time. IFC imports can be anywhere from almost instant to a few days. You need to make sure that you clearly communicate this not just with your engineering team but with your architecture design team as well.
It’s very important to keep an open line of communication with your architect. Pick up the phone.. or more importantly answer the phone! Don’t let problems go unsolved sitting in someone’s inbox. 5 or 10 minutes spent on the phone with the architect might save hours of time for both of you down the track. They will be able to split large projects into smaller chunks or limit what elements are being exported from ArchiCAD so that the heavy lifting your hardware needs to perform is more manageable.
In all my testing, Revit appears to use 2 cores at most when importing IFC files. If you have a fast multi-core machine, you can set more than one file to import at a time. I highly recommend selecting each instance of Revit that you have open and setting the CPU affinity in task manager. This forces windows to spread the load across your CPU, maybe I’m imagining it but I found that if I didn’t do this all Revit processes seemed to share the same few cores; without doing this my 6 core/12 thread Xeon CPU sat at around 12% utilisation where as if I forced each instance of Revit to use certain cores I could push my CPU usage towards 80% utilisation. The problem you will face though is RAM. On some IFC files even 32gb is not enough.
For the Revit users on the team, push for the use of 2015 or newer; there really is no reason to dilly-dally in the comfort of older versions of the software. Revit 2015 brings to the table more efficient IFC imports through the Link IFC option. It is not a true IFC link, Revit actually converts the file to an RVT on the fly, in my testing using IFC Link instead of the open IFC method saves up to 60% on import times. The first iteration of architecture I received for the most recent project I’ve been working on took just on 3.5hrs to import a 286mb IFC file using Open -> Open IFC where as using Link IFC on the same file took only 24mins.
With some helpful splitting of models by the architecture team you can improve your workflows significantly.
I have worked on two hospital projects authored in ArchiCAD and we split the FF&E from the building fabric. The building fabric was always imported first and the FF&E flowed on afterward. We always requested up to date DWG exports of the floor plans that could be overlayed to reflect the FF&E as well.
You need DWG files
DWG files will play a very important role when working with IFC files, they will allow you to keep up to date quickly with furniture layouts but they’ll also help speed up your model. ArchiCAD seems to be able to handle higher polygon counts far better than Revit can which leads to glorious, highly detailed furniture models, trying to run a model with the 3D furniture models loaded in is going to slow you and your team down to a crawl. You don’t need to coordinate in 3D with a chair, but you may need to know where it is so you can place power and data outlets or other equipment. DWGs are the best way to do this.
Make sure you follow all the usual rules about DWG files. Keep them clean. Link them into their own host model, don’t insert. Never link or load them into your live model where possible. There is an article in the June 2015 AUGI magazine which goes into detail on best practice. Something they suggest that I’ve never tried before is to insert the DWG files into an *.RFA file and then stack the *.RFA files in the host model. If it means that it will be less problematic, go for it.
IFC files do not carry ceiling tile information
Don’t worry though, you asked for DWG files remember? Depending on what you want to show on your plans, you may need to link the DWG at certain heights so that they fall within the view range of your ceiling plan.
Again, follow best practice with linking in DWG files to a host model. Do not locate your RCP DWGs in your working model.
You need to understand coordinates
And you need to understand them well. When working with IFC exports from ArchiCAD, you will be working at the architect’s origin location, not shared coordinates. As much as it has probably been drummed into you to “always use shared coordinates” there is nothing actually wrong with using an origin to origin system.
In fact when importing an IFC file you don’t get a choice of how to bring the file in, Revit will automatically import at origin to origin. This poses a problem if you’re also collaborating with a civil team, but this is pretty easy to overcome, you just need to make sure that it’s part of your workflow.
You can’t host families to an imported IFC
Unless you’re going to draw hundreds or potentially thousands of reference plane, forget about using those face hosted families that you’ve become so accustomed to.
As you’re probably aware, all elements in Revit have a unique identifier, also known as an element id or global unique identifier (GUID). For whatever reason, Revit does not have a consistent way of applying GUIDs to imported IFC elements. This means that today the wall on ground level at grid intersection D5 might have an element id of 654321 and next week, it could be 751155 and as a result your hosted families will become orphaned. Or worse yet, maybe now a different wall from level 10 has picked up that original 654321 identifier and now your data outlets have been automatically moved to that new location by Revit.
At least this was the case in earlier versions of Revit. In newer versions of Revit you simply are not even allowed to host a family on an imported IFC face at all.
My advice would be to develop a suite of unhosted families. IFC is going to become more prevalent in the future especially as some governments around the world are mandating the use of IFC so you’re going to have to deal with it more in the future, you might as well be prepared.
Never ask the architect “Can’t you just do it in Revit?”
Unless you want the architect to ask “Well can’t you just do it in ArchiCAD MEP?” then don’t; and yes in case you were wondering there is an ArchiCAD MEP. Seriously, show a little respect. Sure Revit has a larger market share than ArchiCAD but that is not the point. BIM shouldn’t be and is not restricted to a single piece of software.
At the end of the day it’s not actually that hard to work with IFC files. Sure you have to think about things a little more but that’s OK because how boring would life be if every day was exactly the same? The most important thing if you’re on your way to higher levels of BIM is to make sure you get the rooms imported from the IFC file, that way you can still create MEP spaces and in turn perform all your MEP calcuations quite successfully. Otherwise if you’re still finding your feet in BIM and Revit is primarily a 3D documentation and coordination tool, working with IFC isn’t as hard as you might think it is.
I’m trying to use the same concepts to export all structural columns. The node you used (family types) only exports 1 type at the time.
Do you know if there’s a node that lets me export all types of the column family I use in the project?
The node that you want to use to do this is All Elements of Category which you need to feed with your selection from the Categories node.
I thought I would share an example of how I used this node to generate individual type marks for all the columns on the project based off the family name and the level that the column is located on.
Of course generating the mark parameter from the family name means that you need a fairly solid and consistent naming convention in place. You could also use other type parameters within the family, this is just the method that I chose as an example.
Before we get started, I have used the Revit 2015 Sample Structure Project.RVT file and renamed the family types like so
The overview of this particular example of the Dynamo Script looks something like this, so let’s step through what it is doing.
Getting started, we use our Categories node which we use to select our Structural Columns category. As mentioned earlier we feed that into the All Elements of Category node.
Stepping through the top row, our elements feed into the Element.GetParameterValueByName node, and we’re picking up the Base Level parameter.
We then pass through to the Level.Name parameter which gives us the level name as you see it in the project browser as a string, which in this case is “01 – Entry Level”. Using the String.Split node we split the string in half using a Code Block node and entering ” “; into the code block to denote the space.
Think of this as the same as the Text to Columns command in Excel.
This gives us a list that splits the level name into
“01” “-” “Entry” “Level”
From here, run the data through the List.Transpose node and then finally into the List.GetItemAtIndex node, here we need the row at line 0 so we use a Number node to define the index.
You can alternatively use a Code Block node and enter “0”; as the code which works the same as the Number node.
On the bottom row we are taking our family type name and pulling out the type itself from the string that is returned. Even though when scheduling the Type parameter returns just the type, the string that is actually returned from Dynamo is in the format of Family Type: CRC 450, Family Name: STR_CONCRETE_ROUND_COLUMN.
So following a similar sequence to the top row, we split the string down to what we want which is “CRC 450”, to do this we need to split the string twice; first by the colon ( : ) and then by the comma ( , ). As you can see in the screenshot we need to transpose the list and pull the data at each row twice to get what we’re after.
At the lower right corner there is a number generator. It is simply stepping from 1 to 200 in increments of one. Make sure to run the Number.Sequence node through the List.Transpose otherwise you will cause Dynamo to lock up while generating incredibly long number strings if you feed the sequence directly into the mark parameter.
Finally, we use a Code.Block node to concatenate the data we have pulled into a single string. The code block is simply a+b+c+d; which gives as four variables of the same name that we can feed the rest of our data into.
I have then created another list which consists of the Element ID and the string, we then finish up by selecting our string and populating the mark parameter as per my bi-directional Excel post.
Of course there are other options where you can generate the mark parameter from other type parameters in the family, I just chose to use the type name as the example this time around as I could show how you could break down a long string and the data you need from it.
Just imagine how much easier this could make your life when setting up a large multi-model, multi-discipline project. You setup a master control file that hosts your levels, grids and now also your scope boxes. Link in that master control file to each of your S+MEP models and pull in consistent scope boxes across the project.
I’ve been focusing a lot on documenting Navisworks procedures at work of late, for whatever reason Navisworks seems to be seen as some black magic witchcraft software package that no one wants to admit that they don’t entirely understand how to drive.
I sat in on a Navisworks session at the Revit Technology Conference last week just to see what others were up to and there was a surprisingly large turn out. The content presented was very much in line with my previous Navisworks articles and quite a few attendees seemed to be new to how Navis..works.
So based on that, I have two quick tips for Navisworks users, the first is selecting elements with a mouse click. When selecting elements in Navisworks, you might be selecting faces of elements or even the entire file rather than the whole element.
You can change what you select when clicking by heading to the Home tab on the ribbon and then heading to the Select & Search panel. Click on Select & Search and you will now see a drop down box.
You can then choose what you want to select with your mouse clicks. If you want to select individual elements, you will want to choose First Object.
To correctly export Revit parameters to Navisworks you need to make sure you have the option Convert element properties checked – by default this setting is turned off.
You can find this option in two places. The first is Navisworks itself. Head to the application menu and select options.
In the options dialogue box, in the left hand sidebar find File Reader and then select Revit from the list, then from the options in the right hand window, check Convert element properties.
You can also find this setting in the Navisworks exporter addin within Revit itself. Simply head to the Addins tab on the ribbon, then from the External Tools list choose Navisworks 201xNavisworks Settings and then checkConvert element properties
The difference between the information you get in Navisworks when you change this setting is chalk and cheese.
With the setting unchecked
With the setting checked
As you can see, checking this setting will export additional parameters and properties related to the element including material information, associated level, shared parameters and much more.
Having this information available within Navisworks will allow for more accurate selection sets to allow for better clash detection results as well as time lining and quantities.
Part #3 – Understanding Clash Types and Tolerances
One of the most misunderstood parts of Navisworks clash detection is the settings for the clash type and the tolerances. Using the model from my hydraulic pipe sizing article I have put together an example of the different clash detection types at varying tolerances. I’ve added some columns to the model which are progressively offset at 25mm intervals. You can clearly see that there are columns that clash, and columns that do not clash with the drainage pipework.
I’ve then created two selection sets as explained in the 2nd part of my clash detection series, one for columns and one for the drainage pipework. I have then created a series of clash detection rules that clash the columns selection set against the sanitary drainage selection set, the clash reports repeat at different intervals.
For the hard and hard conservative clash reports, I have selected tolerances of 10, 20 and 50mm and for the clearance clash report, I have selected tolerances of 20, 50 and 100mm. When running the clash reports, I get the following results:
As you can see, as you increase the hard clash tolerance, the clashes reduce and as you increase the clearance tolerance, the clashes increase.
Hard clashes are as the name implies – a hard clash but as you adjust the tolerance, the clash is ignored within that tolerance range. Allowing for a 50mm hard tolerance means that two items need to intersect or clash by 51mm or more before they are reported on. The clash shown below has been reported in our 10 and 20mm tolerance reports, but completely ignored in our 50mm report.
There is no denying that this is a clash, yet it’s not reported in the 50mm tolerance test at all.
Clearance clashes are the exact opposite of a hard clash. Clearance clash reports check elements for minimum clearance requirements. In a clearance clash test with a 50mm tolerance, two elements will need to be 50mm apart or closer to be reported as a clash. This is particularly useful when you want to allow additional clearance for pipe, cabletray or duct hangers and brackets that have not been modelled.
As you can see in the reported clash below, the two elements do not intersect at all, yet they are still reported as a clash due to the minimum clearance not being met.
But What if my Elements are smaller than my tolerance?
That’s actually an interesting question and can prove useful or troublesome in clash detection reports. I’ve added a 20mm gas pipe to my example model which in plan intersects with my 15mm cold water droppers that run to each basin. Again, you can clearly see that the newly added gas pipework clashes with the existing cold water pipework.
I’ve in turn created a series of clash tests, this time I have only created hard clash tests with tolerances of 0, 10, 20 and 50mm.
The reports give interesting results. Only the report with a 0mm tolerance has reported any clashes at all. Results like these have the chance to run you into trouble if the clashes can not be resolved on site – say for example a 65mm vent pipe rising inside a 90mm stud wall and a 32mm chilled water pipe running horizontally in the wall cavity; there is no way the two services will ever fit and yet they’re not reported in Navisworks.
These settings though can also be used to your advantage. For example if you have modelled all the hot and cold water pipework to the individual fixtures, you would never be expected to coordinate pipework of that size and how can you when the architect doesn’t model the studs within the walls? Using the tolerances to your advantage you can avoid having essentially false positive clashes reported.
Sets are a big part of clash detection in Navisworks, they can make the difference between a great clash report and one that is a waste of time. Simply clashing one model against another is not going to give you great results in most instances. Say for example you clash an architectural model against an electrical model, that’s all you need to do right? Wrong. Every electrical item that is recessed into either the wall or ceiling will be reported as a clash which this actually isn’t a clash, you end up with a time consuming administration overhead to manually approve clashes that shouldn’t have been reported on in the first place. This post will help you get your head around sets and how to make them work for you.
Selection sets are a group of objects selected either from the view window or from the selection tree window. You can manage sets from the sets window, if your sets window isn’t visible on screen, head to the View tab, and from the Windows button, select Set from the list.
The Sets window allows you to manage your search and selection sets within Navisworks.
Below is a description of each of the buttons in the Sets window.
Save Selection is used to save the current selection.
Save Search is used to save the current search.
New Folder allows you to create a new folder to group sets under.
Duplicate is used to create a copy of the saved items.
The Add Commentis used to add comments to the saved sets.
Delete is used to delet the selected set.
The Sort button is used to arrange the saved sets in alphabetical order.
The Import/Export button is used to import and export the saved sets.
When you run a search in the find items window, the search results will be highlighted in blue in the view window, as well as in the selection tree window.
When you select an object or a group of objects, they will be displayed in the Selection Inspector window along with their properties.
The Show Item button is used to view the selected object in the display window. The display will zoom in on the selected items when you click this button.
The Deselect button is used to remove objects from the selection inspector window.
The Export button will export the selected item to a *.CSV file.
Save Selection allows you to save the selected objects as a selection set.
Quick Properties Definitions allows you to add properties to the selected objects in the view window.
Now that I have explained the functions of each of the window elements, I’ll show you how to put them to use.
Using the Find Items window, you can search for elements based on specific information. In this instance, I have searched for all air terminals located on level 1. The find items window will allow you to search for elements based on the element properties which includes user parameters.
Once I have the correct elements selected based on my search, I can create a selection set in the Selection Inspector.
I now have a selection set named Level 3 – Air Terminals in my Navisworks model.
Following the same method, I have created a selection set of all the lights on level 3. In the next installment, I’ll explain tolerances and how they affect your clash results.