# How to get From/ToRoom information from doors by phase?

**URL:** <https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122>\
**Category:** Developers\
**Created:** [December 14, 2022, 10:25am UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122 "2022-12-14T10:25:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [December 14, 2022, 10:25am UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/1 "2022-12-14T10:25:19Z")

</div>

Hello,

my code is a pit off… i want to get From/To Room information

```auto
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

def GetRooms(item, phase):
    if hasattr(item, "FromRoom") and str(phase.GetType()) == "Autodesk.Revit.DB.Phase":
        exits = 0
        try:
            if item.FromRoom[phase]: exits += 1
            if item.ToRoom[phase]: exits += 1
            return item.FromRoom[phase], item.ToRoom[phase], exits
        except:
            return None, None, 0
    else: return None, None, 0

items = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors)
phase = UnwrapElement(IN[0])

OUT = map(list, zip(*[GetRooms(x , phase) for x in items]))

```

 ![grafik](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/f/1/f1edb419a3b1b67972f66421e800cb5a723bf632.png)  
 ![2022-12-14_11h21_44](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/5/55bf520a51a4dc43b73a12b08e75317b66c4efca.png)

KR

Andreas

---

<div class="post-metadata">

**Author:** ![MartinSpence](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/martinspence/32/25208_2.png) [@MartinSpence](https://forum.dynamobim.com/u/MartinSpence)\
**Post date:** [December 14, 2022, 12:36pm UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/2 "2022-12-14T12:36:03Z")

</div>

Hi @Draxl_Andreas,

I was gonna say you could take a look at the node from clockwork that does exactly what you are after, but I can see now that this is probably where you’ve gotten the inspiration 😉

The code you wrote works if you specify in your collector, that it is only door instances you are after:

`items = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType().ToElements()`

Try it and see if it works for you 🙂

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [December 14, 2022, 12:45pm UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/3 "2022-12-14T12:45:31Z")

</div>

```auto
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

def GetRooms(item, phase):
    if hasattr(item, "FromRoom") and str(phase.GetType()) == "Autodesk.Revit.DB.Phase":
        exits = 0
        try:
            if item.FromRoom[phase]: exits += 1
            if item.ToRoom[phase]: exits += 1
            return item.FromRoom[phase], item.ToRoom[phase], exits
        except:
            return None, None, 0
    else: return None, None, 0

items = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType().ToElements()
phase = UnwrapElement(IN[0])

OUT = map(list, zip(*[GetRooms(x , phase) for x in items]))

```

@MartinSpence ,

it is still weard, i got the code from a book,… at least i should get some Ids ?

 ![grafik](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/4/7/4706786edbeb650d70b982d1adace49d61e6df02.png)

---

<div class="post-metadata">

**Author:** ![MartinSpence](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/martinspence/32/25208_2.png) [@MartinSpence](https://forum.dynamobim.com/u/MartinSpence)\
**Post date:** [December 14, 2022, 12:47pm UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/4 "2022-12-14T12:47:58Z")

</div>

I copy+pasted your code and added the line i wrote earlier, and it outputted Rooms.

Do you have Rooms in Phase 01?

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [December 14, 2022, 1:30pm UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/5 "2022-12-14T13:30:08Z")

</div>

@MartinSpence ,

there is only this phase …

this sentence is still weard for mi

```auto
OUT = map(list, zip(*[GetRooms(x , phase) for x in items]))

```

---

<div class="post-metadata">

**Author:** ![MartinSpence](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/martinspence/32/25208_2.png) [@MartinSpence](https://forum.dynamobim.com/u/MartinSpence)\
**Post date:** [December 14, 2022, 1:49pm UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/6 "2022-12-14T13:49:58Z")

</div>

The map(list, zip… restructures the outputlist so you get a list with toRoom, fromRoom, counts. So it’s a different way to strcture the output for the node, but not necessary to get an output.

If you leave it out, you will get to/from/counter for each door element:

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

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [December 14, 2022, 2:20pm UTC](https://forum.dynamobim.com/t/how-to-get-from-toroom-information-from-doors-by-phase/84122/7 "2022-12-14T14:20:24Z")

</div>

@MartinSpence ,

code works in 2022!

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