Из библиотеки моделей .l3d программно достать модель и сохранить в файл .m3d.

Автор x, 01.12.16, 09:34:49

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

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

x

Здравствуйте!
Подскажите пожалуйста как из библиотеки моделей .l3d программно достать модель и сохранить в файл .m3d.
Спасибо.

KrissKross

Вопрос требует уточнения
Что непосредственно необходимо сделать:
1. Достать все библиотечные файлы из сборки
2. Или Взять библиотеку l3d - и ее распотрошить

Если первое "Достать все библиотечные файлы из сборки"
В сборке - Попробовать через IFeature7 - затем IPart7::SaveAs - Сохранить как

если второе "Взять библиотеку l3d - ее распотрошить"
попробовать
или ILibraryManager
или IPart::GetUserLibraryCommand

x

Нужно взять библиотеку и сложить все модели из неё в отдельную папку на диске.

KrissKross

тогда
ILibraryManager

ЦитироватьИнтерфейс Менеджера библиотек.
Данный интерфейс объединяет работу с библиотеками процедур (файлы *.rtw и *.dll ) и библиотеками документов: фрагментов (файлы *.lfr ) и моделей (файлы *.l3d).

от него IInsertsLibraries = ILibraryManager::ModelsLibraries

x

Из IInsertLibrary я получаю список IInsert-ов. Как из IInsert получить 3Д модель на диске?

KrissKross

Перебором
Foreach (Insert item in Inserts)
{
    string s = item.PathName; // Получаем - Полное имя элемента.
    // Вызываем команду редактирования  IInsert.Edit
    IKompasDocument НашИскомыйЭлемент =  item.Edit();
}
НашИскомыйЭлемент сохраняем на диске

Если все получиться
Думаю всем будет интересно посмотреть на рабочий код

x

При сохранении появляется сообщение:

KrissKross

Поэкспериментируйте с
IApplication::HideMessage

Цитировать2. Константа ksHideMessageYes позволяет выполнять перестроения документа, скрывая все запросы на перестроение.

3. Константа ksHideMessageNo позволяет не выполнять перестроения документа, скрывая все запросы на перестроение.

Что делает
скрывает диалог запроса от пользователя
и "нажимает" одну из кнопок

x


KrissKross

Странно
при ручном повторении всех действий
нет никаких сообщений
может проблемы с правами доступа
конкретной библиотеки документов
попробуйте вручную воспроизвести необходимый порядок действий

x

Вручную у меня тоже никаких сообщений нет. А при программном сохранении есть.

zergud

Победили окно об измененных ссылках?

при программном SaveAs таже ситуация..

причем проблема даже не в самом окне, а что не узнать что пользовтель нажал "Отмена" и сохранение с новым именем по факту не произошло.

p.s. Даже если проверять на наличие файла по новому расположению, не запускать же заново SaveAs при отсутствии
хорошо бы обойтись  ksHideMessageYes  ksHideMessageNo