Call SaveAs VB.Net создает убитые файлы iAssembly

Автор Тема: Call SaveAs VB.Net создает убитые файлы iAssembly  (Прочитано 4515 раз)

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

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
Через AddIn VB.Net нужно из производного компонента параметрической сборки мне нужно получить исходный родительский файл и сохранить его под новым именем.
Использую код:
                If oDoc.ComponentDefinition.IsiAssemblyMember = False Then
                    oName = oDoc.FullFileName
                Else
                    oName = oDoc.ReferencedFiles(1).FullFileName
                    Dim tDoc As AssemblyDocument
                    tDoc = m_inventorApplication.Documents.Open(oName, False)
                    tDoc.Update()
                    noName = Replace(oName, "[z]", "[p]")
                    Call tDoc.SaveAs(noName, False) 'Сохраняет файл модели в новой папке и под новым именем
                    Exit Sub
                End If
Файл создается битый - при попытке его открыть происходит фаталэррор...
Если после SaveAs добавить tDoc.Save то файл потом открыть можно, но фаталэррор происходит при попытке его закрыть.
Иногда успевает появится сообщение:

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Через AddIn VB.Net нужно из производного компонента параметрической сборки мне нужно получить исходный родительский файл и сохранить его под новым именем.
А если средствами ОС (через проводник) копируешь, то файл целый остается?
Просто зачем его открывать? Может просто через FileManager.FileSystemObject() попробовать скопировать...
Смысл действий непонятен...

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
Нет, сохранение силами винды не подходит - нажно, чтоб файл проходил через событие OnSave...

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
Вопрос в развитие понимания процедуры Call SaveAs: есть чертеж на котором изображены разные исполнения iPart. Когда я выполняю команду Call dDoc.SaveAs(NewName, True), то в событие он OnSave попадают и производняе файлы iPart. Почему это происходит? Это естественный процесс работы SaveAs для чертежа или производняе файлы iPart направляются в событие OnSave из-за не правильного построения дрругих участков кода моего AddIn и, по умолчанию, такого не должно быть?

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Это естественный процесс работы SaveAs для чертежа
События OnSave возникают от зависимых файлов, нужно просто проверять, если это не сохраняемый файл (чертеж), то событие пропускать...