0

在 C# 中使用 VS 2008 和 Autodesk Revit MEP 2010 我试图找出门是否连接到房间:

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 的官方支持部分。将来,我们预计它将被正确公开为属性的数据所取代。

这种说法是真的吗?谁能指出一种有效的方法来获得门和房间之间的关系?

4

1 回答 1

0

门是家庭实例,所以

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

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

应该为此工作。

于 2009-11-07T02:45:45.063 回答