Strategies for dealing with nested families? Filter elements by properties of parent?

Hello folks,

I’m pretty new to Speckle, and running into a familiar issue that has haunted me with Navisworks, and I’m curious if anyone has established ways to deal with this, or if it’s something on devs’ radar.

Basically, when I upload a model from Revit which contains nested families (in my case the top-level is an adaptive family – not sure if relevant).

In the Speckle viewer, the shared sub-families are basically scattered across the typical hierarchy of Level > Category > Type. This makes sense, and I assume it’s a necessary link to maintain the connection to Revit.

Question 1: I assume this hierarchy could be re-worked by deconstructing and reconstructing the collection structure in grasshopper?

Question 2: In Navisworks, with a Revit model exported to .NWC, we see a similar (though slightly less coherent) issue of being unable to easily access the family hierarchy. BUT we do have access to a property called Supercomponent → Name. It looks like it is part of the Revit API used for establishing element hierarchy, and returns the name of the ‘parent’ family as property of ‘child’ elements. I don’t seem to be able to access this through Speckle filters – is this, or could this be possible?
image

If not, I suppose another workaround could be adding a shared parameter to all nested family elements and populating it with the name of the parent family.

Another problem here, which maybe is only solvable by a custom parameter, is that if a family has both shared and non-shared sub-elements, they may not be able to be filtered by the same built-in property. (In Navis, I do not see the SuperComponent property for the non-shared elements. Makes sense, but inconvenient in my case)

A potential workaround on the filtering side could be the ability to search multiple properties for one value in a single filter (for consistent color display, etc). I.e. if “Family name” OR “SuperComponent name” == “somevalue”.

Here’s a little sample file, where the framing members are non-shared, and everything else is shared:
https://app.speckle.systems/projects/f1436df0ef/models/3072e50b00

Hey @dylan ,

This is a great suggestion. I’ll add it to our backlog. I think what we can add is the elementId of the parent element since that can be a better identifier for the relationship.

To help us implement this faster, are you able to share the .rvt file with us? If you can’t share the Revit file here (publicly), i can share a private link. Just let me know.

Thank you for the reply, Mucahit – I would be happy to share a file privately!

1 Like

Hey @dylan ,

We added parentApplicationId property to nested elements in 3.14.0 release. Install the latest Revit connector from Connectors | Speckle

Awesome, thank you for the follow up! Looking forward to checking out the update.

For my use cases, the next step would be implementing some means utilizing this information for filtering, so that when a top-level family is included in a filter, all of its component/nested elements are included with it as well.

This would be similar to how Revit view filters behave: when a filter applies a graphical override to a family instance, that override propagates to all of the nested elements within that family, even though the filter itself is defined at the top-level element.

I think the ideal implementation for me would be a toggle on the filter, “include children” or similar :person_shrugging:

Hey @dylan ,

Are you asking this for filters within Speckle?

Yes! This would be super useful, for example, for creating visuals in Speckle Intelligence.

In my case, I would use this to visualize properties of curtainwall panels, where we panels made up of nested Revit families (some ‘shared’, some not shared), but often want to treat the entire “assembly” as one element.

@gokermu can parentApplicationId information get added to the Speckle docs?

This topic was automatically closed after 180 days. New replies are no longer allowed.