# Switch join order node

**URL:** <https://forum.dynamobim.com/t/switch-join-order-node/11417>\
**Category:** Packages\
**Created:** [April 29, 2017, 7:34am UTC](https://forum.dynamobim.com/t/switch-join-order-node/11417 "2017-04-29T07:34:45Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![Einar\_Raknes](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/einar_raknes/32/8566_2.png) [@Einar\_Raknes](https://forum.dynamobim.com/u/Einar_Raknes)\
**Post date:** [April 29, 2017, 12:35pm UTC](https://forum.dynamobim.com/t/switch-join-order-node/11417/3 "2017-04-29T12:35:58Z")

</div>

Here is an example that works with floors and columns:

[Floor.SwitchJoinOrderCutWithColumn.dyn](https://forum.dynamobim.com/uploads/short-url/rRD5s1PvzpJB3dz9fdBU8fz9bZ1.dyn) (2.7 KB)

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/4/4/448043b92961432f12bfe545a7405037014044a6.gif)

```
import clr

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

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

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

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

#Get selected floors or ask user to pick:
selectedIds = uidoc.Selection.GetElementIds()
if selectedIds:
	ids = selectedIds
else:
	refArray = uidoc.Selection.PickObjects(Selection.ObjectType.Element,"Pick floor(s)")
	ids = [ref.ElementId for ref in refArray]
	
for id in ids:
	floor = doc.GetElement(id)
	
	bb = floor.get_BoundingBox(doc.ActiveView)
	outline = Outline(bb.Min, bb.Max)
	filter = BoundingBoxIntersectsFilter(outline)
	columns = FilteredElementCollector(doc, doc.ActiveView.Id).OfCategory(BuiltInCategory.OST_StructuralColumns).WherePasses(filter)
	
	count = 0
		
	#Do some action in a Transaction
	TransactionManager.Instance.EnsureInTransaction(doc)
	for column in columns:
		areJoined = JoinGeometryUtils.AreElementsJoined(doc,floor,column)
		if areJoined:
			columnIsCut = JoinGeometryUtils.IsCuttingElementInJoin(doc,floor,column)
			if columnIsCut:
				JoinGeometryUtils.SwitchJoinOrder(doc,floor,column)
				count = count + 1
	TransactionManager.Instance.TransactionTaskDone()

OUT = str(count) + ' join orders are changed.'
```

---

_[View the full topic](https://forum.dynamobim.com/t/switch-join-order-node/11417)._
