# Problème python script ( boucle for )

**URL:** <https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835>\
**Category:** Developers\
**Created:** [February 7, 2023, 12:05pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835 "2023-02-07T12:05:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![maxime.cayeux1](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@maxime.cayeux1](https://forum.dynamobim.com/u/maxime.cayeux1)\
**Post date:** [February 7, 2023, 12:05pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/1 "2023-02-07T12:05:19Z")

</div>

revit : 2020  
dynamo core : 2.3.0.5885  
dynamo Revit : 2.3.0.7661

Bonjour, j’ai un problème avec mon script python dans dynamo quand j’utilise une boucle for j’obtient l’erreur suivante :  
Avertissement:IronPythonEvaluator.EvaluateIronPythonScript l’opération a échoué.  
Traceback (most recent call last):  
File “”, line 30, in   
NameError: name ‘i’ is not defined

quand j’utilise se code for en dehors de revit il fonctionne mais pas dans revit.  
voici mon code python :

# Charger les bibliothèques DesignScript et Standard Python

import sys  
import clr  
clr.AddReference(‘ProtoGeometry’)  
from Autodesk.DesignScript.Geometry import \*

# Import RevitNodes

clr.AddReference(“RevitNodes”)  
import Revit

# Import Revit elements

from Revit.Elements import \*

# Import DocumentManager

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

import System

# Les entrées effectuées dans ce noeud sont stockées sous forme de liste dans les variables IN.

cdc\_debut = IN[0]  
cdc\_fin = IN[1]  
boundingboxintersect = IN[2]  
indextot = len(boundingboxintersect)

# Placer votre code au-dessous de cette ligne

stock =   
test = len(i)-1  
for i in boundingboxintersect:  
if i[test] == cdc\_debut:  
stock.append(i)

# Affectez la sortie à la variable OUT.

OUT =

est ce que vous avez déjà eu ce problème et si oui comment le résoudre ?  
merci d’avance pour vos réponse  
cordialement  
maxime cayeux

---

<div class="post-metadata">

**Author:** ![maxime.cayeux1](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@maxime.cayeux1](https://forum.dynamobim.com/u/maxime.cayeux1)\
**Post date:** [February 7, 2023, 12:10pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/2 "2023-02-07T12:10:20Z")

</div>

Revit : 2020  
Noyau dynamo : 2.3.0.5885 Dynamo  
Revit : 2.3.0.7661

Hello, I have a problem with my python script in dynamo when I use a loop for I get the following error:

Avertissement:IronPythonEvaluator.EvaluateIronPythonScript l’opération a échoué.  
Traceback (dernier appel le plus récent) :  
Fichier “”, ligne 30, dans  
NameError : le nom “i” n’est pas défini

when i use this code for outside of revit it works but not in revit.  
here is my python code:

# Charger les bibliothèques DesignScript et Standard Python

import sys  
import clr  
clr.AddReference(‘ProtoGeometry’)  
depuis Autodesk.DesignScript.Geometry import \*

# Importer des nœuds Revit

clr.AddReference(“RevitNodes”)  
importer Revit

# Importer des éléments Revit

depuis l’import Revit.Elements \*

# Importer le gestionnaire de documents

clr.AddReference(“RevitServices”)  
importe RevitServices  
depuis RevitServices.Persistence importe DocumentManager

système d’importation

# Les entrées effectuées dans ce nœud sont transférées sous forme de liste dans les variables IN.

cdc\_debut = IN[0]  
cdc\_fin = IN[1]  
boundingboxintersect = IN[2]  
indextot = len(boundingboxintersect)

# Placer votre code au-dessous de cette ligne

actions =  
test = len(i)-1  
for i in boundingboxintersect :  
if i[test] == ​​cdc\_debut :  
stock.append(i)

# Affectez la sortie à la variable OUT.

SORTIE =

Have you had this problem before and if so how did you fix it?  
Thank you in advance for your answer  
Cordially  
maxime cayeux

---

<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:** [February 7, 2023, 12:10pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/3 "2023-02-07T12:10:48Z")

</div>

@maxime.cayeux1 ,

i am courious … but i understand only english, german and spanish.

KR

Andreas

---

<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:** [February 7, 2023, 12:13pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/4 "2023-02-07T12:13:05Z")

</div>

@maxime.cayeux1 ,

i cleant up your code a bit… …what do you try exactly?

```auto
import sys
import System
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
#Les entrées effectuées dans ce noeud sont stockées sous forme de liste dans les variables IN.

cdc_debut = IN[0]
cdc_fin = IN[1]
boundingboxintersect = IN[2]
indextot = len(boundingboxintersect)

stock = []
test = len(i)-1
for i in boundingboxintersect:
    if i[test] == cdc_debut:
        stock.append(i)

OUT = stock

```

KR

Andreas

---

<div class="post-metadata">

**Author:** ![BrookePeterson](https://avatars.discourse-cdn.com/v4/letter/b/71c47a/32.png) [@BrookePeterson](https://forum.dynamobim.com/u/BrookePeterson)\
**Post date:** [February 7, 2023, 12:20pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/5 "2023-02-07T12:20:58Z")

</div>

Im on my phone so i could be reading wrong, but i think your problem is in your line:

test = len(i)-1

You havent defined i yet at that point. You define i in the next line with the for loop.

I think perhaps putting the “test” inside the for loop will help?

---

<div class="post-metadata">

**Author:** ![maxime.cayeux1](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@maxime.cayeux1](https://forum.dynamobim.com/u/maxime.cayeux1)\
**Post date:** [February 7, 2023, 12:40pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/6 "2023-02-07T12:40:38Z")

</div>

Bonjour je cherche à faire la même chose que dans le code suivant

ce que je suis en train de faire c’est :  
de cherché l’élément in[0]  
dans la liste in[2]

si l’élément est trouvé dans l’index 1  
alors stocker l’index 1 dans une liste

---

<div class="post-metadata">

**Author:** ![maxime.cayeux1](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@maxime.cayeux1](https://forum.dynamobim.com/u/maxime.cayeux1)\
**Post date:** [February 7, 2023, 12:41pm UTC](https://forum.dynamobim.com/t/probleme-python-script-boucle-for/85835/7 "2023-02-07T12:41:30Z")

</div>

Hello I am trying to do the same as in the following code

what I’m doing is:  
look for the element in[0]  
in the list in[2]

if the element is found in index 1  
then store index 1 in a list
