Имя параметра

Автор Тема: Имя параметра  (Прочитано 6407 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Имя параметра
« : 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 08-10-2014, 06:52:22

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Имя параметра
« Ответ #1 : 29-09-2014, 08:32:01 »
shss, конечно есть.
Для встроенных параметров есть свойство BuiltInParameter. Используйте его, чтобы искать параметр без привязки к языку. Для общих параметров, параметр можно искать по GUID параметра.
Для того, чтобы определить значение BuiltInParameter, можно воспользоваться утилитой RevitLookup.

Кстати, использовать LINQ для поиска параметра конечно можно, но не нужно. В Revit API для этого есть встроенные методы:
  • Element.getParameter()
  • Element.GetParameters(string name) (в Revit 2015)

Всегда имейте ввиду, что параметров с одинаковым именем у элемента может быть несколько. Поэтому поиск по BuiltInParameter более надежен.

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Имя параметра
« Ответ #2 : 29-09-2014, 11:15:55 »
Виктор Чекалин, спасибо за ответ!
Все исправил - работает, как часы!