Параметр типа YES/NO

Автор Тема: Параметр типа YES/NO  (Прочитано 8246 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Параметр типа YES/NO
« : 15-05-2015, 17:31:46 »
Здравствуйте подскажите пожалуйста ка получить и задать значение параметрам типа Да/Нет?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметр типа YES/NO
« Ответ #1 : 15-05-2015, 18:30:52 »
Ярослав, у параметра типа Да/Нет тип данных равен Integer. Соответственно чтобы получить значение параметра, нужно воспользоваться методом Parameter.AsInteger(). А чтобы установить значение - Parameter.Set(1) или Parameter.Set(0) для Да или нет соответственно.

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметр типа YES/NO
« Ответ #2 : 15-05-2015, 22:13:36 »
Ну я так же пробовал только вот у меня при создании параметра он сразу true. При этом если получить значение Parameter.AsInteger() то оно равно (0).При Parameter.Set(1) ничего не происходит.
 Можно ли сделать так чтоб при создании параметр был false.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметр типа YES/NO
« Ответ #3 : 16-05-2015, 09:11:43 »
Параметр общий или встроенный?
Нужен false при создании параметра или все же при создании объекта, у которого есть этот параметр?

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметр типа YES/NO
« Ответ #4 : 16-05-2015, 22:25:21 »
Параметр общий, и нужно чтоб при создании параметра и добавления его в проект он создавался false, ну и для новых объектов которые будут создаваться он был false.

Отмечено как Решение Ярослав 18-05-2015, 16:05:33

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметр типа YES/NO
« Ответ #5 : 18-05-2015, 13:59:45 »
Ярослав, кажется понял что вы имеете ввиду.
Дело в том, что при создании объекта, значение общего параметра типа Да/Нет не задано. Говоря языком программирования, оно равно null. Т.е. его значение на Да ни Нет.
После создания объекта в значении параметра видим вот что:

Значение параметра помечено серым цветом, значит оно не задано. И то что оно помечено галочкой, это не значит, что значение равно Да.
Поэтому при чтении параметра вы получили 0.
Если воспользоваться RevitLookup, то можно увидеть и значение самого параметра и значение свойства HasValue. Как видно, оно по умолчанию равно False.


Как я описал, значение корректно устанавливается. Если у вас не получилось, значит где-то ошибка в коде.
Я пробовал вот так:
Код - C# [Выбрать]
  1.                         var collector = new FilteredElementCollector(doc);
  2.                        
  3.                         var walls = collector.OfClass(typeof(Wall)).ToElements();
  4.                        
  5.                         using (var t = new Transaction(doc, "Изменение параметра"))
  6.                         {                      
  7.                                 t.Start();
  8.                                
  9.                                 foreach (var element in walls) {
  10.                                         var parameter = element.GetParameters("ADN-CIS").FirstOrDefault();
  11.                                         parameter.Set(1);
  12.                                 }
  13.                                
  14.                                 t.Commit();
  15.                         }
  16.                                

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

  • ADN OPEN
  • **
  • Сообщений: 82
  • Карма: 1
Re: Параметр типа YES/NO
« Ответ #6 : 18-05-2015, 16:10:04 »
Спасибо.
Да, это у меня была ошибка я уже исправил, задается значение корректно.
Вот меня и серенькое смущало а теперь уже и привык.)))

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметр типа YES/NO
« Ответ #7 : 18-05-2015, 16:54:58 »
Вот меня и серенькое смущало
Сейчас вспоминаю, что меня это тоже смущало на этапе ознакомления с Revit API. Есть некая нелогичность, между отображением значения параметра (с галочкой, хоть и серой) и значением параметра, полученным через API.

Оффлайн miko

  • ADN OPEN
  • **
  • Сообщений: 55
  • Карма: 0
Re: Параметр типа YES/NO
« Ответ #8 : 01-11-2015, 02:22:38 »
серенькое потому что не параметр проекта

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Параметр типа YES/NO
« Ответ #9 : 01-11-2015, 19:02:27 »
серенькое потому что не параметр проекта
Нет, потому что значение для параметра не задано.