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

ADN Club => Revit API => Тема начата: sdv79 от 18-11-2019, 21:48:51

Название: Активная электрическая мощность элемента
Отправлено: sdv79 от 18-11-2019, 21:48:51
Подскажите как получить встроенный параметр активной мощности элемента в категории электрические приборы "OST_ElectricalFixtures". RevitLookup выдает информацию только по электрическим цепям.
Название: Re: Активная электрическая мощность элемента
Отправлено: Александр Игнатович от 19-11-2019, 09:53:12
Какой именно параметр? И, случаем, не в ElectricalSystem ли нужно его искать?
Название: Re: Активная электрическая мощность элемента
Отправлено: sdv79 от 19-11-2019, 10:44:34
Параметр мощность, но его не видно в элементе. Если заходить в ElectricalSystem - то он начинает работать с цепями, а мне нужны мощности элементов.
Ссылка на файл:
https://drive.google.com/open?id=1UWKU5G2sierboqKs0t4OBWIFeH6EK4i4 (https://drive.google.com/open?id=1UWKU5G2sierboqKs0t4OBWIFeH6EK4i4)

(https://i.postimg.cc/QHM4XGPv/19-11-2019-104240.png) (https://postimg.cc/QHM4XGPv)
Название: Re: Активная электрическая мощность элемента
Отправлено: Александр Игнатович от 19-11-2019, 11:06:52
Всё, понял, спасибо за пример.

Смотрите, сначала из семейства нужно получить нужный коннектор, относящийся к интересуемой системе.

Дальше получаем:
Код - C# [Выбрать]
  1. var mepConnectorInfo = connector.GetMEPConnectorInfo();

Из него вытаскиваем значение параметра ParameterValue:
Код - C# [Выбрать]
  1. var parameterValue = (DoubleParameterValue)mepConnectorInfo.GetConnectorParameterValue(new ElementId(BuiltInParameter.RBS_ELEC_APPARENT_LOAD));

И финальный аккорд:
Код - C# [Выбрать]
  1. var value = UnitUtils.ConvertFromInternalUnits(parameterValue .Value, DisplayUnitType.DUT_WATTS);
Название: Re: Активная электрическая мощность элемента
Отправлено: sdv79 от 19-11-2019, 13:27:00
Не определяет метод "GetConnectorParameterValue"
Код - C# [Выбрать]
  1.  
  2.      Reference pickedObj = sel.PickObject(ObjectType.Element, "Выберите элемент");
  3.             ElementId selectedId = pickedObj.ElementId;
  4.             Element element = doc.GetElement(selectedId);
  5.  
  6.             List<double> _value = new List<double>();
  7.             foreach (Connector connector in ((FamilyInstance)element).MEPModel.ConnectorManager.Connectors)
  8.             {
  9.                 var mepConnectorInfo = connector.GetMEPConnectorInfo();
  10.                 var parameterValue = (DoubleParameterValue)mepConnectorInfo.GetConnectorParameterValue(new ElementId(BuiltInParameter.RBS_ELEC_APPARENT_LOAD));
  11.                 var value = UnitUtils.ConvertFromInternalUnits(parameterValue.Value, DisplayUnitType.DUT_WATTS);
  12.                 _value.Add(value);
  13.             }
  14.  
  15.  
  16.  
(https://i.postimg.cc/GT8QHvFs/19-11-2019-132613.png) (https://postimg.cc/GT8QHvFs)
Название: Re: Активная электрическая мощность элемента
Отправлено: Александр Игнатович от 19-11-2019, 13:53:07
Да, нужно привести к MEPFamilyConnectorInfo, тестил в Iron python.

В коде нужно, всё-таки, фильтровать коннекторы, хотя бы по домену, а ещё лучше смотреть электрическую систему
Название: Re: Активная электрическая мощность элемента
Отправлено: sdv79 от 19-11-2019, 13:56:20
Получилось - спасибо.
Рабочий вариант, первый тоже будет работать если сделать приведение))
Код - C# [Выбрать]
  1.        System.Collections.IEnumerator it = faminst.MEPModel.ConnectorManager.Connectors.ForwardIterator();
  2.             while (it.MoveNext())
  3.             {
  4.                 Connector conn = it.Current as Connector;
  5.  
  6.                 MEPFamilyConnectorInfo famConnInfo = conn.GetMEPConnectorInfo() as MEPFamilyConnectorInfo;
  7.  
  8.                 ParameterValue param = famConnInfo.GetConnectorParameterValue(new ElementId(
  9.                     BuiltInParameter.RBS_ELEC_APPARENT_LOAD));            
  10.             }
  11. // для не null param
  12.  var value = UnitUtils.ConvertFromInternalUnits(((DoubleParameterValue)param).Value, DisplayUnitType.DUT_WATTS);
  13.  
Название: Re: Активная электрическая мощность элемента
Отправлено: Александр Игнатович от 19-11-2019, 14:06:07
А потом упадет с NullReferenceException в строке famConnInfo.GetConnectorParameterValue...
Название: Re: Активная электрическая мощность элемента
Отправлено: sdv79 от 19-11-2019, 14:13:19
Не должен, если сделать проверку.

(https://i.postimg.cc/0zbWHtVD/19-11-2019-141227.png) (https://postimg.cc/0zbWHtVD)