Bonjour,
Voici le retour du nœud List.IndexOf
Je teste chaque éléments de ma liste (watch de doite) pour savoir si il est présent dans ma liste de points particuliers (Watch de gauche).
J'ai un soucis car dans la capture, on peut voir que l'item 4 retourne un index négatif (donc pas présent) alors qu'il est dans la liste de points particuliers. la preuve en est puisque l'item 1 de Liste.OfIndex est correct et que c'est le même point !
Avez vous une parade à cela ou une autre manière de tester la présence de mes points dans la liste de points particuliers
Merci
Résolu ! Accéder à la solution.
Résolu par David_TESSON. Accéder à la solution.
Bonjour,
Est-ce que tu n'aurais pas oublier un lacing cross product sur l"list.indexof" ?
Bonjour,
Je pense que tu t'es trompé dans l'ordre de liaison des nœuds. Ta liste d'objet à trouver est à relier à elements, et ta liste à fouiller dans list.
Moi j'aurais fais ça (en sélection les niveaux, sinon ça marche pas) :
Ensuite, sache que le package ORCHID te propose un noeud List.IndexOf au comportement un peu différent du Dynamo de base, que personnellement je préfère :
Enfin, il faut que tu fasse attention aux données que tu manipule, à savoir des points. Le "danger" est la précision des points. Si tu lis des points provenant de Revit, ils sont peut-être égaux sur les premières décimales, mais pas ensuite, et le "ListIndexOf" ne fonctionnera pas.
Je te conseil de t'intéresser au nœud "Geometry.IsAlmostEqualTo", combiné à un "ListMap" ou autre.
Jean
Bonjour,
@MatthieuBJuno : Je n'ai pas besoin de lacing particulier avec List.Ofindex car de fait il balaye la totalité de la liste pour chaque élément pour trouver son index.
@Anonymous : Je ne pense pas mettre trompé dans l'ordre. Ma liste référence est la liste de 12 item. Mes éléments à vérifier sont dans la liste de 160 item
Je pense que cela peut effectivement provenir du delta des points apres la virgule. Je vais regarder.
Merci
Effectivement, le problème vient de l'exactitude des points après la virgule.
Pour y remédier j'ai arrondi mes points à 3 chiffres après la virgule et ca fonctionne.
Merci pour la piste @Anonymous
Bonjour @David_TESSON
Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton "Approuver la solution" en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Donc voici ma solution pour palier au problème d'exactitude des points.
J'arrondi les valeurs X,Y et Z et je retourne le point modifié. C'est bête mais avec ça, mon script fonctionne
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.