# Autodesk.Revit.DB.BoundingBoxXYZ to Boundingbox

**URL:** <https://forum.dynamobim.com/t/autodesk-revit-db-boundingboxxyz-to-boundingbox/76076>\
**Category:** Uncategorized\
**Created:** [May 2, 2022, 9:36am UTC](https://forum.dynamobim.com/t/autodesk-revit-db-boundingboxxyz-to-boundingbox/76076 "2022-05-02T09:36:52Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 2, 2022, 9:36am UTC](https://forum.dynamobim.com/t/autodesk-revit-db-boundingboxxyz-to-boundingbox/76076/1 "2022-05-02T09:36:52Z")

</div>

Hi all,

I try to transform my Autodesk.Revit.DB.BoundingBoxXYZ to a dynamo Boundingbox.  
What is the right way to do it?

I tried to use, ToDSType(), ToProtoType() but it doesn’t work.

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

```auto
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

from System.Collections.Generic import *

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

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

#The inputs to this node will be stored as a list in the IN variable.
dataEnteringNode = IN

elements = []
for i in IN[0]:
	elements.append(UnwrapElement(i))
offset = float(0.01)
views = UnwrapElement(IN[1][1])

#get ViewFamilyType for a 3D View
collector = FilteredElementCollector(doc)
viewTypeColl = collector.OfClass(ViewFamilyType)
for i in viewTypeColl:
	if i.ViewFamily == ViewFamily.ThreeDimensional:
		viewType = i
	else:
		continue
# "Start" the transaction
TransactionManager.Instance.EnsureInTransaction(doc)

#define bounding box enclosing all elements
bboxMin, bboxMax = [], []
for i in elements:
	for b in i:
		bboxMin.append(b.get_BoundingBox(doc.ActiveView).Min)
		bboxMax.append(b.get_BoundingBox(doc.ActiveView).Max)
minX, minY, minZ, maxX, maxY, maxZ = [], [], [], [], [], []
for i, j in zip(bboxMin, bboxMax):
	minX.append(i.X)
	minY.append(i.Y)
	minZ.append(i.Z)
	maxX.append(j.X)
	maxY.append(j.Y)
	maxZ.append(j.Z)
bboxMinX = min(minX)
bboxMinY = min(minY)
bboxMinZ = min(minZ)
bboxMaxX = max(maxX)
bboxMaxY = max(maxY)
bboxMaxZ = max(maxZ)
#create a bounding box
boxen = []
for e in elements:
	bbox = BoundingBoxXYZ()
	bbox.Min = XYZ((bboxMinX - offset), (bboxMinY - offset), (bboxMinZ - offset))
	bbox.Max = XYZ((bboxMaxX + offset), (bboxMaxY + offset), (bboxMaxZ + offset))
	boxen.append(bbox)

sbox = []	
s = 0
for v in views:
	v.SetSectionBox(boxen[s])
	s += 1
	sbox.append(v.GetSectionBox())

	
# "End" the transaction
TransactionManager.Instance.TransactionTaskDone()

#Assign your output to the OUT variable
OUT = sbox

```

---

<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:** [May 2, 2022, 10:21am UTC](https://forum.dynamobim.com/t/autodesk-revit-db-boundingboxxyz-to-boundingbox/76076/2 "2022-05-02T10:21:51Z")

</div>

> **[API Changes · DynamoDS/Dynamo Wiki](https://github.com/DynamoDS/Dynamo/wiki/API-Changes)**
>
> Open Source Graphical Programming for Design. Contribute to DynamoDS/Dynamo development by creating an account on GitHub.

hi,

I think you have to access Dynamo API… … for any reason i can`t find a good documentation.

KR

Andreas

---

<div class="post-metadata">

**Author:** ![jw.vanasselt](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jw.vanasselt/32/133533_2.png) [@jw.vanasselt](https://forum.dynamobim.com/u/jw.vanasselt)\
**Post date:** [May 2, 2022, 10:25am UTC](https://forum.dynamobim.com/t/autodesk-revit-db-boundingboxxyz-to-boundingbox/76076/3 "2022-05-02T10:25:31Z")

</div>

Thanks @Draxl_Andreas , I have the solution.  
ToProtoType() was at the wrong place:

I created a new python code and it works:

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

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

#The inputs to this node will be stored as a list in the IN variable.

bbox= UnwrapElement(IN[0])

dsbox = []
for b in bbox:
	dsbox.append(b.ToProtoType())

OUT = dsbox

```
