Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: 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 == "Базовая зависимость");
Переписывать под каждый языковой пакет - плохая идея.
Есть ли у параметра какое-нибудь внутреннее имя, с помощью которого я мог бы обращаться к параметру независимо от языка?
Спасибо
-
shss, конечно есть.
Для встроенных параметров есть свойство BuiltInParameter. Используйте его, чтобы искать параметр без привязки к языку. Для общих параметров, параметр можно искать по GUID параметра.
Для того, чтобы определить значение BuiltInParameter, можно воспользоваться утилитой RevitLookup (http://adn-cis.org/revitlookup-issleduem-bazu-dannyix-revit.html).
Кстати, использовать LINQ для поиска параметра конечно можно, но не нужно. В Revit API для этого есть встроенные методы:
- Element.getParameter()
- Element.GetParameters(string name) (в Revit 2015)
Всегда имейте ввиду, что параметров с одинаковым именем у элемента может быть несколько. Поэтому поиск по BuiltInParameter более надежен.
-
Виктор Чекалин, спасибо за ответ!
Все исправил - работает, как часы!