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

08/04/2014

BindingMap в редакторе семейства

Вопрос: В своей надстройке я добавляю общий параметр в семейство, находясь в редакторе семейств. Все работало замечательно, начиная с версии 2009. Но в Revit 2014 версии метод создания параметра падает с исключением: «Невозможно получить свойство BindingMap в редакторе семейств» (Cannot get BindingMap of a family document.)

Как оказалось, исключение происходит при попытке воспользоваться свойством Document.ParameterBindings.

Можете объяснить в чем проблема и как мне обойти эту ошибку?

Ответ: Возможность добавить общий параметр с помощью BindingMap в редакторе семейств была убрана в 2014 версии.

Вместо этого необходимо воспользоваться одним из перегруженных методов FamilyManager.AddParameter.

В коде вы задаете определение общего параметра, присваиваете набор категорий, для которых необходимо этот параметр добавить, и в конце привязываете параметр. Но все это применимо только к проекту. Для редактора семейств, данные действия, по сути, не имеют смысла.

В редакторе семейств, вам нужно использовать только один метод AddParameter с подходящими параметрами, что значительно проще, чем старым способом.

В файле справки к RevitAPI в описании свойства Document.ParameterBindings явно указано, что будет выброшено исключение Autodesk.Revit.Exceptions.InvalidOperationException при использовании этого свойства в редакторе семейств.

Извиняемся что это повлияло на работоспособность вашего существующего кода.

Исправить же ошибку в коде довольно легко.

Просто удалите часть кода, в которой вы обращаетесь к свойству ParameterBindings и пытаетесь привязать параметр к семейству, и вызовите метод AddParameter для добавления общего параметра. Всего один метод заменяет шаги по установке категории и привязки к типу или к экземпляру.

Источник: http://thebuildingcoder.typepad.com/blog/2014/03/cannot-get-bindingmap-of-a-family-document.html

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

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