# Flip Work Plane Equivalent

**URL:** <https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354>\
**Category:** Revit\
**Created:** [November 8, 2016, 3:13pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354 "2016-11-08T15:13:01Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dynamonkey](https://avatars.discourse-cdn.com/v4/letter/d/22d042/32.png) [@Dynamonkey](https://forum.dynamobim.com/u/Dynamonkey)\
**Post date:** [November 8, 2016, 3:13pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/1 "2016-11-08T15:13:01Z")

</div>

I am trying to flip several families and I was wondering if there was a node or method in Python to access the flip work plane action/button  
 ![](https://cdck-file-uploads-us1.s3.dualstack.us-west-2.amazonaws.com/flex022/uploads/dynamobim/original/3X/d/0/d07b588083a561093938c23cd0157627ec4cb51f.png)

I’ve tried several flip face orientation nodes but they had no effect and I am aware of the ability to mirror or rotate but ideally I would like to access the flip work plane command if possible. I know there has been an example in the API so I do believe it is possible. Anyone have a quick solution? Thanks!

---

<div class="post-metadata">

**Author:** ![Mostafa\_El\_Ayoubi](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/mostafa_el_ayoubi/32/7815_2.png) [@Mostafa\_El\_Ayoubi](https://forum.dynamobim.com/u/Mostafa_El_Ayoubi)\
**Post date:** [November 8, 2016, 4:25pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/2 "2016-11-08T16:25:39Z")

</div>

@Dynamonkey  
these two nodes from Clockwork package should do what you want

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/8/5/85143c621a3294cecdc4c588469e7f25bacfeddb.png)

---

<div class="post-metadata">

**Author:** ![Daniel\_Woodcock1](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@Daniel\_Woodcock1](https://forum.dynamobim.com/u/Daniel_Woodcock1)\
**Post date:** [November 8, 2016, 4:28pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/3 "2016-11-08T16:28:09Z")

</div>

Hi @Dynamonkey,

If you want to get jiggie with python I think the FamilyInstance method flipFacing() might be what you want.

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/e/f/ef5f214c1cadfabd709c728f46675c49cab3d264.png)

Although, i would use @Mostafa_El_Ayoubi’s solution. Easier.

Cheers,  
Dan

---

<div class="post-metadata">

**Author:** ![Dynamonkey](https://avatars.discourse-cdn.com/v4/letter/d/22d042/32.png) [@Dynamonkey](https://forum.dynamobim.com/u/Dynamonkey)\
**Post date:** [November 9, 2016, 4:10pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/4 "2016-11-09T16:10:17Z")

</div>

Hey @Daniel_Woodcock1 & @Mostafa_El_Ayoubi

I will take a look again but yes as mentioned in my post, I’ve tried those flip face nodes but unfortunately had no success. I have a feeling python is the way to go. The API example I was referring to calls for:

famInst.IsWorkPlaneFlipped = true

is there any equivalent for this in Python?

---

<div class="post-metadata">

**Author:** ![Daniel\_Woodcock1](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@Daniel\_Woodcock1](https://forum.dynamobim.com/u/Daniel_Woodcock1)\
**Post date:** [November 9, 2016, 4:34pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/5 "2016-11-09T16:34:49Z")

</div>

Hi @Dynamonkey,

Instead of elem.flipFacing() Just use elem.IsWorkPlaneFlipped(b) where “b” is a bool value.

There are several flip methods (although the one you mention is a property).

Family Instance Members (Flip)

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/c/bce30e72db8cf2c1eee01fbd79d2abbdc3771826.png)

Family Instance Properties (Flip)

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/3/f/3f6396b9eb3699edde7e304a4b1fe3f7c6d3958b.png)

---

<div class="post-metadata">

**Author:** ![Dynamonkey](https://avatars.discourse-cdn.com/v4/letter/d/22d042/32.png) [@Dynamonkey](https://forum.dynamobim.com/u/Dynamonkey)\
**Post date:** [November 9, 2016, 4:54pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/6 "2016-11-09T16:54:02Z")

</div>

I think we are getting closer. I did a quick test literally adding onto the python code in the FlipFacing node by adding IN[1] to receive a Boolean toggle value and switching item.FlipFacing() to item.IsWorkPlaneFlipped(b) where b = IN[1]. Output is empty and family instance(s) remains unchanged.

---

<div class="post-metadata">

**Author:** ![Daniel\_Woodcock1](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@Daniel\_Woodcock1](https://forum.dynamobim.com/u/Daniel_Woodcock1)\
**Post date:** [November 9, 2016, 6:33pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/7 "2016-11-09T18:33:16Z")

</div>

Hi @Dynamonkey,

Sorry, it was my fault, I made a mistake with how I told you to set the property (rookie mistake). Properties need to be set with an = so elem.IsWorkPlaneFlipped = b and not elem.IsWorkPlaneFlipped(b).

It seems to work fine here, see below (script attached also)…

[https://forum.dynamobim.com/uploads/short-url/oYQEqAOSoCsn7xDS9ueA7EWC7MG.mp4](https://forum.dynamobim.com/uploads/short-url/oYQEqAOSoCsn7xDS9ueA7EWC7MG.mp4)

[FlipComponent.dyn](https://forum.dynamobim.com/uploads/short-url/tIgxSQfuNItRX1vyJGFkTFscRqR.dyn) (5.5 KB)

Cheers,  
Dan

---

<div class="post-metadata">

**Author:** ![Dynamonkey](https://avatars.discourse-cdn.com/v4/letter/d/22d042/32.png) [@Dynamonkey](https://forum.dynamobim.com/u/Dynamonkey)\
**Post date:** [November 9, 2016, 7:44pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/8 "2016-11-09T19:44:34Z")

</div>

Now that’s what I call teamwork. Glad we got this one sorted out.

---

<div class="post-metadata">

**Author:** ![Viraj\_Voditel1](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/viraj_voditel1/32/17254_2.png) [@Viraj\_Voditel1](https://forum.dynamobim.com/u/Viraj_Voditel1)\
**Post date:** [January 4, 2017, 8:55am UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/9 "2017-01-04T08:55:13Z")

</div>

Is there any way we can apply the same principle to do it for multiple elements? I tried replacing the node with the one for multiple elements but it wouldn’t work.

---

<div class="post-metadata">

**Author:** ![Daniel\_Woodcock1](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@Daniel\_Woodcock1](https://forum.dynamobim.com/u/Daniel_Woodcock1)\
**Post date:** [January 14, 2017, 1:34pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/10 "2017-01-14T13:34:46Z")

</div>

Hi @Viraj_Voditel1,

Yes, this is pretty simple. The following demostrates how to do this…

[https://forum.dynamobim.com/uploads/short-url/6ipMmuJyF4xq7fknRwMuGTSbtDP.mp4](https://forum.dynamobim.com/uploads/short-url/6ipMmuJyF4xq7fknRwMuGTSbtDP.mp4)

```
import clr

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *

def tolist(obj1):
	if hasattr(obj1," __iter__"): return obj1
	else: return [obj1]

elems = tolist(UnwrapElement(IN[0]))
bools = tolist(IN[1])
TransactionManager.Instance.EnsureInTransaction(doc)
for elem,b in zip(elems, bools):
	elem.IsWorkPlaneFlipped = b
TransactionManager.Instance.TransactionTaskDone()

```

Hope this helps.

Cheers,  
Dan

---

<div class="post-metadata">

**Author:** ![Jade](https://avatars.discourse-cdn.com/v4/letter/j/a8b319/32.png) [@Jade](https://forum.dynamobim.com/u/Jade)\
**Post date:** [June 6, 2018, 10:42pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/11 "2018-06-06T22:42:35Z")

</div>

Hi @Daniel_Woodcock1

I’ve tried to run your script with multiple but it will only slip one still? I also have an error I don’t know how to fix in the python script. Are you able to provide some help or spot the one thing I am missing?

Thanks if you can!

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/2/b219527795ac4cb1e9ffa5429a260666a28ff897.png)

![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/c/5cc966811c97fdaa39b35e2490c6941126f2adef.png)

---

<div class="post-metadata">

**Author:** ![Daniel\_Woodcock1](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@Daniel\_Woodcock1](https://forum.dynamobim.com/u/Daniel_Woodcock1)\
**Post date:** [June 6, 2018, 11:14pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/12 "2018-06-06T23:14:45Z")

</div>

Hi @Jade,

Yes, two problems I can see.

1. The Boolean list needs to have the same number of bools as you do elements. It’s a 1:1 operation as the elements/bools are zipped.

2. You are trying to flip a tag element and this doesn’t support flipping (the yellow balloon warning message) since they are not hosted to planes as they are 2d elements. I don’t think tags actually support flipping at all, only switching between orientation (horizontal/vertical) or changing their Family Type.

Hope this solves your problem.

Cheers,  
Dan

---

<div class="post-metadata">

**Author:** ![Jade](https://avatars.discourse-cdn.com/v4/letter/j/a8b319/32.png) [@Jade](https://forum.dynamobim.com/u/Jade)\
**Post date:** [June 6, 2018, 11:34pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/13 "2018-06-06T23:34:34Z")

</div>

Hi @Daniel_Woodcock1

Thanks for responding. Where do I place 1. Do I have that in the code block and adjust the list or do I need to place the value in the python script?

1. is working fine, it flips tagged or untagged, it just only flips one instead of all. Which ^ should fix hopefully!

Kind regards

---

<div class="post-metadata">

**Author:** ![Daniel\_Woodcock1](https://avatars.discourse-cdn.com/v4/letter/d/58f4c7/32.png) [@Daniel\_Woodcock1](https://forum.dynamobim.com/u/Daniel_Woodcock1)\
**Post date:** [June 7, 2018, 8:42am UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/14 "2018-06-07T08:42:17Z")

</div>

HI @Jade,

Yeah, you have 2 boolean values in the code block, but the number of these needs to match the number of elements you want to flip. So, in this instance, you need 7 as you have 7 Elements in the Select Model Elements node.

if you only need True or only need false, use the List.Cycle node. See examples below…

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/e/2/e21c3e91d1e132d0bd083348fc0881279258a42a.png)

---

<div class="post-metadata">

**Author:** ![Jade](https://avatars.discourse-cdn.com/v4/letter/j/a8b319/32.png) [@Jade](https://forum.dynamobim.com/u/Jade)\
**Post date:** [June 7, 2018, 10:33pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/15 "2018-06-07T22:33:56Z")

</div>

Hi @Daniel_Woodcock1 thank you for responding I am sure this will work now when I test run! Thank you again for being so helpful much appreciated!

---

<div class="post-metadata">

**Author:** ![n.dull](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@n.dull](https://forum.dynamobim.com/u/n.dull)\
**Post date:** [January 29, 2019, 3:56pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/16 "2019-01-29T15:56:07Z")

</div>

Hi Daniel\_Woodcock1,

Where is that image you posted of the properties from?

Thanks,

---

<div class="post-metadata">

**Author:** ![ammar11khalil](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@ammar11khalil](https://forum.dynamobim.com/u/ammar11khalil)\
**Post date:** [May 11, 2019, 8:54am UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/17 "2019-05-11T08:54:52Z")

</div>

Thank you for your help @Daniel_Woodcock1. Much Appreciated.

---

<div class="post-metadata">

**Author:** ![Bill\_Mutert](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/bill_mutert/32/192965_2.png) [@Bill\_Mutert](https://forum.dynamobim.com/u/Bill_Mutert)\
**Post date:** [May 11, 2022, 6:03pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/18 "2022-05-11T18:03:11Z")

</div>

![FLIP](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/c/b/cb348f2adf8e5761cb75d69a7ed117b0df9792c1.jpeg)

The FlipFacingOrientation node has the same port for in and out (familyInstance) these are usually different.

The newer nodes have extra ports as well.

I can get my script to point at all selected light fixtures, but nothing happens in the model.

Thanks

---

<div class="post-metadata">

**Author:** ![exmove069](https://avatars.discourse-cdn.com/v4/letter/e/a8b319/32.png) [@exmove069](https://forum.dynamobim.com/u/exmove069)\
**Post date:** [April 26, 2024, 3:36pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/19 "2024-04-26T15:36:29Z")

</div>

Hello,t

I would like to flip those lighs fixtures, I ve tried lots methodes and script.  
But idea using dynamo. Someone have idea ?

Thanks

 ![Capture d’écran (274)](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/d/7/d79a45bb7f3d3d9bda6904aafb3716e2af411ce9.png)

---

<div class="post-metadata">

**Author:** ![Bill\_Mutert](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/bill_mutert/32/192965_2.png) [@Bill\_Mutert](https://forum.dynamobim.com/u/Bill_Mutert)\
**Post date:** [April 29, 2024, 1:54pm UTC](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354/20 "2024-04-29T13:54:08Z")

</div>

Light fixtures are PLANE based and insert upside down 9 times out of 10 unless you build them the right way.

I will write a “flipper” script for you.

[Next page](https://forum.dynamobim.com/t/flip-work-plane-equivalent/7354.md?page=2)
