Automating COBie-UK 2012



@3Pinter Less calming, but a lot cleaner. Thanks for this.


My poor listing skills are letting me down again - any pointers on where I’m going wrong?

Edit1: Added .dyn & .xlsx
Edit2: This is COBie.Floor (Revit Levels).


try lacing on the elementgetparametervaluebyname set to longest (not sure here)
you’ll need more inputs on the list create node too, the same amount as the parameters.
if that doesn’t work you might want to go back to the spirograph so the lists for every column in excel will be made (even when empty)


Thanks @Marcel_Rijsmus,

Just finding it a bit hard to follow your instruction without any visuals, my apologies; I’m not at that level yet :sweat_smile:

This is about as elegant as I could write the graph, for today.

If I could write the Element.ID and Unique.ID to either call from the code block or map neatly into a single Data.ExportExcel node I would be a lot happier.

I looked at this post, but I couldn’t seem to find the solution I believe I need.

But, its getting the right results:


you’re getting the hang of it
:+1: looks OK to me
now fill in the missing data in excel
keep in mind that the data source (the elements) has its own order
to keep that order always use the same source gathering your data
in other words the transpose node should be used only once so id’s and values are on the same row in excel


ermmm why aren’t you lacing the element.GetParameterValueByName by cross product? (right click that node, go to lacing, choose cross product. … that will change the bottom right value to xxx instead of auto.) no need for using levels @L1 … and no need to transpose the list …

nice and tidy.


Literally just learned about this, still don’t fully understand, but am reading up on it :+1:

“Cross Product Lacing connects each item in one list to all items in the other list. Be careful when using this setting. Large datasets can cause performance issues and cause Dynamo to crash altogether. The number of results is the number of inputs squared”

I’ll keep an eye on this, as COBie.Component can easily get into the high thousands on larger jobs. Not sure if that is considered a “large dataset”.

Can we make it a bit cleaner? Can we refactor to remove these nodes?

For example, can we use a list.insert (ElementId,0) and list.insert (UniqueId, 1) to iterate over all the elements, inserting them at the beginning of the list.

Took a first run at it here, but still learning about list lacing, levels etc.

All out of order again:


notice the difference in list structures. top one is how it should be before writing to excel


I can see the logic there @Marcel_Rijsmus, can’t see how i should apply to my graph though :face_with_monocle:


Super simple approach in the end:


now that you got rid of the spirograph it became more complicated
maybe a transpose node before a list create node and one after it will do the trick

if you use the node element.parameters you will find the Id i think.
so that one can go to the code block
you could try to get the UniqueId by using Revit.ElementSelectorById(Id) statement so it can move to the codeblock that has all parameter names aswell
I dont have Revit here so i can’t test


Much better though, thank you for all your help so far!

I would like to attempt this :+1:, I’ll have to study some python/design script first, so it might be a bit further down the line.


its super simple
in the code block just start typing you’'ll get a dropdown list with the correct spelling
its designscript btw.
DesignScriptDocumentation.pdf (705.5 KB)
designscript-final.pdf (1.5 MB)
DesignScriptGuide.pdf (3.7 MB)


Have tidied up and got rid of my Spirographs ':clap:

Any of the errors on the graph are reading from empty parameters in the model. I’m going to begin to run tests on it in a proper model set soon.



Facility & Levels:

:white_check_mark: COBie.Facility [Revit Project Information]
:white_check_mark: COBie.Floor [Revit Levels]

Rooms, Spaces & Zone:

:white_check_mark: COBie.Space [Revit Rooms (Architecture)]
:x: COBie.Space [Revit Spaces (MEP)]

:x: COBie.Zones [The only way I have handled this is from the Autodesk Cobie Extension for Revit - but I will do some research to see if this is possible from Dynamo - although, this may be a “just to see if I can” task]

Categories of Type & Component:

If we look at this from a category point of view (I believe it easier this way when reviewing all Types and Components in a project): If there is a better way please tell me!

:white_check_mark: COBie.Type [Casework Category]
:white_check_mark: COBie.Component [Casework Category]

:x:COBie.Type [Ceilings Category]
:x:COBie.Component [Ceilings Category]
Not normally included as per the NBIMs exclusions list (but we’ll run with it for now as its been requested of me from Clients etc in the past, and was protested as a Room Attribute :man_shrugging:).

:x:COBie.Type [Curtain Mullion Category]
:x:COBie.Component [Curtain Mullion Category]
:x:COBie.Type [Curtain Panel Category]
:x:COBie.Component [Curtain Panel Category]
:x:COBie.Type [Curtain System Category]
:x:COBie.Component [Curtain System Category]

etc etc… will update this post at a later date.