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

ADN Club => Revit API => Тема начата: Agens от 16-05-2020, 21:52:12

Название: Общие параметры. "Новый поворот".
Отправлено: Agens от 16-05-2020, 21:52:12
В одном из крупных приложений к Revit заметил один момент - добавление общего параметра к конкретному семейству, а не ко всей категории, допустим, "Воздухораспределители".
Гуру, вы знаете как это сделать программно? Спасибо...
ПС:  в "Параметрах проекта" Ревита в списке нет данной категории...

(https://i.postimg.cc/r0Ck61cK/picturemessage-cfngxskl-uoz.png) (https://postimg.cc/r0Ck61cK)

(https://i.postimg.cc/2LkfC18T/picturemessage-xihnou4n-5mi.png) (https://postimg.cc/2LkfC18T)
Название: Re: Общие параметры. "Новый поворот".
Отправлено: Александр Игнатович от 16-05-2020, 22:46:51
Гуру, вы знаете как это сделать программно? Спасибо...

Сначала, следует разобраться, как это сделать руками :-) Подскажу, отредактировать семейство, создать параметр, загрузить семейство обратно в проект. Собственно, программно это делается ровно так же.

Дальше твой вопрос разбивается на несколько:
1. Как отредактировать? - методом Document.EditFamily получаем документ семейства
2. Как создать общий параметр семейства? - методом Document.FamilyManager.AddParameter:
Код - C# [Выбрать]
  1. public FamilyParameter AddParameter(
  2.         ExternalDefinition familyDefinition,
  3.         BuiltInParameterGroup parameterGroup,
  4.         bool isInstance
  5. )

Здесь, напомню, работаем с документом именно семейства (из п.1), естественно, не забываем о транзакциях. Определение общего параметра получаем из файла общих параметров. Методом Application.OpenSharedParameterFile получаем DefinitionFile, дальше структура повторяет то, что ты видишь в UI, группы, сами параметры и т.д.
3. Как загрузить семейство в проект обратно? - метод Document.LoadFamily -
Код - C# [Выбрать]
  1. public Family LoadFamily(
  2.         Document targetDocument,
  3.         IFamilyLoadOptions familyLoadOptions
  4. )

Второй параметр - либо сам реализуешь интерфейс, либо можешь воспользоваться UIDocument.GetRevitUIFamilyLoadOptions - стандартный диалог при замене семейства.

Ну и в конце, желательно закрыть документ семейства, открытый в п.1

Название: Re: Общие параметры. "Новый поворот".
Отправлено: Agens от 16-05-2020, 22:56:20
попробую, спасибо, но в "приложении" это делается довольно "тихо", правда требуется "обновить"...
мне показалось, что это очень удобный прием...