Autodesk Revit MEP 2010 .NET API C#门到门关系

时间:2009-10-08 12:21:43

标签: c# .net autodesk revit

在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 blog

  

内置参数不是API官方支持的部分。在   未来我们预计它会被正确公开的数据所取代   财产。

这句话是真的吗?有人能指出我有效的方法来获得门和房间之间的关系吗?

1 个答案:

答案 0 :(得分:0)

门是家庭实例,所以

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

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

应该为此工作。