Mirror node for Family instances


#1

I’m looking for a mirror node, that will take given family instance and mirror it about a given axis. Ideally it could work with list of instances and list of axis (2 In ports).

 

I’m trying to place a new family instance to match other instance. I can get location and rotation working ok, but mirror and flip are a bit more challenging. Thanks.


#2

There are no default nodes for that, unfortunately. You’ll need to access the API. The correct call for mirroring is “ElementTransformUtils.MirrorElement(s)” :

http://revitapisearch.com/html/36027166-d494-9937-74c2-d61197af3878.htm

 


#3

I don’t really know how to convert those C# and VB examples to Python, here is my first attempt so far (it doesn’t work):

python


#4

Hi Luke,

You’re pretty close. The last thing to do is convert Dynamo’s planes to Revit planes. I thought we can do that with the built in “.ToRevitType()” method but it seems we can’t. We can write our own little conversion function instead:

2015-05-06_15-05-41

The only problem with the above code is that we can’t wrap the newly created mirrored elements because the Revit function doesn’t expose them. Therefore every time you execute the dynamo graph, you’ll have new elements overlapping the old ones.

You can get some more info on Dynamo’s built in conversion methods in the below link:


#5

Brilliant! Thanks for the solution, and for the lesson on how to bring import these utils and implement. You commented code is much appreciated. I can just make a selection set of the old objects, and then delete after running. Thanks again Dimitar!

mirror


#6

I have published a version of this as a node that uses Clockwork to get the ‘normal’ vector of the families and generate a plane based on the element itself. I’m sure there may be complications, but it is working for me!