Доступ к типам и группировке параметров

Автор Тема: Доступ к типам и группировке параметров  (Прочитано 2506 раз)

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

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

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4

Можно как то извлечь данные в полях тип параметра и группировку параметров?
Группировка параметров как
Код - C# [Выбрать]
  1. BuiltInParameterGroup.PG_ANALYTICAL_MODEL
после BuiltInParameterGroup идет перебор доступных групп.
Тип параметра аналогично задается через ParameterType.
Существует ли метод, в который можно передать просто имя?

у типа параметра и группы (если в описании смотреть) есть некоторое числовое значение, может по нему можно получать необходимую группу или тип?

« Последнее редактирование: 27-11-2017, 09:05:55 от Виктор Чекалин »

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Я раза три прочитал вопрос и не понял о чем речь))
Вам нужно у элемента получить параметр? Или что?
Существует ли метод, в который можно передать просто имя?
По имени чего? Параметра? Конечно есть. Даже два варианта:
1. Сделать итерацию по всем параметрам элемента:
Код - C# [Выбрать]
  1. foreach (Parameter p in element.Parameters)
  2. {
  3.       p.Definition.Name - это имя параметра
  4. }
2. Использовать метод element.LookupParameter()
есть некоторое числовое значение
Это называется enum ))

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

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Александр Пекшев aka Modis, если кратко. Нужно вытащить тип параметра и группирование параметров. Метод BuiltInParameterGroup предоставляет 108 вариантов, в то время как в UI используется 44(45). Про ParameterType также достаточно много вариантов. А вот как сделать, чтобы по имени не пойму или по номеру (как на картинке).
Хотелось бы, чтобы пользователь выбрал тип параметра "Длина", в группу "Размеры" и в коде было
Код - C# [Выбрать]
  1. BuiltInParameterGroup("Length") или BuiltInParameterGroup("ID")  
аналогично для типа параметра.
Уж очееень много лишнего кода получится при добавлении параметра через API, т.к. обработать необходимо будет все варианты группирования 40+ и все варианты типа параметра.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Посмотрите в класс LabelUtils, а конкретно в метод GetLabelFor

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Уж очееень много лишнего кода получится при добавлении параметра через API
То что много получается кода при добавлении параметра - это да. Но что же вы там такого делаете, что вам так крайне необходимо имя?
Перечисления (enum) используются для того, чтобы избежать проблем локализации в том числе. И даже если локализация не планируется, то это как минимум, плохая практика, писать такой код, который будет зависеть от локализации.
А так, Александр  правильно сказал. Используйте LabelUtils.GetLabelFor. Класс возвращает локализованное значение перечислений. Но в коде в любом случае придется использовать перечисление, а не название.
Если вы используете в вашем интерфейсе выбор группы и типа, то используйте данный метод для отображения названий, но ключом будет являться все равно значение перечисления, которое вы будете использовать в коде.
Если же вам не нужно отображать название пользователю, а лишь в коде найти группу по имени, то я не понимаю, зачем это. Подставляйте перечисление и все.