2010-09-10 78 views
0

我想遍历图形中的所有设备并获取设备的名称。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' 到 “欧特克。 Revit.DB.Electrical.ElectricalEquipment'

有什么建议吗?

回答

0

eViews是Element的列表,而您尝试对它们进行迭代,就好像它们是ElectricalEquipment一样。除非Element继承自ElectricalEquipment或者有明确的转换运算符,否则您将无法执行此操作。

如果for循环更改到:

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

这将编译,但它可能不会产生所需的结果。

+0

不完全是答案,但它把我带到了我正在寻找的东西。基本上,您可以使用fec.toArray()而不是toElements将电气设备组合成一个数组;然后迭代。谢谢您的帮助。 – CornCat 2010-09-14 00:28:29