Group is mirrored (or not)


Not sure I understand. You’re saying elements in curtain walls would have to be ignored because they behave differently?


Yes. indeed.
All elements in curtain walls should be ignored (because they shouldn’t trigger the mirrored decision).

So I create a group [A] containing

  • a window family (test)
  • a curtain wall (wally)
  • a door as panel in (wally).
    I consider that group to be the ‘non mirrored version’.

I create a group [B] containing the same objects, but let’s say the height differs.
and the door direction is flipped.
I consider this group [B] to be the ‘non mirroed version’.

but it’s not because apparently the door has been flipped.

But that’s not what I want (I understand that’s the current possible situation ofc). The check should be on the first level elements in the group. So the curtain wall (not possible I know), the window).

Makes more sense?


I wonder if this applies to other types of assemblies as well like trusses or beam systems…
I’ll add a check to disqualify family instances depending on their host type. For starters this would be curtain walls, curtain systems and glazed roofs.


Good catch, by the way.


@3Pinter I ran a test and it looks like doors in curtain walls are not an issue as their behaviour is ecatly the same as that of doors hosted in standard walls:



Hmmm, I don’t get the same results.
I did a test where I only group a curtainwall (with a custom door panel (family instance)). Flipping that door resuls in a flipped status, while it’s actually not a flipped version of the whole curtain wall.

So H40 has been duplicated to create a new mark H41 (door is flipped)
From left to right: H40 original, H41s original too, H41 mirrored by me.

Dynamo thinks it’s a mirrored which actually is not true.


Now I see what you did.
You can’t compare instances of different group types.
The node should return nulls in such cases.


Perhaps with your node, you can’t but with the original setup, you can (which I like).

Does your script allow the ‘first’ to be a list?

  • So first you select which groups are to be considered ‘original’.?

If I would like to narrow the groupelements to check only a certain family (based upon name containing ‘test’). Is that something you do @ the getfirstfamilyinstanceorientation?
Fiddling here, but horrible results. Must be the amount of coffee I drank today :expressionless:


You could just comment out this line:

elif refGroupType != group.GroupType.Id.IntegerValue: bools.append(None)

Then the grouptype will be ignored.



I running into an issue where flipped doors trigger a mirred status where it shouldn’t. Luckily the groups I want to check always some same elements.

So I want to alter your script so it checks not the first familyinstance it finds, but rather if a certain family is used, if so, get that orientation.

def getfirstfamilyinstanceorientation(groupelements):
	test = UnwrapElement(groupelements)
	for i in test
		if isinstance(i, Revit.Elements.FamilyInstance):
			if 'wrap' in i.Symbol.Family:
				return i.Mirrored

so my family in the group always contains the word ‘wrap’. What am I doing wrong? Been trying to long now, my head is on lockdown :sob:


Is there any way to get mirrored elements that are not groups?


Try this:

Comparing geometry of Dynamo solids - collecting objects of the same shape

Thanks Yna_Db for the quick reply.

Seems tho it doesnt work with Walls… any ideas?


Only family instances have a Mirrored property, see here:


i see
So im wondering how does Assemblies identify that the wall is mirrored and assign it to a new assembly…


It could be an interesting issue but this topic has already been solved at post #10 and is already very long. Would you mind starting a new one and sending some illustrations and screenshots of your work? You can use the “share a link to this post” button to continue this conversation there:
Thanks :slight_smile: