Pregunta

Trabajar con VS 2008 y Autodesk Revit MEP 2010 en C # que estoy tratando de averiguar si una puerta está conectando a las salas:

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));
    }
}

Este enfoque no funciona debido a que el valor de retorno de elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID) es siempre null.

He leído en el blog Edificio Coder que

  

Los parámetros integrados no son una parte con apoyo oficial de la API. En   futuro que esperamos que será reemplazado por datos que están siendo adecuadamente expuestos como   una propiedad.

¿Es cierto que la declaración? ¿Puede alguien que me señale una forma eficaz de obtener la relación entre puertas y habitaciones?

¿Fue útil?

Solución

Las puertas son casos familiares, de modo

Autodesk.Revit.Elements.FamilyInstance elementDoor = elementsetiteratorBIMDoors.Current as Autodesk.Revit.Elements.FamilyInstance;

Room fromRoom = elementDoor.FromRoom;
Room toRoom = elementDoor.ToRoom;

debe trabajar para ello.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top