Как отследить попытку открытия чертежа недоступного формата?

Автор Тема: Как отследить попытку открытия чертежа недоступного формата?  (Прочитано 14115 раз)

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

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Если запрашиваемого мною события нет, то я оставлю текущее решение как есть - отдельной командой, понижающей версию DWG с последующим открытием файла (если открытие было запрошено). Хотелось сделать это максимально прозрачно для пользователя, без создания отдельной команды под это дело. В принципе, можно оставить и так, раз в AutoCAD .NET API подходящих событий нет.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Хотелось сделать это максимально прозрачно для пользователя, без создания отдельной команды под это дело.
А я бы так делать принципиально не стал:
1) Чертеж становится не 100%-совместимым с AutoCAD.
2) Если в чертеже есть объекты/примитивы вертикального приложения, то совсем будет беда.
Поэтому, без предупреждения и пользователя и согласия его на эту операцию я бы не стал понижать версию. IMHO.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
1) Чертеж становится не 100%-совместимым с AutoCAD.
2) Если в чертеже есть объекты/примитивы вертикального приложения, то совсем будет беда.
Несколько лет активной практики проблем не выявили.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
На всякий случай по поводу последовательности событий:


Код - 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(DwgBeginOpen.MyCommands))]
  9. [assembly: ExtensionApplication(typeof(DwgBeginOpen.MyCommands))]
  10.  
  11. namespace DwgBeginOpen
  12. {
  13.   public class MyCommands: IExtensionApplication
  14.   {
  15.     void IExtensionApplication.Initialize()
  16.     {
  17.       Application.DocumentManager.DocumentCreateStarted
  18.         += DocumentManager_DocumentCreateStarted;
  19.       Application.DocumentManager.DocumentCreated
  20.         += DocumentManager_DocumentCreated;
  21.     }
  22.  
  23.     void DocumentManager_DocumentCreateStarted(object sender, DocumentCollectionEventArgs e)
  24.     {
  25.       Application.ShowAlertDialog("DocumentCreateStarted");
  26.       e.Document.BeginDwgOpen += Document_BeginDwgOpen;
  27.       e.Document.EndDwgOpen += Document_EndDwgOpen;
  28.     }
  29.  
  30.     void DocumentManager_DocumentCreated(object sender, DocumentCollectionEventArgs e)
  31.     {
  32.       Application.ShowAlertDialog("DocumentCreated");
  33.     }
  34.  
  35.     void Document_EndDwgOpen(object sender, DrawingOpenEventArgs e)
  36.     {
  37.       Application.ShowAlertDialog("End Open " + e.FileName);
  38.     }
  39.  
  40.     void Document_BeginDwgOpen(object sender, DrawingOpenEventArgs e)
  41.     {
  42.       Application.ShowAlertDialog("Begin Open " + e.FileName);
  43.     }
  44.  
  45.     void IExtensionApplication.Terminate()
  46.     {
  47.     }
  48.   }
  49. }
  50.  
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение