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

ADN Club => AutoCAD .NET API => Тема начата: Сергей Котляр от 18-03-2016, 18:43:22

Название: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Сергей Котляр от 18-03-2016, 18:43:22
Во вложении .net плагин, содержащий единственную команду, при выполнении которой в окне Автокада выводится WPF окно. Все бы ничего, но  при закрытии Автокад фаталит. Проблема заключается в наличии  в окне компонента
<xcad:DockingManager x:Name ="DockManager" Grid.Row="1" /> 

http://doc.xceedsoft.com/products/XceedWpfToolkit/Xceed.Wpf.AvalonDock~Xceed.Wpf.AvalonDock.DockingManager.html

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

Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Дмитрий Загорулькин от 18-03-2016, 20:33:06
Все бы ничего, но  при закрытии Автокад фаталит.
Не подтверждаю:
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Алексей (IdeaSoft) от 18-03-2016, 20:38:09
А для какой версии AutoCAD твой плагин?
Если более чем acad 2012
то почему в проект подключены только ссылки на acdbMgd.dll и accoremgd.dll
может еще подключить сборку acmgd.dll

Еще в модуле MyCommands
строка

using Application = Autodesk.AutoCAD.ApplicationServices.Core.Application;
может заменит на другое выражение
например на:
using cadApp = Autodesk.AutoCAD.ApplicationServices.Core.Application;
а то слово Application стандартное может с чем совпадать и конфликтовать.
 
 
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Дмитрий Загорулькин от 18-03-2016, 21:16:32
то почему в проект подключены только ссылки на acdbMgd.dll и accoremgd.dll
может еще подключить сборку acmgd.dll
может заменит на другое выражение
например на:
using cadApp = Autodesk.AutoCAD.ApplicationServices.Core.Application;
Проверил. Ни то ни другое на результат не влияет. Окошко отображается хорошо, при его закрытии AutoCAD не падает.
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Александр Пекшев aka Modis от 19-03-2016, 09:59:51
Тоже не подтверждаю - все сработало. Фаталити не было. Автокад 2016

По поводу кода:
- Я вот не решаюсь делать функции постоянно "висящими" в памяти. Может конечно это не так страшно и просто у вашей функции будет такой функционал... В общем, по логике: если вы окно свернули, то при вызове функции окно должно разворачиваться, а не запускаться заново!
- Еще - лучше окна в автокаде открывать так:
Код - C# [Выбрать]
  1. Application.ShowModelessWindow(Application.MainWindow.Handle, _wnd, false);
- И самое главное - вы уверены, что вам нужно использовать всякую ерунду, типа XceedWpfToolKit? Используя Wpf с его DataTemplate и прочим вы можете практически все свои задумки реализовать сами. И не нужно использовать целые библиотеки сторонних производителей, только из-за того, что там есть ОДИН контрол с ОДНИМ подходящим вам свойством!
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Пашин Евгений от 04-04-2016, 09:28:55
Проверил. Ни то ни другое на результат не влияет. Окошко отображается хорошо, при его закрытии AutoCAD не падает.

Подтверждаю! Всё окей, ничего не падает. (AutoCAD 2014,2016)
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Пашин Евгений от 04-04-2016, 09:42:11
Сергей, а Вы можете снять скринкаст и выложить здесь? Мы могли бы посмотреть и сравнить Ваши и наши действия.

На всякий случай поиграйте с этой строкой:

[CommandMethod("MyGroup", "MyLoadWindow", "MyLoadWindowLocal", CommandFlags.Modal)] - измените флаг на Session, к примеру.
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Дмитрий Загорулькин от 04-04-2016, 09:49:25
Судя по тому, что от автора темы уже недели две нет сообщений, он либо решил свою задачу, либо забросил ее  ;)
Название: Re: AvalonDock. AutoCAD падает при закрытии.
Отправлено: Пашин Евгений от 04-04-2016, 10:19:25
он либо решил свою задачу, либо забросил ее 

Будем надеяться, что решил :)