أوتوديسك ريفيت MEP 2010 API C # .NET غرفة لعلاقة الباب

StackOverflow https://stackoverflow.com/questions/1537473

  •  20-09-2019
  •  | 
  •  

سؤال

والعمل مع VS 2008 و أوتوديسك ريفيت MEP 2010 في C # واني اسعى الى معرفة ما إذا كان الباب يتم الاتصال إلى الغرف:

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