ADN Club => Revit API => Тема начата: enot от 28-08-2018, 08:20:58
Название: Параметр спецификации по имени
Отправлено: enot от 28-08-2018, 08:20:58
День добрый. Подскажите как получить параметр спецификации/его BuiltInParametr/ I'd по его имени? 1. Получили нужную через коллектор OST Shedules , далее?
Название: Re: Параметр спецификации по имени
Отправлено: Александр Пекшев aka Modis от 28-08-2018, 10:13:14
Во-первых - есть ScheduleInstance и есть ViewSchedule. Первое - это экземпляр спецификации на листе, а второе - это вид спецификации. Из первого можно найти и второе Во-вторых - у всех элементов, унаследованных от Element есть метод LookupParameter, который как-раз таки и ищет параметр по имени
Название: Re: Параметр спецификации по имени
Отправлено: enot от 28-08-2018, 10:37:45
У воздухораспределителей параметр "Пространство: Номер" можно увидеть только в спецификации.
Название: Re: Параметр спецификации по имени
Отправлено: Александр Игнатович от 28-08-2018, 14:19:31
У Definition спецификации есть метод ScheduleDefinition.GetSchedulableFields()
Цитировать
Return Value A list of SchedulableField objects representing the non-calculated/non-combined fields that may be included in the schedule.
Смотрим у полученных объектов значение свойства ParameterId, если его IntegerValue меньше 0, значит его можно привести к перечислению BuiltInParameter, если больше 0, то это SharedParameterElement - общий параметр.
Если работаем с BuiltInParameter, то можем напрямую сравнивать SchedulableField.ParameterId == new ElementId(BuiltInParameter....); Если у нас общий параметр, можем получить SharedParameterElement.Lookup(new Guid("<guid value>"), и уже сравнивать с его Id.
Название: Re: Параметр спецификации по имени
Отправлено: enot от 28-08-2018, 22:41:01
Есть ли способ получить BuiltInParameter зная ElementId ? Дело в том что Element_Id=field.ParameterId (получили отриц.значение) Parameter par = doc .GetElement(Element_Id) as Parameter ; ->Ничего не возврвщает, выдает ошибку
Название: Re: Параметр спецификации по имени
Отправлено: Александр Игнатович от 29-08-2018, 12:00:39
Преобразовать Id.IntegerValue к перечислению BuiltInParameter:
var bip =(BuiltInParameter)field.ParameterId.IntegerValue;
Название: Re: Параметр спецификации по имени
Отправлено: enot от 29-08-2018, 12:55:59
Параметр не имеет BuiltInCategory, верно? Параметр имеет только BuiltInParameter
Название: Re: Параметр спецификации по имени
Отправлено: Александр Игнатович от 29-08-2018, 13:26:12
Да. И имеет в самом документе некие сущности, которые можно получить, например, по Id только для общих и глобальных параметров. В этом случае Id.IntegerValue положительный. Если он отрицательный - то параметр встроенный