在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

我已经阅读了大厦编码器博客

  

内置参数不是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