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

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

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

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Re: На Revit 2015 перестал работать add-in
« Ответ #30 : 30-08-2014, 14:20:06 »
Не уверен в правильности выполненных мною действий, по скольку до до конца не понимал, что именно делаю. Выполнял действия по Вашей инструкции.

Это полный код ProgressDlg.cs. Где я допустил ошибки и что делать дальше?
Код - C# [Выбрать]
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10.  
  11.  
  12. //using Autodesk.Revit.DB;
  13.  
  14.  
  15. namespace WallsArea
  16. {
  17.     public partial class ProgressDlg : Form
  18.     {
  19.         public ProgressDlg()
  20.         {
  21.             InitializeComponent();
  22.         }
  23.  
  24.  
  25.         public Autodesk.Revit.DB.Document ActiveDocument { get; set; }
  26.  
  27.  
  28.         private void LogToFile(object sender, EventArgs e)
  29.         {
  30.             SaveFileDialog dlg = new SaveFileDialog();
  31.             dlg.Filter = "log files (*.log)|*.log|All files (*.*)|*.*";
  32.             dlg.FilterIndex = 1;
  33.             dlg.RestoreDirectory = true;
  34.  
  35.  
  36.             if (DialogResult.OK != dlg.ShowDialog(this)) { return; }
  37.  
  38.  
  39.             using (StreamWriter writer = new StreamWriter(dlg.FileName)) {
  40.                 writer.WriteLine(DateTime.Now + "\tЖурнал операций расчета площади стен");
  41.                 writer.WriteLine();
  42.  
  43.  
  44.                 string[] lines = m_log.Lines;
  45.                 for (long i = 0; i < lines.Length; ++i) {
  46.                     writer.WriteLine(lines[i]);
  47.                 }
  48.                 writer.Close();
  49.             }
  50.         }
  51.  
  52.  
  53.         private void CloseDlg(object sender, EventArgs e)
  54.         {
  55.             if (worker.IsBusy) { return; }
  56.  
  57.  
  58.             Close();
  59.         }
  60.  
  61.  
  62.         private void OnDoWork(object sender, DoWorkEventArgs e)
  63.         {
  64.             BackgroundWorker worker = sender as BackgroundWorker;
  65.             if (null == worker) { return;  }
  66.  
  67.  
  68.             Autodesk.Revit.DB.Document doc = e.Argument as Autodesk.Revit.DB.Document;
  69.             if (null == doc) { return; }
  70.  
  71.  
  72.             CalcAreaAction act = new CalcAreaAction();
  73.             act.Execute(doc, worker);
  74.             e.Result = act.Log;
  75.         }
  76.  
  77.  
  78.         public void RunWorker()
  79.         {
  80.             m_close.Enabled = false;
  81.             m_logToFile.Enabled = false;
  82.             m_log.Enabled = false;
  83.             this.UseWaitCursor = true;
  84.             worker.RunWorkerAsync(ActiveDocument);
  85.         }
  86.  
  87.  
  88.         private void OnClosing(object sender, FormClosingEventArgs e)
  89.         {
  90.             if (worker.IsBusy) { e.Cancel = true; }
  91.         }
  92.  
  93.  
  94.         private void OnProgress(object sender, ProgressChangedEventArgs e)
  95.         {
  96.             m_progress.Value = e.ProgressPercentage;
  97.             this.Text = e.UserState as string;
  98.         }
  99.  
  100.  
  101.         private void OnWorkerComplete(object sender, RunWorkerCompletedEventArgs e)
  102.         {
  103.             m_log.Text = e.Result as string;
  104.             m_log.Enabled = true;
  105.             m_close.Enabled = true;
  106.             m_logToFile.Enabled = true;
  107.             this.UseWaitCursor = false;
  108.         }
  109.  
  110.  
  111.         private void ProgressDlg_Load(object sender, EventArgs e)
  112.             {
  113.                 CalcAreaAction act = new CalcAreaAction();
  114.                 act.Execute(ActiveDocument);
  115.                 m_log.Text = act.Log;
  116.                 m_close.Enabled = true;
  117.                 m_logToFile.Enabled = true;
  118.             }
  119.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  120.         {
  121.             ProgressDlg dlg = new ProgressDlg();
  122.             dlg.ActiveDocument = commandData.Application.ActiveUIDocument.Document;
  123.             dlg.ShowDialog();
  124.             //dlg.RunWorker();
  125.  
  126.  
  127.             return Result.Succeeded;
  128.         }
  129.     }
  130. }
  131.  
« Последнее редактирование: 03-09-2014, 21:50:19 от Александр Ривилис »
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: На Revit 2015 перестал работать add-in
« Ответ #31 : 31-08-2014, 15:12:56 »
Виктор Чекалин сейчас в отпуске. По возвращении ответит. Надеюсь, что этот вопрос не настолько спешный.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #33 : 10-09-2014, 19:34:51 »
Дамир, извиняюсь за задержку.

Проверить работоспособность кода данный момент нет, но на первый взгляд все верно. Некоторые методы класса теперь стали не нужны, но это не суть.

А что в результате? Надстройка по-прежнему не работает? В классе CalcAreaAction убрали многопоточность?

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: На Revit 2015 перестал работать add-in
« Ответ #34 : 20-10-2015, 07:17:35 »
У меня точно такая же проблема! Только не с addin а с самой отладкой!

Программа "[5000] Revit.exe" завершилась с кодом -529697949 (0xe06d7363) 'Microsoft C++ Exception'.

С потоками не работаю, да и если бы работал, то это было бы странно, что Revit не умеет работать с потоками.
Создал просто пустой проект и ошибка та же самая. То есть, здесь явно проблема не с потоками.

Revit 2015 / Visual Studio 2013 / .NET 4.5 / Debug , если делаю Release, то ошибка такая: Программа "[3236] Revit.exe" завершилась с кодом -529697949 (0xe06d7363) 'Microsoft C++ Exception'.

С этим надо что-то делать, а то я завис на том, что не могу отслеживать ошибки и значения переменных... крайне не удобно!

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: На Revit 2015 перестал работать add-in
« Ответ #35 : 20-10-2015, 07:58:04 »
Попробовал отладку с запуском внешнего приложения и разрешением отладки машинного кода и вот что произошло:
1. Стали подгружаться символы для библиотек Revit-а.
2. Revit запустился
3. Однако при нажатии какой-нибудь кнопки что-то подгружается.
4. При повторном запуске быстрее запускается, но при возникновении ошибки я не могу увидеть, в каком месте она находится... можно лишь дизассемблированный код посмотреть.

Как дальше-то быть?

Отмечено как Решение Виктор Чекалин 25-03-2016, 13:13:55

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #36 : 20-10-2015, 09:19:46 »
Как дальше-то быть?
Зайти в настройки Visual Studio, найти пункт Debugging и поставить галочку Use Managed Compatibility Mode


Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: На Revit 2015 перестал работать add-in
« Ответ #37 : 20-10-2015, 10:36:10 »
Шикарно! Все работает! Спасибо  :D

Только для VB это: Меню Отладка -> Параметры и настройки -> На ветке Отладка -> Параметр Использовать режим совместимости управляемого кода

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: На Revit 2015 перестал работать add-in
« Ответ #38 : 20-10-2015, 23:16:08 »
Только для VB это: Меню Отладка -> Параметры и настройки -> На ветке Отладка -> Параметр Использовать режим совместимости управляемого кода
Поправочка. Это не для VB, а для русской версии Visual Studio. Никогда не пользовался и не буду пользоваться локализованной версией Visual Studio, поэтому не знаю как оно там