На Revit 2015 перестал работать add-in

Автор Тема: На Revit 2015 перестал работать add-in  (Прочитано 21518 раз)

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

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

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Друзья, приветствую!
Прошу помочь в следующем вопросе. На Revit 2014 надстройка успешно работала. Есть ее исходники (проект). На 2015 работать перестала -  при выполнении (вызове во внешних) инструментах появляется окно ошибки "Ошибка: необрабатываемое исключение" - фатал закрывающий Revit с извинениями.

Решил перекомпелировать библиотеку. В Visual Studio добавил библиотеки RevitAPI и RevitAPIUI, все как положено. При сборке нет ошибок, но есть предупреждения:

1>------ Сборка начата: проект: WallsArea2014, Конфигурация: Debug x64 ------
1>C:\Users\damir\Downloads\11\WallsArea2014\AreaCalculator.cs(184,56,184,57): warning CS0642: Возможно, ошибочный неопределенный оператор
1>C:\Users\damir\Downloads\11\WallsArea2014\CalcAreaAction.cs(43,43,43,74): warning CS0618: "Autodesk.Revit.DB.Element.get_Parameter(string)" является устаревшим: "This property is obsolete in Revit 2015, as more than one parameter can have the same name on a given element. Use Element.Parameters to obtain a complete list of parameters on this Element, or Element.GetParameters(String) to get a list of all parameters by name, or Element.LookupParameter(String) to return the first available parameter with the given name."
1>  WallsArea2014 -> C:\Users\damir\Downloads\11\WallsArea2014\bin\x64\Debug\WallsArea2014.dll
========== Сборка: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

Надстройка должна делать следующее:
создаю помещение в четырех стенах например, есть параметр "Площадь стен".
Надстройка показывает на форме текста с  размерами стен, а в параметр записывает знание площади.

Сейчас вижу появление пустой формы. И после фатал...

Что делать? Заранее благодарю за советы
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #1 : 06-08-2014, 15:45:20 »
Дамир, привествуем на нашем форуме!

Почти уверен, что это из-за использования устаревших методов.
Замените вызов устаревшего метода get_Parameter на Element.LookupParameter(String), как описано в предупреждении.

Попробуйте для начала, если не поможет, то будем дальше думать.

Еще не помешает установить последнее обновление. Но для начала все же избавьтесь от устаревшего параметра.

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Re: На Revit 2015 перестал работать add-in
« Ответ #2 : 06-08-2014, 16:06:03 »
Благодарю, сегодня же проверю оба совета, опишу по результатам
Сколько голов, столько умов. Но голов больше

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Re: На Revit 2015 перестал работать add-in
« Ответ #3 : 06-08-2014, 16:12:35 »
Замените вызов устаревшего метода get_Parameter на Element.LookupParameter(String), как описано в предупреждении.

Правильно ли я Вас понял с заменой устаревшего метода?
Была строка: Parameter parameter = r.get_Parameter("Площадь стен");
Строк стала: Parameter parameter = r.LookupParameter("Площадь стен");
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #4 : 06-08-2014, 17:19:24 »
Да, верно.

Кстати, а параметр с названием "Площадь стен", существует в единственном экземпляре?

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Re: На Revit 2015 перестал работать add-in
« Ответ #5 : 06-08-2014, 17:29:52 »
Да. Параметр существует в единственном экземпляре. Работаю с готовым шаблоном.
Обновление произвел еще вчера с аналогичного дистрибутива Autodesk_Revit_2015-x64_Update3.exe (как выяснилось)

Метод изменил как писал выше. Проблема осталась...
Что делать?
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #6 : 06-08-2014, 17:39:07 »
Предупреждения больше не появляются?

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

А в целом подход стандартный. Нужно выяснить какой метод рушит Revit.

В режиме отладки ставьте точку остановы на первом же методе команды и пошагово выполняйте ваш код. Или же Revit падает еще до выполнения команды, что даже в отладку зайти не удается?

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Re: На Revit 2015 перестал работать add-in
« Ответ #7 : 06-08-2014, 17:54:37 »
Прошу прощения, что не уточнил после изменения метода соответствующее ему предупреждение исчезло.
Осталось одно предупреждение:
 1>------ Перестроение всех файлов начато: проект: WallsArea2014, Конфигурация: Debug x64 ------
