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

ADN Club => Revit API => Тема начата: enot от 11-04-2022, 14:01:22

Название: StorageType из SharedParameterElement
Отправлено: enot от 11-04-2022, 14:01:22
как получить StorageType из SharedParameterElement
Название: Re: StorageType из SharedParameterElement
Отправлено: Александр Игнатович от 11-04-2022, 15:03:28
StorageType есть только у Parameter-а + возможность получить для BuiltInParameter-ов. Возможно, тебе поможет InternalDefinition, возвращаемый методом GetDefinition(), там есть возможность получить GetDataType.
Название: Re: StorageType из SharedParameterElement
Отправлено: enot от 11-04-2022, 15:08:18
GetDataType это для 22 версии

Пробовал
doc.get_TypeOfStorage(SharedParameterElement.GetDefinition().BuiltInParameter), но там null где то возвращает

Такой вопрос ,  uidoc.Document и ViewSchedule.Document - это одно и тоже?
Название: Re: StorageType из SharedParameterElement
Отправлено: Александр Игнатович от 11-04-2022, 15:26:47
GetDataType это для 22 версии

Свойство UnitType тогда, смысл примерно тот же.

doc.get_TypeOfStorage(SharedParameterElement.GetDefinition().BuiltInParameter)

Ну так откуда там BuiltInParameter-у взяться?


Такой вопрос ,  uidoc.Document и ViewSchedule.Document - это одно и тоже?

да
Название: Re: StorageType из SharedParameterElement
Отправлено: enot от 11-04-2022, 15:49:50
StorageType есть только у Parameter-а
а Parameter есть только у Element-а )
Название: Re: StorageType из SharedParameterElement
Отправлено: Александр Игнатович от 11-04-2022, 15:53:59
А это что тогда?

(https://i.postimg.cc/jwjddPbP/Screenshot-2022-04-11-155314.png) (https://postimg.cc/jwjddPbP)
Название: Re: StorageType из SharedParameterElement
Отправлено: Александр Игнатович от 11-04-2022, 15:55:06
Пардон, да, криво прочитал.

Да, так и есть, только у Element-а. Ну щито поделать
Название: Re: StorageType из SharedParameterElement
Отправлено: enot от 11-04-2022, 15:57:21
взять первый элемент

Код - C# [Выбрать]
  1.  var schedule_first_elemen = new FilteredElementCollector(doc, schedule.Id)
  2.                 .First()
  3.  
  4. SchedulableField field = schedule.Definition.GetField(id).GetSchedulableField();
  5.  
  6. schedule_first_element.GetOrderedParameters().Where(x=>x.Id==(field.ParameterId)).FirstOrDefault() .StorageType

сейчас попробую...

не, такое не работает)
Название: Re: StorageType из SharedParameterElement
Отправлено: Александр Игнатович от 11-04-2022, 16:02:45
Ага, и с большой вероятностью упасть с null reference exception
Название: Re: StorageType из SharedParameterElement
Отправлено: enot от 11-04-2022, 16:03:27
Ага, и с большой вероятностью упасть с null reference exception
- что и вышло

Почему такое происходит? все элементы одной категории
Название: Re: StorageType из SharedParameterElement
Отправлено: Александр Игнатович от 11-04-2022, 16:45:50
Да тут целое минное поле, где может упасть...

Во-первых, в модели может и не быть элементов, попадающих в спецификацию или вообще не быть элементов с нужным параметром
Во-вторых, если речь о пользовательских семействах, то параметр может и не присутствовать в некоторых элементах спецификации
В-третьих, в спецификации могут быть элементы из связанных файлов, есть вероятность получить RevitLinkInstance в schedule_first_element
В-четвёртых, в спецификации может и не быть нужного столбца
Название: Re: StorageType из SharedParameterElement
Отправлено: enot от 11-04-2022, 16:55:09
Свойство UnitType тогда,
тогда уж лучше это