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

ADN Club => Revit API => Тема начата: shss от 29-09-2014, 07:31:09

Название: Имя параметра
Отправлено: shss от 29-09-2014, 07:31:09
Добрый день!
Столкнулся с такой проблемой:
Для изменения параметров объекта использую процедуру поиска параметра по имени:
Parameter bc = pLst.First(p => p.Definition.Name == "Base Constraint");Но у пользователей стоят разные языковые пакеты для Revit'a ( :o), соответственно данный код неприменим для другого языкового пакета, так как будет
Parameter bc = pLst.First(p => p.Definition.Name == "Базовая зависимость");Переписывать под каждый языковой пакет - плохая идея.
Есть ли у параметра какое-нибудь внутреннее имя, с помощью которого я мог бы обращаться к параметру независимо от языка?

Спасибо
Название: Re: Имя параметра
Отправлено: Виктор Чекалин от 29-09-2014, 08:32:01
shss, конечно есть.
Для встроенных параметров есть свойство BuiltInParameter. Используйте его, чтобы искать параметр без привязки к языку. Для общих параметров, параметр можно искать по GUID параметра.
Для того, чтобы определить значение BuiltInParameter, можно воспользоваться утилитой RevitLookup (http://adn-cis.org/revitlookup-issleduem-bazu-dannyix-revit.html).

Кстати, использовать LINQ для поиска параметра конечно можно, но не нужно. В Revit API для этого есть встроенные методы:

Всегда имейте ввиду, что параметров с одинаковым именем у элемента может быть несколько. Поэтому поиск по BuiltInParameter более надежен.
Название: Re: Имя параметра
Отправлено: shss от 29-09-2014, 11:15:55
Виктор Чекалин, спасибо за ответ!
Все исправил - работает, как часы!