在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官方支持的部分。在 未来我们预计它会被正确公开的数据所取代 财产。
这句话是真的吗?有人能指出我有效的方法来获得门和房间之间的关系吗?
答案 0 :(得分:0)
门是家庭实例,所以
Autodesk.Revit.Elements.FamilyInstance elementDoor = elementsetiteratorBIMDoors.Current as Autodesk.Revit.Elements.FamilyInstance;
Room fromRoom = elementDoor.FromRoom;
Room toRoom = elementDoor.ToRoom;
应该为此工作。