Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: Ярослав от 15-05-2015, 17:31:46

Название: Параметр типа YES/NO
Отправлено: Ярослав от 15-05-2015, 17:31:46
Здравствуйте подскажите пожалуйста ка получить и задать значение параметрам типа Да/Нет?
Название: Re: Параметр типа YES/NO
Отправлено: Виктор Чекалин от 15-05-2015, 18:30:52
Ярослав, у параметра типа Да/Нет тип данных равен Integer. Соответственно чтобы получить значение параметра, нужно воспользоваться методом Parameter.AsInteger(). А чтобы установить значение - Parameter.Set(1) или Parameter.Set(0) для Да или нет соответственно.
Название: Re: Параметр типа YES/NO
Отправлено: Ярослав от 15-05-2015, 22:13:36
Ну я так же пробовал только вот у меня при создании параметра он сразу true. При этом если получить значение Parameter.AsInteger() то оно равно (0).При Parameter.Set(1) ничего не происходит.
 Можно ли сделать так чтоб при создании параметр был false.
Название: Re: Параметр типа YES/NO
Отправлено: Виктор Чекалин от 16-05-2015, 09:11:43
Параметр общий или встроенный?
Нужен false при создании параметра или все же при создании объекта, у которого есть этот параметр?
Название: Re: Параметр типа YES/NO
Отправлено: Ярослав от 16-05-2015, 22:25:21
Параметр общий, и нужно чтоб при создании параметра и добавления его в проект он создавался false, ну и для новых объектов которые будут создаваться он был false.
Название: Re: Параметр типа YES/NO
Отправлено: Виктор Чекалин от 18-05-2015, 13:59:45
Ярослав, кажется понял что вы имеете ввиду.
Дело в том, что при создании объекта, значение общего параметра типа Да/Нет не задано. Говоря языком программирования, оно равно null. Т.е. его значение на Да ни Нет.
После создания объекта в значении параметра видим вот что:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fcontent.screencast.com%2Fusers%2FVictorChekalin%2Ffolders%2FJing%2Fmedia%2F73c7967e-5ee6-4714-a468-3cae16cefb57%2F2015-05-18_1549.png&hash=7f328ef6a006838d002747103fcb1c23)
Значение параметра помечено серым цветом, значит оно не задано. И то что оно помечено галочкой, это не значит, что значение равно Да.
Поэтому при чтении параметра вы получили 0.
Если воспользоваться RevitLookup, то можно увидеть и значение самого параметра и значение свойства HasValue. Как видно, оно по умолчанию равно False.
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fcontent.screencast.com%2Fusers%2FVictorChekalin%2Ffolders%2FJing%2Fmedia%2F1a8817a0-2ddc-4fec-9083-c8af78a33b01%2F2015-05-18_1554.png&hash=d8c2fbf88a9669e9528b6932c55766e8)

Как я описал, значение корректно устанавливается. Если у вас не получилось, значит где-то ошибка в коде.
Я пробовал вот так:
Код - 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.                                
Название: Re: Параметр типа YES/NO
Отправлено: Ярослав от 18-05-2015, 16:10:04
Спасибо.
Да, это у меня была ошибка я уже исправил, задается значение корректно.
Вот меня и серенькое смущало а теперь уже и привык.)))
Название: Re: Параметр типа YES/NO
Отправлено: Виктор Чекалин от 18-05-2015, 16:54:58
Вот меня и серенькое смущало
Сейчас вспоминаю, что меня это тоже смущало на этапе ознакомления с Revit API. Есть некая нелогичность, между отображением значения параметра (с галочкой, хоть и серой) и значением параметра, полученным через API.
Название: Re: Параметр типа YES/NO
Отправлено: miko от 01-11-2015, 02:22:38
серенькое потому что не параметр проекта
Название: Re: Параметр типа YES/NO
Отправлено: Виктор Чекалин от 01-11-2015, 19:02:27
серенькое потому что не параметр проекта
Нет, потому что значение для параметра не задано.