Ошибка чтения файла

Автор Тема: Ошибка чтения файла  (Прочитано 2956 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 458
  • Карма: 1
Ошибка чтения файла
« : 07-03-2025, 22:55:19 »
Здравствуйте.
Пытаюсь вставить несколько блоков из файла-хранилища dwg в текущий новый файл. При попытке чтения ловлю ошибку доступа eFileAccessErr в строке db.ReadDwgFile. Никак не соображу почему. Пробовал разные варианты с doc.LockDocument - нет результата. Как это можно исправить?
Код - C# [Выбрать]
  1.  [CommandMethod("ProcessDXFConveyor")]
  2.  public void ProcessDXFConveyor()
  3.  {
  4.      Document doc = Application.DocumentManager.MdiActiveDocument;
  5.      Database db = doc.Database;
  6.      Editor ed = doc.Editor;
  7.  
  8.      try
  9.      {
  10.          string frameDwgPath = "G:\\DevProjects\\Titles.dwg";
  11.  
  12.          DwgImporter dwgImporter = new DwgImporter();
  13.          dwgImporter.ImportDWG(frameDwgPath);
  14.      }
  15.      catch (System.Exception ex)
  16.      {
  17.          ed.WriteMessage($"\nОшибка: {ex.Message}");
  18.      }
  19.  }
  20.  
  21.  public void ImportDWG(string path)
  22.  {
  23.      try
  24.      {
  25.          using (Database db = new Database(false, true))
  26.          {
  27.              db.ReadDwgFile(path, FileShare.ReadWrite, true, "LOG.TXT");
  28.              Drawings.Add(db);
  29.          }
  30.      }
  31.      catch (Exception e)
  32.      {
  33.          Application.ShowAlertDialog("Problem with reading block dwg's " + e.Source);
  34.      }
  35.  }
  36.  

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

  • Administrator
  • *****
  • Сообщений: 13916
  • Карма: 1793
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка чтения файла
« Ответ #1 : 07-03-2025, 23:09:31 »
1. dwg-файл в каталоге доступном и для чтения и для записи?
2. dwg-файл сохранен в версии AutoCAD, который может быть открыт в запущенной версии AutoCAD?
3. Что такое "LOG.TXT"? Вообще-то этот параметр - это пароль dwg-файла. Но насколько я помню этот параметр давно не используется и нужно передавать null.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 458
  • Карма: 1
Re: Ошибка чтения файла
« Ответ #2 : 07-03-2025, 23:19:40 »
да файл на локальном ПК. Права админские. Открываемый файл (формат dwg 2018) создан в том же каде, где запускаю плагин.
Вариант с пустым паролем я тоже пробовал в таком виде
Код - C# [Выбрать]
  1.  sourceDb.ReadDwgFile(dwgPath, System.IO.FileShare.ReadWrite, true, "");
не сработало. Файл не запаролен

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

  • Administrator
  • *****
  • Сообщений: 13916
  • Карма: 1793
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка чтения файла
« Ответ #3 : 07-03-2025, 23:29:20 »
Эта ошибка ещё может быть если этот dwg-файл уже открыт в этом или другом AutoCAD (в редакторе или при помощи ReadDwgFile)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13916
  • Карма: 1793
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка чтения файла
« Ответ #4 : 07-03-2025, 23:31:29 »
Ну и ещё одно. Не следует создавать Database в using если собираешься использовать его после using.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 458
  • Карма: 1
Re: Ошибка чтения файла
« Ответ #5 : 07-03-2025, 23:49:42 »
Эта ошибка ещё может быть если этот dwg-файл уже открыт в этом или другом AutoCAD (в редакторе или при помощи ReadDwgFile)
Точно нет, это я сразу проверил. Этот файл - база блоков, он только для считывания блоков и копирования их в текущий чертеж, кроме метода что я приложил он нигде не читается.
На что еще можно проверить?

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

  • Administrator
  • *****
  • Сообщений: 13916
  • Карма: 1793
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка чтения файла
« Ответ #6 : 08-03-2025, 01:27:20 »
Есть ещё несколько методов ReadDwgFile. Попробуй их. Возможно этот метод по какой-то причине не работает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 629
  • Карма: 161
    • ПГСу Бложик
Re: Ошибка чтения файла
« Ответ #7 : 09-03-2025, 12:13:59 »
Небольшое примечание к коду:
После чтения файла с использованием Database.ReadDwgFile() настоятельно рекомендуется вызывать метод Database.CloseInput()
Подробнее тут: adndevblog.typepad.com и тут:help.autodesk.com

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 555
  • Карма: 119
Re: Ошибка чтения файла
« Ответ #8 : 10-03-2025, 07:43:34 »
При попытке чтения ловлю ошибку доступа eFileAccessErr в строке db.ReadDwgFile
Скорее всего файл кем-то занят.
Замени FileShare.ReadWrite на FileShare.Read.
Если папка G:\\DevProjects\\ общедоступная, возможно кем-то с другой машины заблокирован файл. Лучше папку сделать для чтения.