Problème python script ( boucle for )

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

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

1 Like

@maxime.cayeux1 ,

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

KR

Andreas

@maxime.cayeux1 ,

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

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

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?

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

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