1>C:\Users\damir\Downloads\11\WallsArea2014\AreaCalculator.cs(184,56,184,57): warning CS0642: Возможно, ошибочный неопределенный оператор
1>  WallsArea2014 -> C:\Users\damir\Downloads\11\WallsArea2014\bin\x64\Debug\WallsArea2014.dll
========== Перестроение всех: успешно: 1, с ошибками: 0, пропущено: 0 ==========

Предупреждение ведет на следующий фрагмент кода:
Код - C# [Выбрать]
  1. if (orgIsInside && destIsInside)
  2.                     ret.Add(dest);
  3.                 else if (orgIsInside && !destIsInside)
  4.                     ret.Add(crossingPt);
  5.                else if (!orgIsInside && !destIsInside);
  6.                 else {
  7.                     ret.Add(crossingPt); ret.Add(dest);
  8.                 }

подчеркнул указанную строку. Visual Studio ссылается на последнюю точку с запятой (;) в подчеркнутой строке.




2. По поводу режима отладки:
Наверно я что то не понимаю. Мой порядок действий:
- собираю dll в режиме Debug
- помещаю dll в нужную папку
- открываю Revit
- Надстройки / Внешние инструменты / Мое решение
Далее вижу мигает моя форма (где должен быть лог), она пустая и через секунду окно ошибки самого Revit.
Прошу уточнить в какой момент мне необходимо осуществлять отладку и как. Возможно мне пока не хватает знаний, но думаю я пойму.
« Последнее редактирование: 06-08-2014, 18:39:45 от Виктор Чекалин »
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #8 : 06-08-2014, 18:17:03 »
Точка с запятой действительно лишняя. Visual Studio не зря ругается.

По поводу отладки. Обучать мастерству работы с Visual Studio я конечно вас не буду:). Судя по ответу что такое режим отладки вы не знаете.

Режим отладки позволяет выполнять код по шагам, с просмотром значений переменных на каждом шаге.
В уроках по программированию в Rеvit кстати есть урок по отладке. рекомендую ознакомиться.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: На Revit 2015 перестал работать add-in
« Ответ #9 : 06-08-2014, 18:26:46 »
В Visual Studio добавил библиотеки RevitAPI и RevitAPIUI, все как положено
Надеюсь они из состава Revit 2015?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #10 : 06-08-2014, 18:31:52 »
Надеюсь они из состава Revit 2015?
Я это не стал уточнять, так как в предупреждении говорится, что This property is obsolete in Revit 2015

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: На Revit 2015 перестал работать add-in
« Ответ #11 : 06-08-2014, 18:42:35 »
Точно. Это я пропустил. Каюсь.
P.S.: Кстати, по поводу точки с запятой я не был бы так уверен. Это может быть не слишком удачный стиль написания оператора "if - else".
И вообще весь этот if очень странный.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #12 : 06-08-2014, 19:14:18 »
Точка с запятой это не ошибка конечно. Это всего лишь значит что если условие в if равно true, то ничего не произойдет.
Наверно мне правильнее было сказать, что точка с запятой не лишняя, а просто такой стиль написания запутаный и не явный, что аж Visual Studio ругается:)
Но причина падения Revit явно не в ней.

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Re: На Revit 2015 перестал работать add-in
« Ответ #13 : 07-08-2014, 09:01:44 »
По поводу точки с запятой: код писал не я. При отсутствии точки запятой VS ругается уже ошибкой.
По поводу отладки: что такое отладка я знаю, просто не понятно как я проконтролирую падение Revit'a при отладке на VS? (1 вопрос)

Насчет того, что падение Revit'a не связано с ошибкой  в точке запятой - согласен!

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

Еще раз спасибо!
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #14 : 07-08-2014, 09:35:29 »
По поводу отладки: что такое отладка я знаю, просто не понятно как я проконтролирую падение Revit'a при отладке на VS? (1 вопрос)
Дамир, после того как вы подключите отладчик к процессу Revit, просто выполняйте ваш код по шагам. Скорей всего на выполнении одного из методов возникнет необрабатываемое Revit'ом исключение и он упадет. В зависимости от того, что это за метод, будем искать решение.