Bonjour à tous,
Pas du tout formée dans dynamo mais bidouilleuse dans l'âme, j'essaie d'adapter un fichier de calcul de la surface totale d'un appartement pour lequel la liste de départ n'est pas adaptée à notre fonctionnement.
J'ai réussi à récupérer les infos de base qui m'intéressent en filtrant les éléments mais je suis coincée par un problème qui doit être basique 😅
Voilà, j'ai trié ma liste et maintenant j'ai besoin de récupérer uniquement les items de 0 List pour les entrer comme list dans mon noeud suivant. je crois que j'ai atteint ma limite de bidouillage parce que ça fait un bail que je cherche 😃
Merciiiiii
Résolu ! Accéder à la solution.
Résolu par David_TESSON. Accéder à la solution.
Résolu par jfbrigaud. Accéder à la solution.
Bonjour,
Vous pouvez utiliser List.GetItemAtIndex:
Jean-François Brigaud
Bonjour et merci pour votre réactivité !
J'ai bien vu cette possibilité mais ce n'est pas ce que je veux faire 😊
Dans votre solution, vous récupérer tous les items ayant une valeur 0 dans chaque liste. Ce que je souhaite, c'est récupérer tous les éléments de la liste 0 list, quelle que soit leur valeur et ne plus avoir les éléments de 1 list, 2 list...
Sur votre exemple, je souhaite donc récupérer 1 2 3 4 5 et ne plus avoir A B C ni Chien Chat... 😅
En fait comme dit, je ne suis qu'une bidouilleuse et je ne connais malheureusement rien à dynamo.
J'ai récupéré ce script initial qui permet de faire le total des surfaces de pièces en fonction du N° du logement. Ca fonctionne super bien :
mais dans la pratique, on a aussi des pièces avec ce N° de logement qui doivent être sorties du total. J'ai donc besoin d'appliquer un filtre supplémentaire.
Dans REVIT, on a un créé un filtre en fonction du type de surface qui fonctionne très bien avec les nomenclatures et je voudrais le réutiliser pour filtrer ma liste initiale en ne récupérant que les pièces qui ont été renseignées comme SHAB. donc j'ai réussi à créer ceci :
mais je ne sais pas comment récupérer la liste "épurée" avec juste les items du groupe 0 list pour l'introduire dans le noeud.
Voilàààà 😋
Merciii
Ok, alors ne sélectionnez pas les niveaux de sous-liste
Jean-François Brigaud
Super !!! Merci 😁
Bon, j'ai bien ma liste mais en fait je ne suis pas sûre d'être sur la bonne voie 😋
Dans mon post précédent, j'explique ce que j'avais l'intention de faire mais je m'aperçoit que ça ne fonctionne pas....comme ça ! Ce n'est pas à ce niveau que je dois appliquer mon filtre, ni de cette manière...
Bon... utilisatrice de Revit, j'aimerai beaucoup avoir un minimum de formation sur dynamo paracerque ça m'intéresse, mais mon boss m'a fait comprendre que c'était pas d'actualité. En effet, je suis architecte, pas informaticienne. N'empêche que si vous avez un peu de temps à m'accorder, j'aimerai bien essayer de résoudre ce problème 🤗
Je ne sais pas où et comment insérer mon filtre 😅
Ci dessus un petit résumé de ce que je souhaite :
En bleu, c'est ce qui fonctionne avec la mise en forme de la liste de départ des données pour la suite du calcul.
En Orange ça indique les éléments de la liste de départ que j'aimerais ne plus avoir dans cette liste
En rose, ce que j'ai fait pour filtrer ma liste mais que je ne sais pas où et comment insérer
Merciiiiii 😁
Ouiiii ! C'est génial !!!! :verres_que_l'on_trinque:
Merci beaucoup et bonne soirée 😉
Bonjour,
Bon alors finalement, après une bonne nuit de sommeil, il y a encore une chose qui ne fonctionne pas 😅
En effet, si je n'attribue pas SHAB à la première pièce que je crée dans mon modèle, il se trouve que l'index de la liste n'est pas 0. En fait, si je crée ma pièce SHAB en 2d, elle sera dans la liste 1 list, si je la crée en 3ème, dans la liste 2 list...
C'est logique ! mais du coup je ne peux pas me servir du code block 0 pour épurer ma liste puisque ce ne sera pas toujours le 0 qui correspond à la SHAB, ni même un index fixe
Y a-t-il un moyen de filtrer la liste par la chaine de caractère "SHAB" ?
Merci 😊
C'est le noeud FilterByBoolMask
Je suis désolé, je n'ai pas de temps pour l'instant pour t'aider.
Super ! Merci beaucoup...
Pas mal détaillé pour quelqu'un qui n'a pas le temps 😀
Bon, donc je suis bien arrivée là ou tu m'as emmenée mais je n'arrive pas à boucler le chemin toute seule (ouaip, un vrai boulet !!! 😋)
J'ai ma liste OK mais je ne sais pas comment la relier à mes pièces. Je ne sais pas quoi faire de ce IN qui ne veut rentrer dans aucun noeud et je ne sais pas quoi lui mettre en interface...
Je pense que ton script part dans tout les sens maintenant.
Qu'elle est la finalité de ton script et à partir de quoi ?
Si je comprend bien, tu as:
Des pièces qui ont un paramètre TXT pour les catégoriser (SHAB, Surf annex, Surf comm., ....)
Un paramètre N° pour les regrouper par appart.
Et tu veux calculer la surface total de chacun des apparts.
Que veux tu faire ensuite de cette valeur ?
Alors oui, j'ai pour le moment laissé les solutions intermédiaires donc il y en a un peu partout mais je sais quoi supprimer.
Pour résumer le script de départ que j'ai récupéré utilise un paramètre texte pour le N° de logement et calcule le total de toutes les pièces affectée à ce logement.
A l'agence, on a en plus un second paramètre texte qui permet de différencier SHAB, Surface <1.80m et Surface Annexe. Je veux donc filtrer les données reçues pour chaque logement avec mon second paramètre. Et d'après ce que j'ai compris,ça doit intervenir en amont de mon list.GroupByKey.
La solution proposée hier fonctionne très bien, à l'exception près que je me suis rendue compte que si la 1ère pièce créée dans le projet n'avait pas le paramètre SHAB, La liste obtenue en filtrant avec le Code Block 0 n'était pas la bonne. Perso, je peux gérer comme ça parce que j'essaie de mettre un peu mon nez dans dynamo donc aller remplacer mon codeBlock 0 par le chiffre correspondant à ma liste de SHAB, je vais y arriver, mais je pense à mes collègues qui vont laisser tomber si ça ne fonctionne pas directement quand ils appuient sur 'Play" 😋
intuitivement, j'aurais tendence à supprimer le lien entre "All Elements of Catégorie" Et "Element.getParameterValueByName" car je me dit que ces élements de départs doivent provenir de ma liste filtrée mais un lien entre "In" et "Element" ne va pas de soit visiblement
Ok.
Donc je pense que le plus simple est de partir sur ta liste brute de toutes les pièces regroupées par appart (liste A)
De cette liste, tu récupères avec GetValue...ByName le paramètre TXT pour le type de surface (liste B)
Ensuite tu utilises le test avec le noeud == sur ta (liste B) pour tester "SHAB". tu obtient une liste de True/False (Liste C)
Sur le noeud FilterByBoolMask tu connectes ta (liste A) sur list et (Liste C) sur mask.
Resultat dans IN tu as les pièces "SHA" et dans OUT le reste.
Liste A, B, C... Tu m'as perdue !!! Je fonctionne beaucoup mieux aux "dessins" qu'aux "textes"...
Je regarde ce soir quand je serais rentrée à la maison si j'arrive à comprendre 😉
Voila la version graphique 😀
Pour mon test j'ai mis le type de surface dans "commentaires"
(Liste A) correspond à ton ListGroupByKey
(Liste B) correspond à GetValue... de "commentaires"
Je fait un test de cette liste (liste B) pour voir si c'est "SHAB"
Ca me donne la (liste C) qui contient les True / False du test.
C'est cette liste qui me sert de mask dans FilterByBoolMask sur la liste générale des pièces (Liste A)
Il en ressort une liste purgée qui ne contient que les "SHAB"
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.