La compacité d’un bâtiment en STI2D ac

Je suis enseignant en Développement durable avec des lycéens.
Je veux leurs donner des notions de calculs de compacité.
pour cela je pars d’un exemple simple d’un logement ou une habitation dont les dimensions sont définies sur celle d’un cube de LEGO avec les dimensions suivantes: l = 4m, L = 8m et H = 2,5m.

Sujet1

Les différentes solutions sont dessinés sur REVIT. Je voudrais automatiser le calcul de compacité grâce à Dynamo.
Le calcul est le suivant:
les surfaces déperditives sont uniquement celles en contact avec l’extérieur et celles en contact avec le sol):
Facteur de compacité ou coefficient de forme Cf de l’enveloppe: S / V
S étant la somme des surfaces déperditives [en m²] et V le volume du bâtiment [en m3].
Je pense donc faire une recherche de l’intersection de surfaces en contact avec une surface nulle (c’est une surface donc en contact avec l’extérieure).
Cela nous ramène aux calculs suivant.
V (volume du bâtiment): identique pour toutes les solutions
V = 2,5 m × 4 m × 8 m × 6 briques = 480 m3
Solution 1:
S (surfaces déperditives):
S = (7,5 m × 8 m × 4)

  • (8 m × 8 m × 2) = 368 m²

Cf = 368/480 = 0,77
Solution 2:
S (surfaces déperditives):
S = (2,5 m × 8 m × 11)

  • (2,5 m × 4 m × 8)
  • (4 m × 8 m × 8) = 556 m²

Cf = 556/480 = 1,16
Solution 2:
S (surfaces déperditives):
S = (4 m × 8 m × 12)

  • (2,5 m × 4 m × 12)
  • (2,5 m × 8 m × 12) = 744 m²

Cf = 744/480 = 1,55
Voilà pour le sujet et les calculs sont à réaliser sur Dynamo.
Voici le début dynamo et le fichier REVIT qui va avec l’exemple 1

Merci pour votre aide!

*modifié par @ahalim pour intégrer la capture d’écran

Bonjour et bienvenue @pklipfel
Si j’ai bien compris votre question, vous devrez ajouter des pièces qui aideront à tester et filtrer uniquement les pièces situées du côté extérieur du bâtiment.

J’ai créé deux niveaux et ajouté des pièces au hasard dans chaque étage:

Ensuite, la partie Dynamo vient:

  • J’ai sélectionné manuellement les murs de l’enveloppe, qui seront utilisés pour tester et filtrer uniquement les pièces situées du côté extérieur du bâtiment. Le nœud Geometry.DoesIntersect a été utilisé pour ce faire.
  • Enfin, j’ai utilisé un simple Code Block pour obtenir le résultat de la division des surfaces totales des pièces extérieures par la valeur totale du volume du bâtiment.

Merci ahalim;
J’ai commencé à faire le fichier Dynamo comme tu me l’as envoyé.
Je suis novice dans le domaine.
il y a un code block que je n’arrive pas à retranscrire ni à comprendre. Peux-tu déjà me guider.
c’est le code block suivant: Code block
Merci d’avance.

Cette partie du script permet de visualiser en arrière-plan Dynamo les pièces qui remplissent une condition. La condition dans ce cas est que les pièces doivent être placées du côté extérieur.

Le nœud List.FilterElement.ByBoolMask prend deux entrées:

  • list : la liste des pièces.
  • mask : une liste de True/ False. Où True = Pièces du côté extérieur, False = À l’intérieur du bâtiment.

Et donne deux sorties:

  • In : sont les éléments qui remplissent la condition.
  • Out : sont les éléments qui ne remplissent pas la condition.

Le nœud Code Block, est un nœud simple tu permet d’écrire facilement des équations, ou de créer une simple liste à partir d’un nœud précédent. Je l’ai utilisé ici pour afficher uniquement les pièces qui sont placées du côté extérieur du bâtiment (à partir du nœud précédent).

Voici le script (tu peux l’ouvrir directement sur Dynamo) : https://drive.google.com/file/d/1dcTwFZDuDpX2ng6ntS5VnbC4h1k_kch1/view?usp=sharing
Et voici un GIF pour comment il fonctionne :
La compacité d’un bâtiment en STI2D ac - Gifyu

Plus d’info sur le noud List.FilterElement.ByBoolMask (anglais) : Dynamo Dictionary
Et le Code Block (anglais) : Dynamo Dictionary

Je me trompe ou il y a déjà des objets dans Revit? Si oui, je ne crois pas que ce soit nécessaire de faire des pièces.

Une union de tout les blocs et nous avons accès au volume et la surface

Le nœud Solid.Area donnera la surface totale de toutes les surfaces de ce solide …
Je ne sais pas si cela est correct en tenant compte de la cosidration que nous ne calculons que les surfaces du côté extérieur.

Du point de vue LEGO, chaque pièce LEGO a au moins 4 côtés, et la surface extérieure peut varier de 1 à 4…

Extérieur et sol, donc pour moi c’est le shell qui est utilisé.
En faisant l’union on « annule » toute les surfaces intérieurs

Merci pour cette réponse, mais cela ne me dit pas comment je fais pour écrire x/ 1x;>.
Code block V
Je n’ai pas trouvé de réponse dans les liens auxquels vous faites référence. (Désolé).

Merci pour la réponse mais je ne vois aucune différence entre les trois graphique.
Comment fait-on pour trouver la cellule (GeomPreview).
Merci d’avance

C’est très simple :slight_smile:
Double-cliques sur l’espace de travail Dynamo avec la souris. Cela créera un nœud de Code Block.
Ensuite, tu écrives X (ou toute autre lettre ou mot) dans le Code Block. Puis connectes la sortie IN (de List.FilterByBoolMask) à l’entrée du Code Block.
CodeBlock

Cela a du sens, mais je ne sais pas si cela fonctionnera s’il y a plusieurs étages (donc des dalles qui donnes des surfaces horizontaux ) ? :thinking:

Le volume et la surface ne sont pas les mêmes (ainsi que les ID)
Pour le GeomPreview c’est du package Data-Shape

Nouvelle demande concernant toujours le même sujet de départ afin d’avancer.
Comment transformer tous les éléments de la famille en plusieurs géométrie distincte.


Cela me permettrait de trouver les différentes intersection entre les géométries.
Merci pour votre aide

Tu peux utiliser le nœud Element.Geometry. Il transforme presque tous les éléments de Revit en géométrie Dynamo.

1 J'aime