Hi,
I’m looking into how groups in Revit work a little to understand the inter-connectivity between elements across each instance of a group.
An element in one group instance has an equal duplicate in another (or multiple) group instance(s). Following any edit to a group, Revit then makes updates to the elements inside each other group. Therefore, I making the presumption that there is some sort of back end link between elements within a group to each other group. (The presumption is that there is a link, as the alternative is that Revit re-copies the group to each instance coordinate each time there is an update, which seems clumsy)
Does anyone know if this link is available from dynamo or using the API? Maybe something like a Element ID code? Thank you in advance, your insights will be gratefully received.
Groups are very limited in the api. But depending on what you want to do, you can work from the group type > obtain it’s instances > then query it’s members (setting data will be a dead end in most cases). There are nodes in clockwork for this kind of stuff. I would say to give those a shot and report back where you are.
2 Likes
@john_pierson Thank you very much for your fast response.
Essentially, what I want to be able to do is be able to know via model data, that the walls selected in the image below are the same. Note: the 4 walls are a group that I have copied.
I have selected these elements, and using clockwork nodes I can get the group type ID, and the members within. However, I have no way of knowing that Element 1340660 is the same as 1340856 but just in a different location. Maybe what I am asking is not possible or available?
Any further insights would be really appreciated
Test it out, but unless the group instance has excluded members I believe that the orders will match.
If that isn’t an option, then checking by parameters, object type, and geometry gets more complex. Parameters and object types should be straight forward enough, but geometry gets difficult. Almost Equal To isn’t a great choice here as group geometry is weird as heck, so a ‘good enough’ method might be in order. I’d use a combined vectors method in that case - that get the points for the group origin, the min point of the element’s bounding box, and the max point of the element’s bounding box. Then create a series of vectors between each pair (three of them). The lengths and angles of each part of the triangle should be equal for the group type and each instance, and the angle between the group instances local coordinate system and any other vector should also match.
That’s not a certainty (ie there will be edge cases that produce false positives, especially with bested groups), but the likelihood is pretty slim and likely as good as you’ll be able to get without larger Revit API efforts.
Great spot @jacob.small ! Yes, indeed the corresponding elements are in the same order! Not entirely sure how Dynamo does the element ordering, but this should be a good start. Thank you
When bulk selecting the elements are ordered by Element ID which is loosely the order of creation.