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

16/05/2015

Метод ScheduleDefinition.GetSchedulableFields возвращает больше полей чем в интерфейсе

Когда мы создаем спецификацию в Revit, то мы можем выбирать поля:

 

Соответствующий способ получить эти поля при помощи Revit API – это использование метода ViewSchedule.ScheduleDefinition.GetSchedulableFields(). Но по каким-то причинам он возвращает больше полей, чем мы видим в интерфейсе. Что за невидимые поля?

Оказывается, что в пользовательском интерфейсе, помимо видимых полей, мы можем также добавить общий параметр или параметр проекта  в качестве поля, нажав кнопку Добавить параметр.

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

Ответ прост. Нужно проверить свойство SchedulableField.ParameterId. Если оно больше 0, то это общий параметр или параметр проекта.

Код - C#: [Выделить]
  1. var fields = viewSchedule.Definition.GetSchedulableFields();
  2. foreach (var field in fields)
  3. {
  4.     if (field.ParameterId.IntegerValue < 0)
  5.     {
  6.         // параметры видимы в интерфейсе
  7.     }
  8.     else
  9.     {
  10.         // общий параметр или параметр проекта.
  11.     }
  12. }

Источник: http://adndevblog.typepad.com/aec/2015/04/revitapi-scheduledefinitiongetschedulablefields-returns-more-fields-than-ui.html

Автор перевода: Виктор Чекалин

Обсуждение: http://adn-cis.org/forum/index.php?topic=2708

Опубликовано 16.05.2015