eBadDwgHeader при использовании Database.ReadDwgFile()

Автор Тема: eBadDwgHeader при использовании Database.ReadDwgFile()  (Прочитано 4987 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет!
Чувствую, что схожу с ума...
Стоит задача - нужно открыть dxf файл, что-то в нем сделать, сохранить. По сути, файл мне открывать не нужно как документ, а достаточно прочитать БД и внести изменения. Но я до этого момента даже дойти не могу!
Вот такой код:
Код - C# [Выбрать]
  1. namespace MoveToOrigin
  2. {
  3.     using System;
  4.     using System.IO;
  5.     using System.Windows;
  6.     using Autodesk.AutoCAD.DatabaseServices;
  7.     using Autodesk.AutoCAD.Runtime;
  8.  
  9.     public class Starter
  10.     {
  11.         [CommandMethod("MoveToOrigin")]
  12.         public void Start()
  13.         {
  14.             try
  15.             {
  16.                 var file = @"E:\Test\MoveToOrigin\test.dxf";
  17.  
  18.                 var outputDir = @"E:\Test\MoveToOrigin\Correct";
  19.  
  20.                 Database db = new Database(false, true);
  21.  
  22.                 db.ReadDwgFile(file, FileShare.ReadWrite, false, "");
  23.  
  24.  
  25.                 using (Transaction tr = db.TransactionManager.StartTransaction())
  26.                 {
  27.                     // some work
  28.  
  29.                     tr.Commit();
  30.                 }
  31.  
  32.                 db.SaveAs(Path.Combine(outputDir, "Test.dxf"), db.OriginalFileVersion);
  33.  
  34.                 db.Dispose();
  35.             }
  36.             catch (System.Exception exception)
  37.             {
  38.                 MessageBox.Show(exception.Message + Environment.NewLine + exception.StackTrace);
  39.             }
  40.         }
  41.     }
  42. }
На 22 строке я ловлю ошибку eBadDwgHeader. Ничего найти по этой ошибке не могу. Причем, сначала я ловил ошибку eInvalidInput, которая пропала после замены
Код - C# [Выбрать]
  1. db.ReadDwgFile(file, FileShare.Write, true, string.Empty);
на
Код - C# [Выбрать]
  1. db.ReadDwgFile(file, FileShare.ReadWrite, false, "");

Отмечено как Решение Александр Ривилис 03-11-2018, 13:39:47

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Вроде разобрался сам (как обычно через пару минут после создания темы)
Для чтения dxf-файла нужно использовать метод Database.DxfIn(), а для сохранения Database.DxfOut()