Frage

Arbeiten mit VS 2008 und Autodesk Revit MEP 2010 in C # Ich versuche, wenn eine Tür zum Zimmer verbindet, um herauszufinden:

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));
    }
}

Dieser Ansatz funktioniert nicht, da der Rückgabewert von elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID) immer null ist.

Ich habe auf dem Gebäude Coder Blog dass

  

Einbau-Parameter sind nicht offiziell unterstützte Teil der API. Im   Zukunft erwarten wir, dass sie durch Daten ersetzt werden wird richtig belichtet als   eine Eigenschaft.

Ist diese Aussage wahr? Kann mir jemand Punkt auf eine effiziente Art und Weise die Beziehung zwischen Türen und Räume zu bekommen?

War es hilfreich?

Lösung

Die Türen sind Familie Instanzen, so

Autodesk.Revit.Elements.FamilyInstance elementDoor = elementsetiteratorBIMDoors.Current as Autodesk.Revit.Elements.FamilyInstance;

Room fromRoom = elementDoor.FromRoom;
Room toRoom = elementDoor.ToRoom;

sollte für diese Arbeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top