0

C#でVS2008およびAutodeskRevit 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

私はBuildingCoderブログで次のことを読みました。

組み込みパラメーターは、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 に答える