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?

È stato utile?

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
scroll top