Revit MEP 2011 C# перебирает все оборудование

Я хочу перебрать все оборудование на чертеже и получить название оборудования.

Вот что у меня есть:

UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Application app = uiapp.Application;
Document doc = uidoc.Document;

// get all PanelScheduleView instances in the Revit document.
FilteredElementCollector fec = new FilteredElementCollector(doc);
ElementClassFilter EquipmentViewsAreWanted = 
  new ElementClassFilter(typeof(ElectricalEquipment));
fec.WherePasses(EquipmentViewsAreWanted);
List<Element> eViews = fec.ToElements() as List<Element>;

StringBuilder Disp = new StringBuilder();

foreach (ElectricalEquipment element in eViews)
{
    Disp.Append("\n" + element.);
}

System.Windows.Forms.MessageBox.Show(Disp.ToString());

Я получаю следующую ошибку на foreach цикл:

Невозможно преобразовать тип 'Autodesk.Revit.DB.Element' в 'Autodesk.Revit.DB.Electrical.ElectricalEquipment'

Какие-либо предложения?

1 ответ

Решение

eViews - это список Element в то время как вы пытаетесь перебрать их, как будто они ElectricalEquipment, Если не Element наследуется от ElectricalEquipment или имеет явный оператор приведения, вы не сможете сделать это.

Если вы измените цикл for на:

foreach(Element element in eViews)
{
    Disp.Append("\n" + element);
}

Он скомпилируется, однако может не дать требуемого результата.

Другие вопросы по тегам