Autodesk Revit MEP 2010 API .NET C # spazio per relazione porta
Domanda
Lavorare con VS 2008 e Autodesk Revit MEP 2010 in C # sto cercando di scoprire se una porta si connette alle camere:
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));
}
}
Questo approccio non funziona perché il valore di ritorno di elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID)
è sempre null
.
Ho letto sul blog costruzione Coder che
parametri Built-in non sono una parte ufficialmente supportata di API. Nel futuro ci aspettiamo che sarà sostituito da dati che vengono correttamente esposti come una proprietà.
E 'questa affermazione vero? Qualcuno mi può puntare a un modo efficace per ottenere la relazione tra le porte e le camere?
Soluzione
Le porte sono casi in famiglia, in modo da
Autodesk.Revit.Elements.FamilyInstance elementDoor = elementsetiteratorBIMDoors.Current as Autodesk.Revit.Elements.FamilyInstance;
Room fromRoom = elementDoor.FromRoom;
Room toRoom = elementDoor.ToRoom;
dovrebbe funzionare per questo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow