Identification des éléments par niveau

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,

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.
image

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 :

  • Réussir à remonter à l’esquisse et à son plan de placement.
  • Récupérer la géométrie du volume (via une boudingbox par exemple puis min puis Z) et comparer ce Z à l’élévation des tes niveaux. C’est ce que je ferais.

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
3 J'aime

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.code block

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.


Par habitude j’écris en designscript