Autodesk Revit MEP 2010 .NET API C# отношение комнаты к двери

StackOverflow https://stackoverflow.com/questions/1537473

  •  20-09-2019
  •  | 
  •  

Вопрос

Работая с 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.

Я прочитал о Блог разработчика строительного кода это

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top