Траектория цепи

Автор Тема: Траектория цепи  (Прочитано 2752 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Траектория цепи
« : 23-05-2019, 15:55:42 »
Интересует максимальная длина цепи из (FarthestDevice или AllDevices)


код на C#
Код - C# [Выбрать]
  1.  
  2.                 ElementId elementId = new ElementId(BuiltInParameter.RBS_ELEC_CIRCUIT_PANEL_PARAM);
  3.                 ParameterValueProvider providerPV = new ParameterValueProvider(elementId);
  4.                 FilterStringRuleEvaluator evaluatorFR = new FilterStringEquals();
  5.                 FilterRule filterRule = new FilterStringRule(providerPV,
  6.                                                              evaluatorFR,
  7.                                                              nameNKU,
  8.                                                              false);
  9.                 ElementParameterFilter filterEP = new ElementParameterFilter(filterRule);
  10.                 FilteredElementCollector collectors = new FilteredElementCollector(doc)
  11.                                                          .OfCategory(BuiltInCategory.OST_ElectricalCircuit)
  12.                                                          .WherePasses(filterEP);
  13.  
  14.                 foreach (Element item in collectors)
  15.                 {
  16.                  // как узнать максимальную длину с FarthestDevice или AllDevices?
  17.                   }
  18.  
  19.  



Отмечено как Решение sdv79 23-05-2019, 17:46:18

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Траектория цепи
« Ответ #1 : 23-05-2019, 16:54:06 »
У ElectricalSystem есть свойство Length.

Смотрим свойство ElectricalSystem.CircuitPathMode, если нужное нам, то просто берем Length, если нет, открываем транзакцию, присваиваем нужное нам значение этому свойству, вызываем Document.Regenerate(), считываем свойство Length, откатываем (RollBack) транзакцию.

Если систем много и они сложные, то, вероятно, код будет выполняться быстрее, если сначала всем ElectricalSystem во временной транзакции присвоить требуемое значение CircuitPathMode, и потом вызывать doc.Regenerate, но это не точно, нужно проверять

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

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Re: Траектория цепи
« Ответ #2 : 23-05-2019, 17:45:57 »
Спасибо! Все получилось.
« Последнее редактирование: 24-05-2019, 17:56:17 от sdv79 »