Autodesk Revit MEP 2010 API .NET C # pièce à la relation de la porte
Question
Travailler avec VS 2008 et Autodesk Revit MEP 2010 en C # J'essaie de savoir si une porte est communicant avec les chambres:
ElementSetIterator elementsetiteratorBIMDoors =
bimdoors.getBIMDoors().ForwardIterator();
while (elementsetiteratorBIMDoors.MoveNext())
{
Autodesk.Revit.Element elementDoor =
elementsetiteratorBIMDoors.Current as Autodesk.Revit.Element;
if ((null != elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID)) &&
(null != elementDoor.get_Parameter(BuiltInParameter.TO_ROOM_ID)))
{
string sDoorFromRoomID =
elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID).ToString();
string sDoorToRoomID =
elementDoor.get_Parameter(BuiltInParameter.TO_ROOM_ID).ToString();
graph.addLink(new Link(sDoorFromRoomID, sDoorToRoomID));
}
}
Cette approche ne fonctionne pas parce que la valeur de retour de elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID)
est toujours null
.
J'ai lu sur le bâtiment Blog Coder
paramètres intégrés ne sont pas une partie officiellement prise en charge de l'API. Dans l'avenir, nous prévoyons qu'il sera remplacé par des données correctement exposées comme une propriété.
Cette déclaration est vraie? Quelqu'un peut-il me pointer vers un moyen efficace pour obtenir la relation entre les portes et les chambres?
La solution
Les portes sont des instances de la famille, donc
Autodesk.Revit.Elements.FamilyInstance elementDoor = elementsetiteratorBIMDoors.Current as Autodesk.Revit.Elements.FamilyInstance;
Room fromRoom = elementDoor.FromRoom;
Room toRoom = elementDoor.ToRoom;
devrait travailler pour cela.