Экспорт в предыдущую версию из КОМПАС 13

Автор q, 29.08.11, 20:03:57

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

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

q

29.08.11, 20:03:57 Последнее редактирование: 29.08.11, 21:17:56 от q
Пробовал сделать программу на С# для пакетного экспорта файлов КОМПАС 13 версии в КОМПАС 12 (на основе примера \SDK\C#\Automation\ksContr), вышла примерно такая функция экспорта (возможно халтурно сделано, просто я неопытный программист):
private void doc3DExport(string sourcePath, string destinationPath, string filePath)
{
    ksDocument3D doc3D = (ksDocument3D)kompas.Document3D();
    if ((doc3D != null) &&
        (!File.Exists(filePath.Replace(sourcePath, destinationPath))))
    {
        doc3D.Open(filePath, this.cbxInBackgroundMode.Checked);
        if (filePath.Contains(".a3d"))
        {
            ksPartCollection parts = (ksPartCollection)doc3D.PartCollection(true);
            for (int i = 0; i < parts.GetCount(); i++)
            {
                ksPart p = (ksPart)parts.GetByIndex(i);
                if (!p.standardComponent)
                {
                    string srcFilePath = p.fileName;
                    string destFilePath = srcFilePath.Replace(
                        this.sourceFolderBrowserDialog.SelectedPath,
                        this.destinationFolderBrowserDialog.SelectedPath);
                    if ((srcFilePath.CompareTo(destFilePath) != 0) &&
                        (File.Exists(srcFilePath)))
                    {
                        string destFolder = destFilePath.Substring(0, destFilePath.LastIndexOf("\\") + 1);
                        if (!Directory.Exists(destFolder))
                            Directory.CreateDirectory(destFolder);
                        ksDocument3D part3D = (ksDocument3D)kompas.Document3D();
                        if ((part3D != null) && (!File.Exists(destFilePath)))
                        {
                            string srcFolder = srcFilePath.Substring(0, srcFilePath.LastIndexOf("\\") + 1);
                            doc3DExport(srcFolder, destFolder, srcFilePath);
                        }
                        p.fileName = p.fileName.Replace(this.sourceFolderBrowserDialog.SelectedPath,
                            this.destinationFolderBrowserDialog.SelectedPath);
                        p.Update();
                    }
                }
            }
        }
        doc3D.SaveAsEx(filePath.Replace(sourcePath, destinationPath),
            (int)KompasSaveMode.PreviousVersion); //PreviousVersion == -1
        doc3D.close();
    }
}

Вопрос в том что после экспорта часть файлов .m3d, сохраняется неверно и при открытии в КОМПАС 12 пишет "Неверная структура файла". При чем если делать экспорт вручную такой ошибки не возникает. Может кто-то подскажет где я ошибся?

q

И еще КОМПАС отказывается автоматически открывать файлы с кинематическим выдавливанием вдоль пространственной кривой. Пишет "Ошибка открытия файла", хотя вручную открыть файл удается. Может лучше сделать программу в виде библиотеки, а не отдельным приложением. Или дело в том, что я пишу на языке С# и если все сделать на другом языке удастся избежать этих ошибок. Кто-то сталкивался с подобными проблемами? Поделитесь опытом пожалуйста.

Poltava

как то нужно было именно такое взял за базу макрос выложенный добрым человеком здесь ТЫЦ однако не решенным в нем остался вопрос поднятый мной здесь ТЫЦ макрос создан с помощью библиотеки компас макро которая использует в качестве языка программирования Python 2.6
Но если вы свояете подобную библиотеку будет очень не плохо

q

В общем-то я уже сделал, но не библиотеку, а отдельное приложение (во вложенном архиве). Если кто согласится его потестить на своих файлах и опишет возникшие ошибки в этой теме буду признателен. Делал программу чисто для себя, так что она не особо универсальна.
Логика программы следующая: запуск приложения КОМПАС, поиск файлов КОМПАСа (m3d, a3d, cdw, frw, spw, kdw) в исходной папке, сохранение в папку результата в предыдущую версию, при выборе флажка включать поддиректории рекурсивно ищет в них файлы и пересохраняет, создавая необходимые пути в папке результата. Недавно добавил обновление путей в a3d файлах таким образом: при открытии файла сборки пробует пересохранить все входящие в нее детали и сборки, обновляет пути к новым файлам, сохраняет сборку. То же самое делает рекурсивно с подсборками. В конце экспорта или в случае сбоя программа закрывает запущенный КОМПАС.
Для запуска программы нужен установленный .NET Framework 3.5. Я тестил на компьютере с установленным Windows XP SP3, но возможно пойдет и на Windows 7. Перед запуском экспорта рекомендую позакрывать все окна КОМПАС.
+ Благодарностей: 1

Poltava

Обязательно потестим но сразу вопрос просьбы по доработке принимаются ???

q

Если времени будет хватать, то можно и доработать или могу скинуть исходники там особо сложного ничего нету. Вот еще скидываю скриншот программы. В принципе можно испытывать работу и на других версиях КОМПАСа, но меня прежде всего интересует не появляется ли глюков при пересохранении КОМПАС V13 >> КОМПАС V12.


tolikwu

В Компас 15 тоже вроде робит. Проверял на чертежах и спецификациях.

snegok74

уважаемый Q.
выложите исходники на программу экспорта, если можно, пожалуйста

Itat

Здоровская программа!!! Автору огромное спасибо!
Пересохраняю из V 16 в V 12. Win 7x64 ВСЁ РАБОТАЕТ!  :

СПАСИБО ЕЩЁ РАЗ! :beer: