# Python input as list problem

**URL:** <https://forum.dynamobim.com/t/python-input-as-list-problem/70788>\
**Category:** Developers\
**Tags:** python, dynamo\
**Created:** [November 26, 2021, 4:17am UTC](https://forum.dynamobim.com/t/python-input-as-list-problem/70788 "2021-11-26T04:17:57Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![newshunhk](https://avatars.discourse-cdn.com/v4/letter/n/3bc359/32.png) [@newshunhk](https://forum.dynamobim.com/u/newshunhk)\
**Post date:** [November 26, 2021, 4:17am UTC](https://forum.dynamobim.com/t/python-input-as-list-problem/70788/1 "2021-11-26T04:17:57Z")

</div>

Hi,

Sorry I am very new in python, I used the script below to find the elements inside a boundingbox, it works fine, but it only applies on one boundingbox. But I dont know how to edit the script to input a list of boundingbox ☹

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

Python script as follow:

```auto
import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitNodes')
clr.AddReference('RevitServices')
import Revit
import RevitServices
from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
doc = DocumentManager.Instance.CurrentDBDocument

#Preparing input from dynamo to revit
bb = IN[0].ToRevitType()
outline = Outline(bb.Min, bb.Max)
#filter = BoundingBoxIntersectsFilter(outline)
filter = BoundingBoxIsInsideFilter(outline)

collector = FilteredElementCollector(doc, doc.ActiveView.Id).WherePasses(filter)

OUT = [e.ToDSType(True) for e in collector]

```

---

<div class="post-metadata">

**Author:** ![Elie.Trad](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/elie.trad/32/110373_2.png) [@Elie.Trad](https://forum.dynamobim.com/u/Elie.Trad)\
**Post date:** [November 26, 2021, 9:57am UTC](https://forum.dynamobim.com/t/python-input-as-list-problem/70788/2 "2021-11-26T09:57:08Z")

</div>

Tyr this, I think your bounding box needs a little bit of offset to always include elements, in some cases, not all elements/ sub elements are filtered:

```auto
import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitNodes')
clr.AddReference('RevitServices')
import Revit
import RevitServices
from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
doc = DocumentManager.Instance.CurrentDBDocument

#Preparing input from dynamo to revit
bb = IN[0]
l = []
for w in bb:
	wall = w.ToRevitType()
	outline = Outline(wall.Min, wall.Max)
#filter = BoundingBoxIntersectsFilter(outline)
	filter = BoundingBoxIsInsideFilter(outline)
	collector = FilteredElementCollector(doc, doc.ActiveView.Id).WherePasses(filter)
	l.append(collector)

OUT = [[i.ToDSType(True) for i in e] for e in l]

```

---

<div class="post-metadata">

**Author:** ![Daan](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/daan/32/82246_2.png) [@Daan](https://forum.dynamobim.com/u/Daan)\
**Post date:** [November 27, 2021, 11:11am UTC](https://forum.dynamobim.com/t/python-input-as-list-problem/70788/3 "2021-11-27T11:11:11Z")

</div>

Hi @newshunhk ,

Whenever I encounter something like this I just wrap the Python code into a Custom Node with:  
`Input > Python Block > Output` inside my Custom Node.

Then afterwards I just set that node to @L2 and it works with lists 🙂

---

<div class="post-metadata">

**Author:** ![c.poupin](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/c.poupin/32/89152_2.png) [@c.poupin](https://forum.dynamobim.com/u/c.poupin)\
**Post date:** [November 27, 2021, 7:02pm UTC](https://forum.dynamobim.com/t/python-input-as-list-problem/70788/4 "2021-11-27T19:02:32Z")

</div>

Hello

alternatively you can use build a filter that contains a set of filters with [ElementLogicalFilter Class](https://www.revitapidocs.com/2015/3b8d6b55-0cab-1810-1188-840800e5eaa2.htm)

```auto
import clr
import sys
import System
from System.Collections.Generic import List
clr.AddReference('RevitAPI')
clr.AddReference('RevitNodes')
clr.AddReference('RevitServices')
import Revit
import RevitServices
from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
doc = DocumentManager.Instance.CurrentDBDocument

#Preparing input from dynamo to revit
lstBbx = [ds_bbx.ToRevitType() for ds_bbx in IN[0]]
listFilter = List[ElementFilter]([BoundingBoxIsInsideFilter(Outline(bb.Min, bb.Max)) for bb in lstBbx])
filter = LogicalOrFilter(listFilter)
collector = FilteredElementCollector(doc, doc.ActiveView.Id).WherePasses(filter).ToElements()

OUT = collector

```

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/9/7/9732bd889117b3ceeee1c0beacbbd477cad36ba5.png)

---

<div class="post-metadata">

**Author:** ![newshunhk](https://avatars.discourse-cdn.com/v4/letter/n/3bc359/32.png) [@newshunhk](https://forum.dynamobim.com/u/newshunhk)\
**Post date:** [November 29, 2021, 1:39am UTC](https://forum.dynamobim.com/t/python-input-as-list-problem/70788/5 "2021-11-29T01:39:24Z")

</div>

thank you so much everyone~! It works~
