Je travaille une application qui nécessite des connaissances sur quelle pièce frontière de l'autre. Dans cette situation, il est pertinent de savoir si une bordure de pièce est un mur ou un séparateur de pièce.Comment puis-je obtenir des séparateurs de pièce dans revit 2017
public FindsRoomSeperators(){
SpatialElementBoundaryOptions options = new SpatialElementBoundaryOptions();
options.SpatialElementBoundaryLocation = SpatialElementBoundaryLocation.Finish;
foreach (IList<Autodesk.Revit.DB.BoundarySegment> boundSegList in room.GetBoundarySegments(options))
{
foreach (Autodesk.Revit.DB.BoundarySegment boundSeg in boundSegList)
if ((BuiltInCategory)el.Category.Id.IntegerValue == BuiltInCategory.OST_RoomSeparationLines)
//proccess el
}
}
Cependant comme de ce code 2017 Revit lance maintenant la méthode non trouvée: 'Autodesk.Revit.DB.Element Autodesk.Revit.DB.BoundarySegment.get_Element()'. exception suggérant que cette méthode a été supprimée.
var geometry = (Solid)room.get_Geometry(new Options()).First();
var faces = geometry.Faces;
Et tout cela ne me permet pas de juger des choses comme tout ou non un plancher est debout à un angle, il ne me dit pas que des bords viennent des murs et qui, de sepeartors des chambres.
Idéalement, je serais en mesure de prendre les visages que nous avons et de vérifier si l'un des bords d'un visage est un séparateur de pièce. J'ai déjà une liste de tous les murs si cela aide.
Alors, comment fait-on cela dans Revit 2017? De préférence sans casser la compatibilité avec 2015.
les GetBoundarySegments() n'a pas été retirée de l'API sur 2017, il toujours là (même pas marqué comme « désapprouvée »). Vous ne manquez pas une référence? –
Le code déclenche une exception dans la boucle foreach lorsqu'il est appelé en 2017 mais fonctionne correctement en 2016. La méthode ci-dessus lève l'exception: Méthode introuvable: 'Autodesk.Revit.DB.Element Autodesk.Revit.DB.BoundarySegment.get_Element()'. – Thijser