# Get ProjectParameters with Python

**URL:** <https://forum.dynamobim.com/t/get-projectparameters-with-python/89112>\
**Category:** Revit\
**Tags:** python, dynamo\
**Created:** [May 1, 2023, 12:41pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112 "2023-05-01T12:41:02Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Fernand77](https://avatars.discourse-cdn.com/v4/letter/f/74df32/32.png) [@Fernand77](https://forum.dynamobim.com/u/Fernand77)\
**Post date:** [May 1, 2023, 12:41pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/1 "2023-05-01T12:41:02Z")

</div>

Hello all,

Since I don’t have much experience with Python, I would like to ask your help for the following.

In Dynamo 2.6 I had a Python script that could retrieve the ProjectParamters in my project.

in Dynamo 2.16 (Revit 2023) I get an error with this same script. See image.

Who can help me solve this?

 ![Get ProjectParameters](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/1/0/107f3d9cf3c649bcaf46b1d8f07b1c0ecbf45d84.jpeg)

import clr  
clr.AddReference(‘RevitAPI’)  
from Autodesk.Revit.DB import \*  
import Autodesk

clr.AddReference(“RevitNodes”)  
import Revit  
clr.ImportExtensions(Revit.Elements)

clr.AddReference(“RevitServices”)  
import RevitServices  
from RevitServices.Persistence import DocumentManager

doc = DocumentManager.Instance.CurrentDBDocument  
params =   
cats =   
iterator = doc.ParameterBindings.ForwardIterator()  
while iterator.MoveNext():  
params.append(iterator.Key.Name)  
thesecats =   
for cat in iterator.Current.Categories:  
thesecats.append(Revit.Elements.Category.ById(cat.Id.IntegerValue))  
cats.append(thesecats)  
OUT = (params,cats)

---

<div class="post-metadata">

**Author:** ![manhgt214](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/manhgt214/32/153251_2.png) [@manhgt214](https://forum.dynamobim.com/u/manhgt214)\
**Post date:** [May 1, 2023, 1:29pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/2 "2023-05-01T13:29:38Z")

</div>

Try install package IronPython instead  
(now you run Cpython)

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

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

---

<div class="post-metadata">

**Author:** ![Fernand77](https://avatars.discourse-cdn.com/v4/letter/f/74df32/32.png) [@Fernand77](https://forum.dynamobim.com/u/Fernand77)\
**Post date:** [May 1, 2023, 1:46pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/3 "2023-05-01T13:46:53Z")

</div>

Hi manhgt214,

Thank you for your response.

I have tried both IronPython2 and CPython3 and both to no avail.

---

<div class="post-metadata">

**Author:** ![staylor](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/staylor/32/94307_2.png) [@staylor](https://forum.dynamobim.com/u/staylor)\
**Post date:** [May 1, 2023, 1:49pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/4 "2023-05-01T13:49:00Z")

</div>

Hey @Fernand77  
Also for future reference, use the Preformatted text option when providing your code.  
 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/9/2/924b1c8a22e3c9d43d587b8e80392017ccff6c2e.png)

---

<div class="post-metadata">

**Author:** ![manhgt214](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/manhgt214/32/153251_2.png) [@manhgt214](https://forum.dynamobim.com/u/manhgt214)\
**Post date:** [May 1, 2023, 1:52pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/5 "2023-05-01T13:52:43Z")

</div>

what error?  
I tested your code, work on CPython  
Check indentation level in loop.

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

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

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

doc = DocumentManager.Instance.CurrentDBDocument

params = []
cats = []

iterator = doc.ParameterBindings.ForwardIterator()

while iterator.MoveNext():
	params.append(iterator.Key.Name)
	thesecats = []
	for cat in iterator.Current.Categories:
		thesecats.append(Revit.Elements.Category.ById(cat.Id.IntegerValue))
	cats.append(thesecats)
OUT = (params,cats)

```

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/8/1/814fb6dd1759b753d1142a296bc90f4a6413caca.png)

---

<div class="post-metadata">

**Author:** ![Fernand77](https://avatars.discourse-cdn.com/v4/letter/f/74df32/32.png) [@Fernand77](https://forum.dynamobim.com/u/Fernand77)\
**Post date:** [May 1, 2023, 1:59pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/6 "2023-05-01T13:59:36Z")

</div>

Hi manhgt214,

I still get the message in my project.

 ![Get ProjectParameters_01](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/9/3/9391d0bc5a730c053b49ade5618c928cf4072dfa.jpeg)

---

<div class="post-metadata">

**Author:** ![Fernand77](https://avatars.discourse-cdn.com/v4/letter/f/74df32/32.png) [@Fernand77](https://forum.dynamobim.com/u/Fernand77)\
**Post date:** [May 1, 2023, 2:03pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/7 "2023-05-01T14:03:12Z")

</div>

In a new empty project, it works fine…

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

---

<div class="post-metadata">

**Author:** ![manhgt214](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/manhgt214/32/153251_2.png) [@manhgt214](https://forum.dynamobim.com/u/manhgt214)\
**Post date:** [May 1, 2023, 2:54pm UTC](https://forum.dynamobim.com/t/get-projectparameters-with-python/89112/8 "2023-05-01T14:54:13Z")

</div>

You can use: try except to ignore exception

```auto
import clr
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)

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

doc = DocumentManager.Instance.CurrentDBDocument

params = []
cats = []

iterator = doc.ParameterBindings.ForwardIterator()

while iterator.MoveNext():
	params.append(iterator.Key.Name)
	thesecats = []
	for cat in iterator.Current.Categories:
		try:
			thesecats.append(Revit.Elements.Category.ById(cat.Id.IntegerValue))
			cats.append(thesecats)
		except:
			pass
OUT = (params,cats)

```
