Niveau brut et Niveau fini BET structure

Niveau brut et Niveau fini BET structure

fersersabarchitecte
Enthusiast Enthusiast
367 Visites
10 Réponses
Message 1 sur 11

Niveau brut et Niveau fini BET structure

fersersabarchitecte
Enthusiast
Enthusiast

Bonjour à tous,
J’aurai besoin de vos précieux éclairages !
Dans le cadre de nos missions en BET Structure, nous modélisons les dalles brutes sans les finitions architecturales.
Cependant, pour assurer une meilleure coordination avec les autres corps d’état, nous souhaitons faire apparaître à la fois le niveau brut (arase supérieure des dalles) et le niveau fini (niveau architectural) sur nos plans. Actuellement, nous modélisons les dalles à leur niveau brut, en les positionnant avec un décalage négatif par rapport au niveau fini. Pour indiquer le niveau NGF fini, nous avons mis en place un paramètre partagé nommé "Niv fini NGF", associé à une étiquette, dans lequel nous saisissons manuellement la valeur.
Afin de fiabiliser et automatiser cette opération, nous souhaitons que ce paramètre récupère automatiquement la valeur du niveau vu qu’il correspond au fini archi, sans ressaisie manuelle.
J’ai joint une capture d’écran.

merci à ceux qui prendront le temps de me lire ... 🙂 

0 J'aime
Solutions acceptées (3)
368 Visites
10 Réponses
Replies (10)
Message 2 sur 11

lucdoucet_msdl
Advisor
Advisor
Solution acceptée

@fersersabarchitecte wrote:


Afin de fiabiliser et automatiser cette opération, nous souhaitons que ce paramètre récupère automatiquement la valeur du niveau vu qu’il correspond au fini archi, sans ressaisie manuelle.


Votre affirmation que l'élévation du niveau REVIT corresponds à la valeur du niveau fini architectural n'est pas toujours le cas. De plus, la non modélisation des finis architecturaux de faible épaisseur (voir négligeable) devrait également être prise en considération.

Cela dit, je comprends que votre objectif est de ne pas tenir compte d'une modélisation des finis et que l'étiquette doit être en mesure de rapporter la valeur d'élévation de la famille de type "niveau" sur les plans.

Contrairement à la vue en coupe, les familles de niveaux ne sont pas "visibles" donc pas étiquettables dans les vues en plan. Il faut donc résoudre d'utiliser une astuce pour afficher la value du paramètre d'élévation.

En présumant que vous affichez toujours la vue d'un étage dans une vue associé au niveau Revit, vous pouvez créer une série de nomenclatures (une par vue en plan) ayant pour unique valeur le nom et élévation de chaque niveau. Vous placez alors ce mini tableau superposée sur la vue de la structure et il affichera l'information requise et mise à jour lorsque le niveau ou le nom du niveau changera.

lucdoucet_msdl_0-1753758872715.png

 

En espérant que cela puisses vous aider,

-luc

 

-luc

 

 

0 J'aime
Message 3 sur 11

Charles.Piro
Advisor
Advisor

Salut,

 

si vous souhaitez faire apparaitre le niveau fini et le niveau brut, l'idéal est de créer les 2 niveaux au sein de votre projet. Dans le cas ou vous ne travaillez qu'avec les niveaux brut et que souhaitez simplement afficher les niveaux fini pour les vues en coupes, vous pouvez créer un maquette séparée avec les niveaux fini. Ainsi ils seront présent mais seulement en lien et ne perturberont pas votre gestion de projet.

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


0 J'aime
Message 4 sur 11

fersersabarchitecte
Enthusiast
Enthusiast

Merci pour votre réponse Charles , l'étiquette je souhaite l'avoir en plan , je veux qu'elle soit associée au niveau fini Archi , Ma dalle brut je la modélise en négatif par rapport au niveau fini archi comme indiqué sur la capture d'écran en PJ de mon 1 er message 

0 J'aime
Message 5 sur 11

fersersabarchitecte
Enthusiast
Enthusiast

Bonjour Luc, vraiment pas mal votre astuce! je vais la tester , merci 

0 J'aime
Message 6 sur 11

christian.stan
Collaborator
Collaborator

Salut

voici une "solution" via Dynamo

je place un textnote sous la cote de niveau après avoir chercher le niveau fini (niv fini rapporté à tes niveaux)

voici

script

rep 25_08_01_afficher niv fini_2025-08-01_06-09-46.png

 python script:

import sys
import clr
clr.AddReference("RevitAPI")
import Autodesk 
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit

clr.ImportExtensions(Revit.GeometryConversion)
dim=UnwrapElement(IN[0])

OUT = [d.TextPosition.ToPoint() for d in dim]

christianstan_0-1754065121758.png

cordialement

christian.stan

0 J'aime
Message 7 sur 11

sersabm83
Contributor
Contributor

Bonjour Christian , Merci pour ce partage !!! , possible de me donner quelques explications pour que je puisse exploiter ce script dynamo (j'en ai déjà fait mais pour des automatisations vraiment basiques )  ? ( je trouve que c'est la solution la plus adaptée pour renseigner le niveau fini dans une maquette  structure ). 

1- dans Select model Element , qu'est ce que je suis censée sélectionner , le ou les niveaux ? 

2- si dans le texte affiché sur les dalles je ne souhaite afficher que le niveau fini    que faut il indiquer  dans le code Block , j'ai effacé le "Name"  mais ça m'a marqué erreur ; 

Merci encore 

0 J'aime
Message 8 sur 11

m_dubois2
Enthusiast
Enthusiast
Solution acceptée

Bonjour @sersabm83 , 

