Экспорт чертежа Civil 3D в AutoCAD

Автор Тема: Экспорт чертежа Civil 3D в AutoCAD  (Прочитано 15063 раз)

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

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Необходимо сохранить текущий чертеж Civil 3D в формате AutoCAD с выбором версии DWG. Изначально я реализовал экспорт через:
Код - C# [Выбрать]
  1. ed.Command("_exporttoautocad2010", filename);
Но в этом случае, если в чертеже есть мои объекты (с переопределением DrawableOverrule) полученный чертеж потом невозможно открыть - во время открытия каждый раз происходит фатальная ошибка, даже при не загруженном модуле.

Второй вариант - это создание копии чертежа с помощью:
Код - C# [Выбрать]
  1. db.Wblock();
Далее, сохранить этот новый чертеж, открыть и расчленить все свои объекты и объекты Civil 3D в модели и во всех листах, и сохранение в нужной версии DWG.

Нужно ли подкорректировать второй метод, чтобы он корректно работал (я его только сейчас реализовываю и пока не могу сказать на сколько он рабочий)?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #1 : 04-04-2019, 20:25:49 »
Но в этом случае, если в чертеже есть мои объекты (с переопределением DrawableOverrule) полученный чертеж потом невозможно открыть - во время открытия каждый раз происходит фатальная ошибка, даже при не загруженном модуле.
Видно ты что-то там напереопределял лишнего. Попробуй тогда анализировать запущенную команду и в случае если это экспорт отменяй переопределение.
Второй вариант - это создание копии чертежа с помощью:
Код - C# [Выбрать]

    db.Wblock();

Далее, сохранить этот новый чертеж, открыть и расчленить все свои объекты и объекты Civil 3D в модели и во всех листах, и сохранение в нужной версии DWG.
Теоретически должно работать, но Wblock теряет ссылки на SoftPointerId (например, группы рассыпаются)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #2 : 04-04-2019, 20:36:32 »
Попробуй тогда анализировать запущенную команду и в случае если это экспорт отменяй переопределение.
Но тогда я потеряю свою графику из переопределения...

Пока я склоняюсь ко второму варианту. Как сделаю - отпишусь что получилось.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #3 : 04-04-2019, 20:54:06 »
Но тогда я потеряю свою графику из переопределения...
Думаю что ты её потеряешь в любом случае.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #4 : 04-04-2019, 20:57:57 »
Так ведь в этом и заключается моя главная задача - оставить свою графику. Я уже написал свою команду Расчленить, которая находит в чертеже все мои объекты, получает всю пользовательскую графику, вычерчивает ее и удаляет исходные объекты.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #5 : 04-04-2019, 21:06:34 »
Алексей Терно,
Тут ты только экспериментальным путём сможешь определить всё ли хорошо в твоей логике. Вместо db.Wblock можешь еще попробовать db.SaveAs - точно ничего не потеряешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #6 : 04-04-2019, 21:19:14 »
Вместо db.Wblock можешь еще попробовать db.SaveAs - точно ничего не потеряешь.
Кстати, да ))

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #7 : 05-04-2019, 08:01:56 »
У меня похожая штука есть - при экспорте в автокад нужно отрисовать перерисовку видов профилей (overrule).
Подписываюсь на событие Document.CommandWillStart и если запускается комнда содержащая EXPORTTOAUTOCAD, то запускаю отрисовку, но не в WorldDraw, а в чертеж.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #8 : 05-04-2019, 11:23:39 »
Но в этом случае, если в чертеже есть мои объекты (с переопределением DrawableOverrule) полученный чертеж потом невозможно открыть - во время открытия каждый раз происходит фатальная ошибка, даже при не загруженном модуле.
Видно ты что-то там напереопределял лишнего.
Похоже на то. Проверил у себя - чертёж с переопределёнными объектами после стандартного экспорта открывается нормально, без фаталов. Только в нём не сохраняется переопределение - только стандартное отображение.
Подписываюсь на событие Document.CommandWillStart и если запускается комнда содержащая EXPORTTOAUTOCAD, то запускаю отрисовку, но не в WorldDraw, а в чертеж.
Интересное решение! Я так понимаю, что стандартное отображение сохраняется и выполняется только "дорисовка" того, чего не хватает, а не полная подмена отображения?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #9 : 05-04-2019, 11:29:29 »
Необходимо сохранить текущий чертеж Civil 3D в формате AutoCAD с выбором версии DWG.
Вот тут можно что-нибудь подсмотреть по теме: http://adn-cis.org/forum/index.php?topic=538.0

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #10 : 05-04-2019, 12:20:35 »
Интересное решение! Я так понимаю, что стандартное отображение сохраняется и выполняется только "дорисовка" того, чего не хватает, а не полная подмена отображения?
Да, частичная перерисовка, в основном подпрофильных данных.

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #11 : 07-04-2019, 15:54:05 »
Проверил у себя - чертёж с переопределёнными объектами после стандартного экспорта открывается нормально, без фаталов.
А где ты хранишь данные - в XData или в ExtensionDictionary?

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #12 : 08-04-2019, 07:06:58 »
Вот, что я наделал:
Код - C# [Выбрать]
  1. Document doc = Application.DocumentManager.MdiActiveDocument;
  2. Database db = doc.Database;
  3.  
  4. Database newDB = new Database(false, true);
  5. newDB = db.Wblock();
  6. newDB.SaveAs(@"D:\Temp\exportfile.dwg", DwgVersion.AC1032);
  7. newDB.CloseInput(true);
  8.  
  9. Document new_doc = Application.DocumentManager.Open(@"D:\Temp\exportfile.dwg", false);
  10. Application.DocumentManager.MdiActiveDocument = new_doc;
  11. Database new_db = new_doc.Database;
  12. Editor new_ed = new_doc.Editor;
  13.  
  14. PromptSelectionResult res = new_ed.SelectAll();

На последней строке выскакивает исключение eNotApplicable. Редактор new_ed получается какой-то неполноценный:


Что надо подправить, чтобы new_ed.SelectAll() заработал?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #13 : 08-04-2019, 10:21:10 »
Флаг "Session" у команды есть?
Что надо подправить, чтобы new_ed.SelectAll() заработал?
Возможно, лучше совсем его не использовать.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Экспорт чертежа Civil 3D в AutoCAD
« Ответ #14 : 08-04-2019, 12:10:04 »
Возможно, лучше совсем его не использовать.
Именно. Он совершенно не нужен в этой ситуации. Тебе нужна коллекция ObjectId всех примитивов? Ну так пройдись итератором и выбери их.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение