Экспорт в DWG ограничивается 5 файлами

Автор Kuha, 23.05.14, 15:20:33

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

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

Kuha

Доброго времени суток.
Хочу сделать библиотеку для экспорта всех открытых в Компасе файлов спецификации (spw) и чертежей (cdw) в DWG и PDF одним кликом.
Для начала экспериментирую с отдельным приложением (с библиотеками еще не разбирался, но если кто-нибудь кинет исходником элементарной библиотеки на C# - буду признателен).

Накодил вот это.
С экспортом в PDF проблем нет (поэтому закомментировал соответствующие строки), а вот экспорт в DWG при количестве файлов больше 5 вылетает с ошибкой

Необработанное исключение типа "System.Runtime.InteropServices.COMException" в mscorlib.dll

Дополнительные сведения: Вызванный объект был отключен от клиентов. (Исключение из HRESULT: 0x80010108 (RPC_E_DISCONNECTED))


Подскажите, пожалуйста, что я делаю не так?

private void button1_Click(object sender, EventArgs e)
        {
            //Подключаемся к текущей сессии Компаса
            try
            {
                kompas = (KompasObject)Marshal.GetActiveObject("KOMPAS.Application.5");
            }
            catch (Exception)
            {
                MessageBox.Show("Подключение к Компасу не прошло");
            }
            if (kompas != null)
            {
                //используем API  - 7-ой версии
                KompasAPI7._Application My7Komp = (_Application)kompas.ksGetApplication7();

                // Ссылка на текущий и активный документ
                KompasDocument KompDoc = (KompasDocument)My7Komp.ActiveDocument;

                // Узнаем количество активных-открытых документов
                int ActiveDocCount = My7Komp.Documents.Count;

                IConverter pConverterDWG = My7Komp.get_Converter("C:\\Program Files\\ASCON\\KOMPAS-3D V14\\Libs\\ImpExp\\dwgdxfExp.rtw");
                //IConverter pConverterPDF = My7Komp.get_Converter("C:\\Program Files\\ASCON\\KOMPAS-3D V14\\Bin\\Pdf2d.dll");

                for (int i = 0; i < ActiveDocCount; i++)
                {
                    // Обращаемся к элементу по индексу
                    IKompasDocument kDoc = My7Komp.Documents[i];

                    //Проверяем, является ли открытый файл чертежем и сохраняем его в pdf и dwg
                    if (kDoc.PathName.Contains(".cdw"))
                    {
                        ksDocument2D cdw = (ksDocument2D)kompas.Document2D();
                        MessageBox.Show(i + " Конвертируемый файл: " + kDoc.PathName);

                        //Экспорт
                        pConverterDWG.Convert(kDoc.PathName, kDoc.PathName.Remove(kDoc.PathName.Length - 4) + ".dwg", 1, false);
                      //  pConverterPDF.Convert(kDoc.PathName, kDoc.PathName.Remove(kDoc.PathName.Length - 4) + ".pdf", 1, false);
                    }
                    //Проверяем, является ли открытый файл спецификацией и сохраняем его в pdf и dwg
                    else if (kDoc.PathName.Contains(".spw"))
                    {
                        ksSpcDocument spc = (ksSpcDocument)kompas.SpcDocument();
                        MessageBox.Show(i + " Конвертируемый файл: " + kDoc.PathName);

                        //Экспорт
                        pConverterDWG.Convert(kDoc.PathName, kDoc.PathName.Remove(kDoc.PathName.Length - 4) + ".dwg", 1, false);
                       //  pConverterPDF.Convert(kDoc.PathName, kDoc.PathName.Remove(kDoc.PathName.Length - 4) + ".pdf", 1, false);
                    }
                }
            }   
        }

Дормидонт Евпатьевич

Цитировать...библиотеку для экспорта... файлов спецификации (spw) и чертежей (cdw) в DWG...
Это можно и штатной библиотекой делать - выбери сколько угодно файлов (точнее, сколько память позволит), и одним кликом можешь все экспортировать.

Kuha

Спасибо, эту возможность я видел.
Мне хочется именно "с перламутровыми пуговицами".

Alexey_Ovtses

Добрый день, делаю подобную библиотеку на vb.net - та же проблема (вылетает после 5-го обработанного файла), подскажите если решение уже есть.