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

29/08/2015

InvalidOperationException при использовании метода FamilyManager.Set

Вопрос: Не могли бы вы подтвердить, что действительно невозможно установить значение параметра семейства, если не задан активный типоразмер?

Ответ: В редакторе семейств при вызове метода FamillyManager.Set(FamilyParameter) возникает исключение InvalidOperationException: There is no current type (не задан активный типоразмер).

Пример кода:

Код - C#: [Выделить]
  1. var para = RevitDoc.FamilyManager.AddParameter("Length", BuiltInParameterGroup.INVALID, ParameterType.Length, false);
  2. RevitDoc.FamilyManager.Set(para, 123.1);

Разрешается создать новый параметр, когда типоразмеры в принципе отсутствуют, но не разрешается задавать значение параметра, так как значение параметра относится уже к конкретному типоразмеру.

Поэтому, нужно перед вызовом метода FamillyManager.Set делать дополнительную проверку на существование активного типоразмера:

Код - C#: [Выделить]
  1. if (familyMgr.CurrentType == null)
  2.     familyMgr.NewType("A new type");
  3. var para = familyMgr.AddParameter("Length", BuiltInParameterGroup.INVALID, ParameterType.Length, false);
  4. RevitDoc.FamilyManager.Set(para, 123.1);

Источник: http://adndevblog.typepad.com/aec/2015/07/revitapi-familymanagerset-invalidoperationexception-and-get-members-from-assemblyinstance.html

Автор перевода: Виктор Чекалин

Обсуждение: http://adn-cis.org/forum/index.php?topic=2960

Опубликовано 29.08.2015