При записи в файл DWG выдает ошибку eWrongDataBase

Автор Тема: При записи в файл DWG выдает ошибку eWrongDataBase  (Прочитано 6512 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
И все-таки транзакция в БД открытой с noDocument ?  ;)
Ну я лишь процитировал статью с AutoCAD DevBlog. Все познается в тестировании =)

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Ну я лишь процитировал статью с AutoCAD DevBlog. Все познается в тестировании =)
Может конечно такая транзакция - фикция и Abort не сработает... я не проверял

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Скорее всего объекты связаны со старой БД через свойства (стиль, слой и т.п.) и копирование в другую БД сработает только рекурсивное. Я использовал WblockCloneObjects
Думаю достаточно было бы переключить HostApplicationServices.WorkingDatabase на эту базу на время работы с ней.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Скорее всего объекты связаны со старой БД через свойства (стиль, слой и т.п.) и копирование в другую БД сработает только рекурсивное. Я использовал WblockCloneObjects
Думаю достаточно было бы переключить HostApplicationServices.WorkingDatabase на эту базу на время работы с ней.
Видел подобную тему с вашим ответом, пробовал - не завелось

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Спасибо!

Я сморю у вас и флаги для чтения ни как у меня.
видимо это тоже важно.

db.ReadDwgFile(templateDwgFileName, FileShare.Read, false, null);
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Видел подобную тему с вашим ответом, пробовал - не завелось
Только сейчас разглядел исходный код Алексей (IdeaSoft) и понял, что он передаёт в функцию BlockReference'ы, которые явно выбраны из другой базы. Тогда этот вариант конечно не подойдёт. Годится или твой (хотя тоже с нюансами) или avc (его лучше, но раз нужны разбитые блоки, то их следует разбивать уже после копирования в базу - тогда они будут ссылаться на правильные объекты).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение