Ошибка при сохранении.

Автор Тема: Ошибка при сохранении.  (Прочитано 450 раз)

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

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 530
  • Карма: 16
Ошибка при сохранении.
« : 16-02-2021, 00:27:36 »
Доброго времени суток, уважаемые форумчане! Ищу вашей помощи в решении такой вот проблемы:

Мне необходимо пересохранить открытую сборку (сделать аналог команде "сохранить как"), чтобы проводить с ней манипуляции без вреда для оригинала.
Написал такой вот метод:

Код - C# [Выбрать]
  1. internal static Inventor.AssemblyDocument CreateTempAssembly (Inventor.AssemblyDocument oDoc)
  2. {
  3.     Inventor.Application oApp = (Inventor.Application) oDoc.ComponentDefinition.Application;
  4.     oApp.SilentOperation = true;
  5.     oDoc.SaveAs(@"D:\temp.iam", false);
  6.     oApp.SilentOperation = false;
  7.     return oDoc;
  8. }

И вроде все работает и сохраняет, но всплыла такая вот штуковина: если в момент копирования, открыта материнская сборка, которой данная сборка приходится вхождением, то в материнской сборке ссылки меняются на копию. При проделывании такой же операции руками. проблемы нет. Не могу разобраться. это баг, или я не понимаю чего-то?
Буду благодарен за любой совет!

В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 605
  • Карма: 157
  • Skype: mikazakov@mail.ru
Re: Ошибка при сохранении.
« Ответ #1 : 16-02-2021, 18:18:48 »
Ну да работа пользовательского интерфейса отличается от работы через АПИ. Может глюк в пользовательском интерфейсе, хотя воркфлоу на пользовательский интерфейс никто из не читал.

Отмечено как Решение R.I.Chernov 17-02-2021, 21:13:27

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 530
  • Карма: 16
Re: Ошибка при сохранении.
« Ответ #2 : 17-02-2021, 21:13:24 »
Ну да работа пользовательского интерфейса отличается от работы через АПИ. Может глюк в пользовательском интерфейсе, хотя воркфлоу на пользовательский интерфейс никто из не читал.

Спасибо. Тоже для себя решил, считать это глюком и сделать по-другому. В итоге код получился такой вот, может пригодится кому:

Код - C# [Выбрать]
  1. internal static Inventor.AssemblyDocument CreateTempAssembly (Inventor.AssemblyDocument oDoc)
  2. {
  3.     Inventor.Application oApp = (Inventor.Application) oDoc.ComponentDefinition.Application;
  4.     oApp.SilentOperation = true;
  5.     oDoc.SaveAs(@"D:\temp.iam", true);
  6.     Inventor.AssemblyDocument oDocNew = (Inventor.AssemblyDocument) oApp.Documents.Open(@"D:\temp.iam");
  7.     oDoc.Close();
  8.     oApp.SilentOperation = false;
  9.     return oDocNew;
  10. }

 Только в него надо добавить еще считывание текущего уровня детализации и видового представления и установки этих значений в новой сборке.
В программировании я новичок...но ненадолго! ;)