Je me permets de répondre à tes questions, même si ce n’est pas moi qui ai créé le script Dynamo.

  1. Concernant ta première question : dans le Select Model Elements, tu dois sélectionner toutes les cotes d’élévation. Le script extrait ensuite la valeur du paramètre "Valeur unique/supérieure" depuis ces éléments.

  2. Pour afficher uniquement le niveau fini, tu peux simplement utiliser :
    "Niv fini: " + a
    Le x.Name sert à récupérer le nom du niveau dans le code block utilisé avec List.SortByFunction, mais il n’est pas nécessaire si tu ne veux afficher que la valeur du niveau fini.

 

Sinon, l’idée principale de ce script est de comparer l’altimétrie de ta côte d’élévation avec les niveaux du projet.
Si un niveau est supérieur à la côte, il est récupéré et utilisé comme niveau de référence fini, puis inséré dans le code block TextNote.
Le script Python permet de localiser précisément ta côte d’élévation afin de positionner l’annotation texte au bon endroit.

 

m.dubois.

0 J'aime
Message 9 sur 11

fersersabarchitecte
Enthusiast
Enthusiast

Bonjour M. Dubois,

Merci beaucoup pour tes éléments de réponse, c’est vraiment apprécié !

J’aurais encore besoin de ton aide sur quelques points, si tu veux bien :

  • J’ai bien sélectionné, comme tu l’as indiqué, deux côtes d’élévation correspondant au niveau fini. Les éléments semblent bien pris en compte, mais le nœud "Select Model Element" m’affiche "nul". Aurais-tu une idée de la cause ? (voir image 1)
  • Je n’ai pas de connaissances en Python : faut-il ajouter ou modifier quelque chose dans le script pour que cela fonctionne ?
  • Dès que je supprime le "Name" du Code Block, une erreur apparaît systématiquement. (voir image 2)
  • Enfin, une fois que tout est en place, suffit-il simplement de placer une "Text Note" sous la cote brute en plan ? Car rien ne s’affiche dans celle que j’ai insérée dans ma vue en plan. (voir image 3)

Merci encore pour ton aide et ton temps,

0 J'aime
Message 10 sur 11

m_dubois2
Enthusiast
Enthusiast
Solution acceptée

Bonjour @fersersabarchitecte,

 

En effet, suite à tes remarques, j'ai voulu tester le Dynamo, et tu as raison de signaler certains points.
Concernant tes remarques :

  1. J’ai bien sélectionné, comme tu l’as indiqué, deux côtes d’élévation correspondant au niveau fini. Les éléments semblent bien pris en compte, mais le nœud "Select Model Element" m’affiche "nul". Aurais-tu une idée de la cause ? (voir image 1) 

    Pour ma part, le nœud "Select Model Elements" ne semble pas me permettre de sélectionner mes côtes d'élévation, cela est peut-être due à ma version de RVT combiné à ma version de Dynamo (j'ai testé en RVT 2024). Cependant en utilisant le nœud "Select Model Element" (sans le "s" à Element → nous obligeant à sélectionner qu'une seule côte. Voir Image 1.cela fonctionne. 

    Dans ton cas par contre, tu arrives à sélectionner tes côtes mais cela obtient une valeur ce qui semble illogique. Mais ignorons ce problème pour l'instant car c'est peut-être due au Script python.

  2. Je n’ai pas de connaissances en Python : faut-il ajouter ou modifier quelque chose dans le script pour que cela fonctionne ? J'ai bien un problème avec le script Python, il ne semblait pas fonctionner avec moi, je l'ai donc modifié puis vérifié qu'il fonctionne : Tu aura à le copier et remplacer en double cliquant le Script Python dans Dynamo.
import clr
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.GeometryConversion)

elements = UnwrapElement(IN[0])
if not isinstance(elements, list):
    elements = [elements]

out = []

for e in elements:
    if isinstance(e, Dimension):
        try:
            if e.TextPosition:
                out.append(e.TextPosition.ToPoint())
            else:
                out.append("Pas de TextPosition défini")
        except:
            out.append("Erreur accès TextPosition")
    else:
        out.append("Pas une Dimension")

OUT = out
  •  Dès que je supprime le "Name" du Code Block, une erreur apparaît systématiquement. (voir image 2)Pour cette partie, l'erreur vient de toi. En effet tu dois supprimer x.Name. Tu dois donc avoir dans ton code Block :
" Niv fini: "+a;

Tu pourra même supprimer le nœud List.GetItemAtIndex qui te servira à rien.

  •  Enfin, une fois que tout est en place, suffit-il simplement de placer une "Text Note" sous la cote brute en plan ? Car rien ne s’affiche dans celle que j’ai insérée dans ma vue en plan. (voir image 3)Si les remarques précédentes sont corrigées, alors un texte devrait être placé automatiquement en dessous de ta côté d'élévation. Le texte placé est un texte par défaut, tu peux créer une famille de texte et l'utiliser dans ton script Dynamo. Pour cela tu aura juste à créer ta famille sur revit avec tes paramètres voulu (ex : opaque ou transparent, rouge ou noir etc...), tu copie ensuite le nom donné pour celui-ci et enfin, dans ton script tu rajoute une ligne au code Block, de fin de script Dynamo, que tu reliera dans la donnée d'entré type du nœud "TextNote.ByLocation" acheminé par le nœud "TextNoteType.ByName" (Voir Image 2).

J’espère que tes problèmes disparaitrons.

     

m.dubois

0 J'aime
Message 11 sur 11

fersersabarchitecte
Enthusiast
Enthusiast

Merci beaucoup pour la clarté de tes réponses et le temps que tu as pris pour m’aider.
Tes explications m’ont vraiment permis d’y voir plus clair !!
Je vais mettre tout ça en application 🙂 .