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

ADN Club => Revit API => Тема начата: enot от 24-12-2018, 08:09:06

Название: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 08:09:06
 есть FamilyInstance
FamilyInstance.Parameters - получаем параметры экземпляра
FamilyInstance=>FamilySymbol.Parameters - параметры типа
Как получить (из какого элемента/типа/метода) сразу все (тип/экземпляр) параметры?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Пекшев aka Modis от 24-12-2018, 08:12:03
Может утро так влияет, но я вопроса не понял))
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 08:16:35
Как из семейства получить все параметры типа и параметры экземпляра ?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Пекшев aka Modis от 24-12-2018, 08:18:18
Так получить два списка, а потом их соединить в один. Других способов нет
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 08:27:39
Понятно. Это и хотел уточнить)
Есть еще способ получить параметры через редактор семейств
FamilyDoc =doc.EditFamily(Family)
Далее что то там вроде
 FamilyManager.Parameters
Какие при этом будут возвращены параметры?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 10:50:09
Может утро так влияет, но я вопроса не понял))

+1

Вообще, чуть более общий метод:

1) список - параметры экземпляра elem.Parameters
2) doc.GetElement(elem.GetTypeId())?.Parameters - так будет работать не только для пользовательских семейств, но и для системных, типа стен, перекрытий, ...

Ну и да, объединить эти 2 списка




FamilyDoc =doc.EditFamily(Family)
Далее что то там вроде
 FamilyManager.Parameters


А это уже ни к чему, если не собираетесь менять что-то в самом семействе
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 11:28:16
А как быть если есть только Family и нужно получить его параметры экземпляра?

   
Код - C# [Выбрать]
  1.        Family fam ;
  2.             var fam_symbols=  fam.GetFamilySymbolIds();
  3.  
  4.             foreach (var x in fam_symbols)
  5.             {
  6.                 FamilySymbol symbol =doc.GetElement(x) as FamilySymbol;
  7.  
  8.                 var sym_pars= symbol.Parameters; // тут мы получим параметры типа (не экземпляра)
  9.  
  10.             }
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 11:50:12
Создать инстанс, либо найти существующий, ну либо через EditFamily -> FamilyManager.Parameters.
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 12:31:58
Создать инстанс
- Не, семейство находится во внешней папке.


EditFamily -> FamilyManager.Parameters.
Значит, все-таки, эта штука  возращает параметры типа и экземпляра ?)
 
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Пекшев aka Modis от 24-12-2018, 12:34:57
Не, семейство находится во внешней папке
Ну и что? Вы загружаете семейство, активируете его, читаете параметры с экземпляра, а потом откатываете транзакцию
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 12:54:48
Вы загружаете семейство
После загрузки оно будет в проекте (если нет размещенных экземпляров), но чтобы получить FamilyInstance нужно это семейство где то разместить , правильно?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Пекшев aka Modis от 24-12-2018, 14:12:21
Вы загружаете семейство
После загрузки оно будет в проекте (если нет размещенных экземпляров), но чтобы получить FamilyInstance нужно это семейство где то разместить , правильно?
Да, все верно
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 14:21:32
Зачем усложнять жизнь, если нужно считать семейства из папки?

Получаем документ Application.OpenDocumentFile("<путь к семейству>"), читаем FamilyManager.Parameters, закрываем документ.

И да,
Значит, все-таки, эта штука  возращает параметры типа и экземпляра ?)

у FamilyParameter есть свойство IsInstance
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 16:21:00
читаем FamilyManager.Parameters
FamilyManager.Parameters дает FamilyParameter = > мне же нужно получить Parameter (все параметры типа/экземпляра)
 так как к примеру , требуется получить значение параметра (у FamilyParameter  я не нашел метода для этого (формулу получить можно , а значение - нет)):
http://www.revitapidocs.com/2018.1/4a9edc57-7ec7-addf-6bff-41d5feeaf43e.htm
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 16:23:34
Зачем?

Parameter есть только уже у семейства, загруженного в проект
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 16:26:33
Parameter есть только уже у семейства, загруженного в проект
Именно у семейства(Family - исходное  семейство во внешней папке, которое мы получем, выбрав FamilyInstance и нажав на "Редактировать семейство" ) или FamilyInstance?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 16:28:26
RevitLookup Вам всё подскажет. Вас, скорее всего, будут интересовать параметры экземпляров FamilyInstance или типоразмеров FamilySymbol
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 16:43:52
Делаю вывод: значение параметра экземпляра мы можем получить только у FamilyInstance?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 16:47:01
Не совсем.

Дефолтные можно получить в редакторе семейств.
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 16:48:32
Дефолтные можно получить в редакторе семейств.
каким образом?
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 16:51:02
В FamilyManager есть свойство Types - это типоразмеры, только здесь будет использован класс FamilyType, у него есть методы AsDouble, AsElementId, AsInteger, AsString, AsValueString. Передаете им аргументом FamilyParameter - получаете значение. Для Instance-овых параметров будет дефолтное значение
Название: Re: Параметры тип/экземпляр
Отправлено: enot от 24-12-2018, 17:18:54
В FamilyManager есть свойство Types - это типоразмеры, только здесь будет использован класс FamilyType, у него есть методы AsDouble, AsElementId, AsInteger, AsString, AsValueString. Передаете им аргументом FamilyParameter - получаете значение. Для Instance-овых параметров будет дефолтное значение
Работает)
Думаю этот ответ я и ждал.
Спасибо за терпение )
Название: Re: Параметры тип/экземпляр
Отправлено: Александр Игнатович от 24-12-2018, 17:20:13
Отлично!