أوتوديسك ريفيت MEP 2010 API C # .NET غرفة لعلاقة الباب
سؤال
والعمل مع 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;
ويجب أن تعمل لذلك.
لا تنتمي إلى StackOverflow