Нахождение списка элементов(светильников, выключателей) групповой сети освещения

Автор Тема: Нахождение списка элементов(светильников, выключателей) групповой сети освещения  (Прочитано 811 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн IuriiАвтор темы

  • ADN OPEN
  • Сообщений: 20
  • Карма: 0
Доброе время суток!
В программе захотел посмотреть список светильников групповой линии (ну, это моя специфика).
RevitLookup говорит, что искать надо где-то:





т.е. здесь я вижу список

попробовал посмотреть в C#:
там показывает:





т.е. здесь я тоже его вижу,но,
за отсутствием опыта, не могу понять как собрать список нагрузок линии.


Отмечено как Решение Iurii 27-06-2020, 09:41:08

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 813
  • Карма: 254
  • Skype: alexandr.ignatovich.itc
Как-то так, видимо:
Код - C# [Выбрать]
  1. public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  2. {
  3.         var uiapp = commandData.Application;
  4.         var uidoc = uiapp.ActiveUIDocument;
  5.         var doc = uidoc.Document;
  6.  
  7.         var report = new StringBuilder();
  8.  
  9.         var electricalSystems = FindElectricalSystems(doc);
  10.  
  11.         foreach (var electricalSystem in electricalSystems)
  12.         {
  13.                 report.AppendLine($"{electricalSystem.Name}");
  14.  
  15.                 var terminalElementsNames = electricalSystem
  16.                         .Elements
  17.                         .Cast<Element>()
  18.                         .Select(x => x.Name);
  19.  
  20.                 report.AppendLine(string.Join(Environment.NewLine, terminalElementsNames));
  21.  
  22.                 report.AppendLine();
  23.         }
  24.  
  25.         const string path = @"C:\Projects\dev workshop\es-report.txt";
  26.  
  27.         File.WriteAllText(path, report.ToString());
  28.  
  29.         Process.Start(path);
  30.        
  31.         return Result.Succeeded;
  32. }
  33.  
  34. private static IEnumerable<ElectricalSystem> FindElectricalSystems(Document document)
  35. {
  36.         var collector = new FilteredElementCollector(document);
  37.  
  38.         return collector
  39.                 .OfClass(typeof (ElectricalSystem))
  40.                 .Cast<ElectricalSystem>();
  41. }

Оффлайн IuriiАвтор темы

  • ADN OPEN
  • Сообщений: 20
  • Карма: 0
Спасибо!
Не удавалось вытащить эти элементы, потому, что сама электрическая система (групповая линия) была определена как Element. После преобразования Element as ElectricalSystem список нагрузок групповой линии был получен.