0

図面内のすべての機器を反復処理して、機器の名前を取得したいと考えています。

ここに私が持っているものがあります:

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' に変換できません

助言がありますか?

4

1 に答える 1

0

eViewsは、Elementあたかもそれらを繰り返し処理しようとしているのに対して、のリストですElectricalEquipmentElement明示的なキャスト演算子を継承するか、持っていない限りElectricalEquipment、これを行うことはできません。

forループを次のように変更した場合:

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

コンパイルされますが、必要な結果が得られない場合があります。

于 2010-09-10T00:35:05.960 に答える