Automating COBie-UK 2012



Hello again @Mark.Ackerley - Yeah its a bit nasty alright, and knowledge on listing has failed me before - if you or anyone else in the forum has any suggestions on how to make it more efficient, I’d be very much open to it :slight_smile:

I’m listing out COBie Parameters, and placing them in specific rows on an excel that I would like to use to edit, manage etc. then push back into Revit.



awwww your spiro calmed me… :sunglasses:

Below what @Mark.Ackerley suggested.


for list actions look here (a bit old)



Maybe I should note that this is the export list - hence its structure in a specific order as it populates a very specific colour coded excel, I was planning to use UniqueId or ElementId to match and map back in from excel, but haven’t got to look at that just yet.



I obviously know nothing about your graph, just wondered if you could use your excel that you’re getting them from to define the parameters… it’s cross lacing not longest…

Edit: Unfortunately this is much less pretty :frowning:
Edit 2: I feel that getting lots of COBie info on this forum will help people :slight_smile:

Cubicle Adjacency Study by Optimo - Need Help with the Fitness Function

@Marcel_Rijsmus thanks for this. I need it.


Now I get you. Yes, this will help :sunglasses:


thinking ahead this might help you later in the process
the uniqueId values can come from excel
to get it from elements (beit type or instance) use Element.UniqueId
to get to elements use Revit.ElementSelector.ByUniqueId(Id, true)


Good idea @Mark.Ackerley :raised_hands:t3:

I have changed the title this thread to “Automating COBie-UK 2012”. I’ll keep posting my amendments, and updates I make, in this thread for all to follow, and I’ll add a bunch of annotation to explain the rationale behind the decisions I’m making in the graph, feel free to chip in if you’re familiar with COBie.

I can share my experience of COBie so far (one of my best decisions was to do a course last year with two of the authors of the recent Delivering COBie Using Autodesk Revit) as I was managing delivery for a large scheme, with 5 buildings.

I was using Ideate BIM Link then, the repetition really bothered me.

Got a similarly sized scheme (by floor area) but split into 14 buildings, and would naturally like to automate as much as possible.

I’ll give Richie, one of the authors on the book a call as he’s from an MEP background, and see if he can help out, we can expand this to look at systems and spaces for MEP too, which I’ve not looked at practically (only in theory) as I am from an Architectural background.


@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: