public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var uiapp = commandData.Application;
var uidoc = uiapp.ActiveUIDocument;
var doc = uidoc.Document;
var report = new StringBuilder();
var electricalSystems = FindElectricalSystems(doc);
foreach (var electricalSystem in electricalSystems)
{
report.AppendLine($"{electricalSystem.Name}");
var terminalElementsNames = electricalSystem
.Elements
.Cast<Element>()
.Select(x => x.Name);
report.AppendLine(string.Join(Environment.NewLine, terminalElementsNames));
report.AppendLine();
}
const string path = @"C:\Projects\dev workshop\es-report.txt";
File.WriteAllText(path, report.ToString());
Process.Start(path);
return Result.Succeeded;
}
private static IEnumerable<ElectricalSystem> FindElectricalSystems(Document document)
{
var collector = new FilteredElementCollector(document);
return collector
.OfClass(typeof (ElectricalSystem))
.Cast<ElectricalSystem>();
}