Последние сообщения

Последние сообщения

Страницы: 1 ... 7 8 [9] 10
81
AutoCAD .NET API / Re: Ошибка вставки блоков из источника
« Последний ответ от Atomohod 09-03-2025, 20:33:57 »
DuplicateRecordCloning.Ignore
не сработало.
Неужели в десятке файлов происходят конфликты меток? Как так, они же назначаются рандомно?

Как с этим бороться?
82
Вдобавок в  sourceDb.WblockCloneObjects выскакивает ошибка eHandleExists, но в dxf гарантированно нет тех блоков что я пытаюсь добавить из источника. Я в тупике, как это понимать.
Блоков может и нет, а одинаковые handles есть. Попробуй вместо  DuplicateRecordCloning.Replace другое значение. Например, DuplicateRecordCloning.Ignore
83
AutoCAD .NET API / Ошибка вставки блоков из источника
« Последний ответ от Atomohod 09-03-2025, 19:28:19 »
Здравствуйте.
Столкнулся с проблемой - обрабатываю несколько dxf файлов, нужно добавить из чертежа источника несколько блоков в каждый из dxf и сохранить их. Добавление нужных блоков и их вставка в dxf происходит только в первом dxf, во все остальные добавление не происходит. Не могу понять - почему?
Вдобавок в  sourceDb.WblockCloneObjects выскакивает ошибка eHandleExists, но в dxf гарантированно нет тех блоков что я пытаюсь добавить из источника. Я в тупике, как это понимать.

Мой код вставки определений блоков в dxf
Код - C# [Выбрать]
  1.  public void InsertBlockDefinitions(Database destDb)
  2.  {
  3.      try
  4.      {
  5.          foreach (Database sourceDb in TitleRepoDatabases)//Здесь один файл источник с двумя блоками внутри, в пространстве модели
  6.          {
  7.              ObjectIdCollection blockIds = new ObjectIdCollection();
  8.  
  9.              using (Transaction tr = sourceDb.TransactionManager.StartTransaction()) // Транзакция в sourceDb
  10.              {
  11.                  // Открываем таблицу блоков sourceDb
  12.                  BlockTable bt = (BlockTable)tr.GetObject(sourceDb.BlockTableId, OpenMode.ForRead);
  13.  
  14.                  foreach (ObjectId btrId in bt)
  15.                  {
  16.                      BlockTableRecord btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
  17.                    
  18.                      if (!btr.IsAnonymous && !btr.IsLayout)
  19.                      {
  20.                          blockIds.Add(btrId);
  21.                      }
  22.                  }
  23.                  List<string> q1 = new List<string>();
  24.  
  25.                  tr.Commit(); // Завершаем транзакцию перед копированием
  26.              }
  27.  
  28.              if (blockIds.Count > 0) // Проверяем, есть ли что копировать
  29.              {
  30.                  IdMapping mapping = new IdMapping();
  31.  
  32.                  // Копируем блоки из sourceDb в destDb
  33.                  sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false);
  34.              }          
  35.          }
  36.      }
  37.      catch (Exception e)
  38.      {
  39.          Application.ShowAlertDialog("Problem in " + e.Message);
  40.      }
  41.  }

84
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Владимир Шу 09-03-2025, 12:13:59 »
Небольшое примечание к коду:
После чтения файла с использованием Database.ReadDwgFile() настоятельно рекомендуется вызывать метод Database.CloseInput()
Подробнее тут: adndevblog.typepad.com и тут:help.autodesk.com
85
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Александр Ривилис 08-03-2025, 01:27:20 »
Есть ещё несколько методов ReadDwgFile. Попробуй их. Возможно этот метод по какой-то причине не работает.
86
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Atomohod 07-03-2025, 23:49:42 »
Эта ошибка ещё может быть если этот dwg-файл уже открыт в этом или другом AutoCAD (в редакторе или при помощи ReadDwgFile)
Точно нет, это я сразу проверил. Этот файл - база блоков, он только для считывания блоков и копирования их в текущий чертеж, кроме метода что я приложил он нигде не читается.
На что еще можно проверить?
87
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Александр Ривилис 07-03-2025, 23:31:29 »
Ну и ещё одно. Не следует создавать Database в using если собираешься использовать его после using.
88
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Александр Ривилис 07-03-2025, 23:29:20 »
Эта ошибка ещё может быть если этот dwg-файл уже открыт в этом или другом AutoCAD (в редакторе или при помощи ReadDwgFile)
89
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Atomohod 07-03-2025, 23:19:40 »
да файл на локальном ПК. Права админские. Открываемый файл (формат dwg 2018) создан в том же каде, где запускаю плагин.
Вариант с пустым паролем я тоже пробовал в таком виде
Код - C# [Выбрать]
  1.  sourceDb.ReadDwgFile(dwgPath, System.IO.FileShare.ReadWrite, true, "");
не сработало. Файл не запаролен
90
AutoCAD .NET API / Re: Ошибка чтения файла
« Последний ответ от Александр Ривилис 07-03-2025, 23:09:31 »
1. dwg-файл в каталоге доступном и для чтения и для записи?
2. dwg-файл сохранен в версии AutoCAD, который может быть открыт в запущенной версии AutoCAD?
3. Что такое "LOG.TXT"? Вообще-то этот параметр - это пароль dwg-файла. Но насколько я помню этот параметр давно не используется и нужно передавать null.
Страницы: 1 ... 7 8 [9] 10