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);
}
Он скомпилируется, однако может не дать требуемого результата.