Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: sdv79 от 23-05-2019, 15:55:42

Название: Траектория цепи
Отправлено: sdv79 от 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.  


Название: Re: Траектория цепи
Отправлено: Александр Игнатович от 23-05-2019, 16:54:06
У ElectricalSystem есть свойство Length.

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

Если систем много и они сложные, то, вероятно, код будет выполняться быстрее, если сначала всем ElectricalSystem во временной транзакции присвоить требуемое значение CircuitPathMode, и потом вызывать doc.Regenerate, но это не точно, нужно проверять
Название: Re: Траектория цепи
Отправлено: sdv79 от 23-05-2019, 17:45:57
Спасибо! Все получилось.