Пересохранение сборок

Автор bvr, 22.01.11, 12:08:56

« назад - далее »

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

bvr

Добрый день

Вопрос такой.
Есть сборка, обзовем ее сб.a3d, в нее входят детали, например 1 и 2. Они лежат в каталоге с:\1. Открыт только файл сборки. Файл сборки хранит в себе ссылки на входящие детали. Надо пересохранить в каталог с:\2.
Что будет, если выполнить такой алгоритм:
1. Начало цикла
2. Определяем имя файла входящей детали и открываем его
3. Через IPart меняем FileName
4 Сохраняем файл и закрываем его
5 идем к п.2
6 Конец цикла
7 Меняем имя файла сборки и созраняем сборку в с:\2.
Вопрос такой, когда мы откроем пересохраненную сборку, то она какие файлы будет содержать? Расположенные по старому пути или пересохраненные? Если старые, то как сделать, что бы она содержала ссылки на пересохраненные файлы?

ЗЫ: Пример частный, в общем случае входящие детали не обязательно будут находиться в дочерних каталогах по отношению к с:\1, как быть в этом случае?

Спасибо.

chelkar

IPart:FileName сам новый файл не создаст.
Надо сначала скопировать файл и указать уже существующий.
И не забыть у IPart вызвать Update.
Тогда новая сборка будет казать на новые файлы.
Я так думаю ...

ainis

Наверное, как-то так:


Dim iKompas7 As KompasAPI7.IApplication = Marshal.GetActiveObject("KOMPAS.Application.7")
Dim iDocuments As KompasAPI7.IDocuments = iKompas7.Documents
Dim iDoc As KompasAPI7.IKompasDocument = iDocuments.Item(iPart.fileName)
iDoc.SaveAs(NewPath) 'NewPath - новый путь


Для сборки, возможно, нужно будет вызвать метод UpdateDocumentParam (API 5) или Update для интерфейса IModelObject  (API 7).