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

ADN Club => AutoCAD .NET API => Тема начата: Алексей Кузин от 11-06-2020, 16:25:05

Название: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 11-06-2020, 16:25:05
Autocad MEP 2020.

Поймал падение автокада.

1) открываем ToolPalette
2) выбираем любой tool
3) правой кнопкой мыши
4) copy
5) paste
6) запускаем команду в которой будет строка

Код - C# [Выбрать]
  1. Autodesk.AutoCAD.Windows.ToolPalette.ToolPaletteManager.Manager.LoadCatalogs();

автокад вылетает.

Перед вызовом метода LoadCatalogs необходимо что то ещё делать? может обновить как то данные?
Такая же ситуация с вызовом UnloadCatalogs
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 11-06-2020, 17:03:48
Поймал падение автокада.
А точнее? Fatal Error или Exception?
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 15-06-2020, 09:17:43
Цитировать
А точнее? Fatal Error или Exception?
Fatal Error. Вылетает без каких либо сообщений. У вас получилось воспроизвести ситуацию?

Если что то даст прикрепил ошибку из журнала событий
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 15-06-2020, 10:05:11
Fatal Error. Вылетает без каких либо сообщений. У вас получилось воспроизвести ситуацию?
Нет. А что если перед ToolPaletteManager.LoadCatalogs() вызвать ToolPaletteManager.SaveCatalogs()?
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 15-06-2020, 11:25:12
Цитировать
Нет. А что если перед ToolPaletteManager.LoadCatalogs() вызвать ToolPaletteManager.SaveCatalogs()?
пробовал. не помогает.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 15-06-2020, 11:52:13
Я проверял в чистом AutoCAD 2020 (MEP у меня не установлен) со всеми обновлениями:
Код - C# [Выбрать]
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.AutoCAD.ApplicationServices;
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. using Autodesk.AutoCAD.Geometry;
  6. using Autodesk.AutoCAD.EditorInput;
  7.  
  8. [assembly: CommandClass(typeof(TestLoadCatalogs.MyCommands))]
  9.  
  10. namespace TestLoadCatalogs
  11. {
  12.   public class MyCommands
  13.   {
  14.     [CommandMethod("MyTest")]
  15.     public void MyCommand()
  16.     {
  17.       Autodesk.AutoCAD.Windows.ToolPalette.ToolPaletteManager.Manager.LoadCatalogs();
  18.     }
  19.   }
  20. }

Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 15-06-2020, 14:25:46
Хм... 

Я перепроверил у своих коллег и воспроизвелась проблема на 3-х машинах. на Autocad MEP 2020 и Autocad MEP 2021.
При этом тестировал различные toolPalette (как существующие так и создавал новую).

Код - C# [Выбрать]
  1. namespace MyPlugIn
  2. {
  3.     public class MyPlugIn : IExtensionApplication
  4.     {
  5.         public void Initialize()
  6.         {
  7.  
  8.         }
  9.  
  10.         public void Terminate()
  11.         {
  12.  
  13.         }
  14.  
  15.         [CommandMethod("Test")]
  16.         public void Test()
  17.         {
  18.             Autodesk.AutoCAD.Windows.ToolPalette.ToolPaletteManager.Manager.LoadCatalogs();
  19.         }
  20.     }
  21. }


Во время падения удалось получить сообщение об ошибке. Не уверен что там можно что то посмотреть стоящее о проблеме, но прикрепляю.

Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 15-06-2020, 14:34:30
Запиши видео при помощи Autodesk Screencast (как написано у меня в подписи) - я отправлю в ADN DevHelp. Похоже, что это какой-то баг. Кстати, а если не делать Copy/Paste с элементом Tools, то LoadCatalogs() отрабатывает нормально?
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 15-06-2020, 14:50:27
Цитировать
Кстати, а если не делать Copy/Paste с элементом Tools, то LoadCatalogs() отрабатывает нормально?
Да всё нормально. Только такой вариант вызывает падение.

Цитировать
Запиши видео при помощи Autodesk Screencast (как написано у меня в подписи) - я отправлю в ADN DevHel
Хорошо чуть позже пришлю.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 15-06-2020, 15:32:22
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 15-06-2020, 17:28:17
Отправил в ADN DevHelp. Если будет информация или потребуются уточнения - сообщу.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 15-06-2020, 19:14:41
Алексей Кузин,
Интересно, а такое поведение не связано конкретно с Duct Fitting? Для проверки можно выбрать какую-то другу вкладку в Tools и проверить с ней.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 17-06-2020, 09:43:57
Цитировать
Интересно, а такое поведение не связано конкретно с Duct Fitting? Для проверки можно выбрать какую-то другу вкладку в Tools и проверить с ней.
Пробовал на различных вкладки. Так же создавал свою вкладку. Повторятся каждый раз.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 18-06-2020, 12:15:17
Алексей Кузин,
В ADN DevHelp такое поведение в MEP подтвердили и переправили запрос команде разработчиков Autodesk MEP.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Алексей Кузин от 19-06-2020, 20:48:19
Спасибо.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 13-07-2020, 11:20:44
Алексей Кузин,
Цитировать
We have logged Change Request number ACADV-5845 <ACA MEP: Crash when reloading the catalog after copy\paste operation within tools palette> with our development team as this issue requires a modification to our software.
Название: Re: ToolPalette LoadCatalogs crash
Отправлено: Александр Ривилис от 22-12-2020, 17:27:25
Алексей Кузин,
Попробуй:
Код - C# [Выбрать]
  1.     namespace MyPlugIn
  2.     {
  3.         public class MyPlugIn : IExtensionApplication
  4.         {
  5.             public void Initialize()
  6.             {
  7.      
  8.             }
  9.      
  10.             public void Terminate()
  11.             {
  12.      
  13.             }
  14.      
  15.             [CommandMethod("Test")]
  16.             public void Test()
  17.             {
  18.                 System.Windows.Forms.Clipboard.Clear(); // Чистим буфер обмена
  19.                 Autodesk.AutoCAD.Windows.ToolPalette.ToolPaletteManager.Manager.LoadCatalogs();
  20.             }
  21.         }
  22.     }