Как отличить открытый документ от созданного

Автор Тема: Как отличить открытый документ от созданного  (Прочитано 4183 раз)

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

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет.
При подписывании на события DocumentManager есть событие DocumentCreated. Оно срабатывает и когда документ создается и когда документ открывается.
Каким образом можно отличить создан документ или открыт?

Отмечено как Решение Александр Пекшев aka Modis 26-09-2015, 18:00:49

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь 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(DocOpenedOrCreated.Utils))]
  9.  
  10. namespace DocOpenedOrCreated
  11. {
  12.   public class Utils
  13.   {
  14.     static public void docMan_DocumentCreated(object sender,
  15.       Autodesk.AutoCAD.ApplicationServices.DocumentCollectionEventArgs e)
  16.     {
  17.       Application.ShowAlertDialog("Документ " +
  18.         ((e.Document.IsNamedDrawing) ? "открыт" : "создан"));
  19.     }
  20.  
  21.     [CommandMethod("AttReactor")]
  22.     public void MyCommand()
  23.     {
  24.       DocumentCollection docMan = Application.DocumentManager;
  25.       docMan.DocumentCreated += docMan_DocumentCreated;
  26.     }
  27.   }
  28. }

Ключевое свойство: Document.IsNamedDrawing
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
А вот в 2010 автокаде Document.IsNamedDrawing отсутствует... :-\
Придется пользоваться Document.Name - как я понял при сохраненном файле хранится полный путь к файлу, а при созданном и не сохраненном только имя файла

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Можно еще через P/Invoke для:
Код - C++ [Выбрать]
  1. bool _cdecl acedIsNamedDrawing(AcApDocument *doc);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Application.GetSystemVariable("DWGTITLED") - создан, или нет
Application.GetSystemVariable("DBMOD") - изменялся или нет после открытия/создания

UPD (для целостности комментария): Как отметил Александр Наумович в сообщении ниже, эти переменные работают только для текущего документа
« Последнее редактирование: 27-10-2015, 12:18:01 от bargool »
Алексей

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Application.GetSystemVariable("DWGTITLED") - создан, или нет
Application.GetSystemVariable("DBMOD") - изменялся или нет после открытия/создания
Хорошо, но не всегда применимо, т.к. значения этих системных переменных относятся к активному документу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение