Revit > Grasshopper Deconstruct Windows Doors

Hello guys,

I have asked something similar for Archicad in Discord quite a while back and for the purpose of structural engineering.

Our Building Physics guys now want to use Revit geometry (and in another project Archicad Geometry - IFC was an option too) to get walls as deconstructed surfaces into grasshopper/Rhino to do some Simulations with Honeybee … so far so good. The tricky part comes now with the doors/winows.

We want to take the void object itself and not the nested opening object (door, window). The void objects are more versatile to use. Were you able to integrate those objects (maybe in the next-gen connectors)?. We are currently not able to retrieve those objects but it would help us and all of the engineers out there quite a great deal.

IfcOpeningElemente

Nested Objects baked from Grasshopper
image

Thanks and best,
Alex

Same topic but with the IFC option Alex metioned above.
There are 227 IFCWindow Elements in the Model:

Strangely, some of them are skipped and we only get 220 of the IFCWindow Elements via Grasshopper:

This one is missing for example:

The Pset shown in the browser cannot be accessed via GH either:


Best :slight_smile:
Ljuba

1 Like

By missing, what do you mean? I can see it right there.

Do you want to share a model with us?

I sent it as a PM

So to recap there are 2 issues:

  • void elements support: @AlexHofbeck is this in regards to geometry coming from Revit or IFC?
  • IFC Windows missing: @ltascheva was the IFC uploaded to Speckle directly? We’re currently rewriting the IFC parser from scratch and issues like these should be sorted.

The PSET in a Dict is easily dealt with in a C# node.

I have three possible pivots for you, each offering different ways to organize and access the dictionary data:

  1. “Map to Lists of Keys and Values” creates parallel data trees - one for keys and one for values, maintaining their relationships through matching tree structure. This is useful when you must process keys and values as separate streams while keeping their original organization.
  2. “Map to Key-Value List per Entry” This approach combines key and value at each path position, making it easy to work with complete pairs. Each dictionary entry becomes a branch containing its key and value, perfect for processing entries as units.
  3. “Map to Grafted Key Value List per Entry” This adds another level of organization by grafting the key-value pairs, using paths like {path;entry_index;0} for keys and {path;entry_index;1} for values. This gives you the most granular control over accessing either keys or values while maintaining their relationships.

Attached as a cluster :face_vomiting: Resolve Dictionaries.ghcluster (5.1 KB)

It depends on what use you want to make of these and how:

  • Use #1 when you need to process keys and values independently
  • Use #2 when you want to keep pairs together and iterate through entries
  • Use #3 when you need both the pairing and the ability to filter/process keys and values separately

All these approaches handle any valid dictionary input and preserve the tree structure from input to output. The choice comes down to how you plan to process the data downstream in your Grasshopper definition.

2 Likes