Метод ScheduleDefinition.GetSchedulableFields возвращает больше полей чем в интерфейсе
Когда мы создаем спецификацию в Revit, то мы можем выбирать поля:
Соответствующий способ получить эти поля при помощи Revit API – это использование метода ViewSchedule.ScheduleDefinition.GetSchedulableFields(). Но по каким-то причинам он возвращает больше полей, чем мы видим в интерфейсе. Что за невидимые поля?
Оказывается, что в пользовательском интерфейсе, помимо видимых полей, мы можем также добавить общий параметр или параметр проекта в качестве поля, нажав кнопку Добавить параметр.
Таким образом вопрос состоит в том, как узнать какие же поля видимы в интерфейсе, а какие нет.
Ответ прост. Нужно проверить свойство SchedulableField.ParameterId. Если оно больше 0, то это общий параметр или параметр проекта.
- var fields = viewSchedule.Definition.GetSchedulableFields();
- foreach (var field in fields)
- {
- if (field.ParameterId.IntegerValue < 0)
- {
- // параметры видимы в интерфейсе
- }
- else
- {
- // общий параметр или параметр проекта.
- }
- }
Обсуждение: http://adn-cis.org/forum/index.php?topic=2708
Опубликовано 16.05.2015