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