Communauté
BIM Revit, BIM et Autodesk Construction Cloud (ACC) - Français
Bienvenue sur le forum AEC francophone dédié aux solutions BIM de la société Autodesk. Cet espace est dédié aux professionnels et passionnés du secteur de l'Architecture, de l'Ingénierie et de la Construction (AEC) qui utilisent le logiciel Revit ainsi que les plateformes collaboratives d'Autodesk (ACC et Autodesk Forma). Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets, que vous soyez architecte, ingénieur, gestionnaire de projet ou tout autre acteur de l'AEC.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Revit : C# Récupération des lignes "BoundarySegment" délimitant la pièce

3 RÉPONSES 3
RÉSOLU
Répondre
Message 1 sur 4
be-bj
166 Visites, 3 Réponses

Revit : C# Récupération des lignes "BoundarySegment" délimitant la pièce

Bonjour, désole je n'ai pas une connaissance suffisante sur le   BoundarySegment j'ai une erreur qui coisse

dans la boucle de lecture des pièces selon votre exemple qui fonction bien, mais à partir d'une sélection manuelle, mon désir, c'est de le faire en automatique dans la boucle, si joint le début du programme, merci à vous. cordialement bonne journée.

 

 

bebj_0-1675866989361.png

 

 

foreach (Element item in pieces) // poieces
{
ElementId idPiece = item.Id;
Sortie=""+ idPiece.ToString();
TaskDialog.Show("Nombre de piece", " Index de la piiece "+ Sortie);
Na++;
if(Na>4)
{
break;
}

//Récupération des lignes "BoundarySegment" délimitant la pièce
SpatialElementBoundaryOptions spatialOpt = new SpatialElementBoundaryOptions();
IList<IList<BoundarySegment>> lstlstBoundary = idPiece.GetBoundarySegments(spatialOpt);
List<ElementId> lstWallsOfRoom = new List<ElementId>();


bj_Page.treeView1.Nodes[0].Nodes.Add(item.Name);
bj_Page.treeView1.Nodes[0].Nodes[N1].Nodes.Add("Index");
bj_Page.treeView1.Nodes[0].Nodes[N1].Nodes[0].Nodes.Add("" + item.Id);
N1++;
// Les portes
foreach(Element itemP in portes)
{


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
C# Récupération des lignes "BoundarySegment" délimitant la pièce

3 RÉPONSES 3
Message 2 sur 4
Charles.Piro
en réponse à: be-bj

Salut,

 

la méthode "GetBoundarySegment" n'est disponible que pour les objets de type "Room" donc il faut convertir votre élément en "Room" :

Foreach(Element item in pieces)
{
    Room _room = item as Room;
    SpatialElementBoundaryOptions spatialOpt = new SpatialElementBoundaryOptions();
    IList<IList<BoundarySegment>> lstlstBoundary = _room .GetBoundarySegments(spatialOpt);
//suite du code

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 3 sur 4
be-bj
en réponse à: be-bj

Bonjour

OK super, ça fonctionne très bien.

En vérifiant le métrage des longueurs des plinthes, j'ai deux soucis 

a) Si la pièce n'est pas fermée exemple séjour ouvert sur la cuisine, il compte comme s'il y a un mur

 

b) si j'ai un mur qui pénètre à l'intérieur de la pièce, il ne calcule pas   deux fois la longueur + épaisseur du mur 

 

c) dans le cas de gaine technique apparemment, il ne calcule pas les plinthes autour de la gaine .

 

Cordialement bonne journée.

 

bebj_0-1676371727120.png

 

Message 4 sur 4
Charles.Piro
en réponse à: be-bj

Salut,

 

oui le code présenté ne gère pas tous les cas, c'est un exemple. Il faut ensuite que vous ajoutiez les exceptions et tester différentes configurations afin de créer un programme qui réponde à tous vos cas d'usages.

 

PS : votre message et celui-ci ne répondent pas au début du post mais à celui-ci : https://forums.autodesk.com/t5/revit-bim-et-acc-francais/revit-c-trouver-les-largeurs-des-portes-dan... 

 

😉

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report