Открытие - Очистка -Закрытие файла чертежа

Автор Тема: Открытие - Очистка -Закрытие файла чертежа  (Прочитано 2319 раз)

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

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

  • ADN OPEN
  • Сообщений: 2
  • Карма: 0
Всем привет!
Столкнулся с проблемой закрытия файла после его открытия, очистки и сохранения.
Если не закрывать файл, то все очищается и сохраняется и можно закрыть вручную, НО если использоваться любые методы программного закрытия файла (или не любые, просто использовал, что знаю), то файл остается таким как и до очистки а сохранение либо исчезает либо вовсе не происходит.

Код - C# [Выбрать]
  1. public void PurgeFileMethod(string path)
  2. {
  3.     using (ApplicationCivil.DocumentManager.MdiActiveDocument.LockDocument())
  4.     {
  5.         var doc = ApplicationCivil.DocumentManager.Add(path);
  6.         if (doc == null) return;
  7.  
  8.         doc.SendStringToExecute("-PURGE\n", true, false, true);
  9.         doc.SendStringToExecute("Все\n", true, false, true);
  10.         doc.SendStringToExecute("*\n", true, false, true);
  11.         doc.SendStringToExecute(\n", true, false, true);
  12.        
  13.         doc.Database.SaveAs(path, true, DwgVersion.Current, doc.Database.SecurityParameters);
  14.  
  15.         doc.CloseAndDiscard();
  16.     }
  17. }
  18.  

Возможно кто-то сталкивался с такой проблемой и сможет помочь, благодарю за помощь.

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

  • Administrator
  • *****
  • Сообщений: 13871
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Так и должно быть, так как SendStringToExecute выполняется ассинхронно, т.е. уже после завершения команды.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 2
  • Карма: 0
Так и должно быть, так как SendStringToExecute выполняется ассинхронно, т.е. уже после завершения команды.

Возможно вы можете подсказать на примере как можно реализовать выполнение очистки файла от неиспользуемых объектов и стилей по принципу как работает стандартная команда "ОЧИСТИТЬ" в автокаде?

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

  • Administrator
  • *****
  • Сообщений: 13871
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Попробуй оформить
Код - C# [Выбрать]
  1.         doc.Database.SaveAs(path, true, DwgVersion.Current, doc.Database.SecurityParameters);
  2.  
  3.         doc.CloseAndDiscard();
как отдельную команду с флагом Session, и запускать ее при помощи doc.SendStringToExecute после запуска _PURGE
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение