ReplaceParameter

Автор Тема: ReplaceParameter  (Прочитано 6026 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 107
  • Карма: 6
ReplaceParameter
« : 21-04-2015, 12:30:49 »
Здравствуйте, подскажите, пожалуйста, как изменить значение BuiltInParameterGroup у параметра?
Я использовал метод:

 mgr.ReplaceParameter(mgr.get_Parameter(parameter), mgr.get_Parameter(parameter).Definition.Name, builtGroup, true);
Выдает исключение: Cannot replace a family parameter with another family parameter, use RenameParameter() instead.
С переименованием параметра у меня не возникает проблем, но мне нужно изменить группу.
« Последнее редактирование: 21-04-2015, 17:49:09 от Антон Останин »

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: ReplaceParameter
« Ответ #1 : 22-04-2015, 07:00:33 »
День добрый. Из описания метода в SDK:
Цитировать
Replace a shared family parameter with a new non-shared family parameter.

т.е. второй параметр должен быть новым,  mgr.get_Parameter(parameter).Definition.Name возвращает существующий. Кроме того, насколько я понял из SDK заменять параметры можно shared - non-shared или наоборот, я, конечно, не знаю Вашу задачу, но что-то мне подсказывает, что с этим возможны проблемы.

Наверное, Вам проще будет удалить и пересоздать параметр семейства с нужной группой

Отмечено как Решение Антон Останин 22-04-2015, 18:34:01

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

  • ADN OPEN
  • ***
  • Сообщений: 107
  • Карма: 6
Re: ReplaceParameter
« Ответ #2 : 22-04-2015, 10:28:13 »
Спасибо, придется так и сделать.
Код - C# [Выбрать]
  1. FamilyParameter param = mgr.get_Parameter(parameterName);
  2. FamilyParameter newParam = mgr.AddParameter(parameterName + "new", builtGroup, param.Definition.ParameterType, true);    
  3. mgr.RemoveParameter(param);
  4. mgr.RenameParameter(newParam, parameterName);
« Последнее редактирование: 22-04-2015, 10:40:26 от Виктор Чекалин »

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: ReplaceParameter
« Ответ #3 : 22-04-2015, 10:39:31 »
Антон Останин, добырый день.

В интерфесе это сделать можно, а, значит, и велика вероятность, что это можно сделать и через API.

Нужно копать в сторону метода BindingMap.ReInsert.

Попробовать реализацию смогу позже, а пока, попытайтесь сами. Вот эта статья может помочь вам понять, как добраться до определений уже существующих параметров.

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

  • ADN OPEN
  • ***
  • Сообщений: 107
  • Карма: 6
Re: ReplaceParameter
« Ответ #4 : 22-04-2015, 10:48:13 »
Благодарю, Виктор.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: ReplaceParameter
« Ответ #5 : 23-04-2015, 17:00:29 »
Проверил. Предложенный мною метод не работает в реадкторе семейств.
Выходит решение только одно - создание нового параметра с нужной группой.