Bonjour,
Dans le groupe que je vient de créer, je désire connaître les éléments par niveau. Malheureusement la liste est vide.
Avez-vous une explication?
Merci d’avance
Bonjour,
Dans le groupe que je vient de créer, je désire connaître les éléments par niveau. Malheureusement la liste est vide.
Avez-vous une explication?
Bonjour,
Ce n’est pas pour rien que les éléments in-situ sont souvent proscrits ou déconseillés dans les convention BIM. Si tu regardes les propriétés du volume, l’information du niveau n’existe pas.
Tu saisis un niveau au moment de dessiner l’esquisse de la première face sur un plan de placement mais je n’ai pas retrouvé cette information via RevitLookup (un plug-in qui permet de rentrer dans l’API Revit).
A mon sens ce ne sera donc pas simple, les pistes :
Raphaël
Avez-vous un exemple à me proposer pour l’adapter à mon projet?
Une image à suivre.
Merci d’avance
Quelque chose de ce style. La comparaison pour un niveau strictement égal au z_min du volume peut se faire avec les noeuds OOTB mais je n’ai pas réussi à gérer le niveau le plus proche et suis passé par un bout de python.
J’ai volontairement fait un volume pile au niveau et un autre entre les deux.
import clr
import System
clr.AddReference('DSCoreNodes')
clr.AddReference('RevitAPI')
clr.AddReference('System.Core')
z_volumes = UnwrapElement(IN[0])
z_niveaux = UnwrapElement(IN[1])
list_index=[]
for z_v in z_volumes:
delta_min=100000
for index, z_n in enumerate(z_niveaux):
delta=abs(z_v-z_n)
if(delta<delta_min):
delta_min=delta
index_niveau=index
list_index.append(index_niveau)
OUT=list_index
Merci pour la réponse.
J’ai un souci, après avoir commencé à votre réponse je me retrouve avec une erreur.
Elle se produit au niveau du code bloc car je n’arrive pas à écrire 1 List.Flatten(x).Tout ceci est essentiellement du au fait que je suis un novice dans le domaine.
Pourquoi tu mets pas juste le node Flatten
A cause du conseil suivant: https://forum.dynamobimfra.com/t/identification-des-elements-par-niveau/106/4?u=pklipfel
Je pense que tu dois avoir un package qui créé une ambiguïté entre un AutreAssembly.List.Flatten et DSCore.List.Flatten. En précisant que tu fais appel à List.Flatten issu de l’assembly DSCore tu n’auras plus de soucis mais comme le dit Daniel le noeud de base fonctionne aussi.