Autodesk Revit MEP 2010 .NET API C # отношение помещения к двери - PullRequest
0 голосов
/ 08 октября 2009

Работа с VS 2008 и Autodesk Revit MEP 2010 в C # Я пытаюсь выяснить, соединяется ли дверь с помещениями:

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

Этот подход не работает, поскольку возвращаемое значение elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID) всегда равно null.

Я прочитал в блоге Building Coder , что

Встроенные параметры не являются официально поддерживаемой частью API. В в будущем мы ожидаем, что он будет заменен данными, должным образом собственность.

Это утверждение верно? Может кто-нибудь указать мне эффективный способ установить связь между дверями и комнатами?

1 Ответ

0 голосов
/ 07 ноября 2009

Двери - это семейные экземпляры, поэтому

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

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

должно работать для этого.

...