質問

図面のすべての機器を繰り返して、機器の名前を取得したいと思います。

これが私が持っているものです:

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

助言がありますか?

役に立ちましたか?

解決

Eviewsはのリストです Element 一方、あなたは彼らがそうであるかのようにそれらを反復しようとしています ElectricalEquipment. 。そうでもなければ Element 継承します ElectricalEquipment または、明示的なキャストオペレーターがいるので、これを行うことはできません。

ループを変更した場合:

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

コンパイルされますが、必要な結果は生成されない可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top