Непонятки с OpenDocument()

Автор bvr, 25.12.11, 18:41:22

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

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

bvr

Добрый вечер
Такая вот строка
char tchStr[MAX_PATH];
...........
reference doc = OpenDocument(tchStr, 0);
подвешивает компас
и такая
OpenDocument(_T("C:\\Program Files\\ASCON\\KOMPAS-3D V10\\Samples\\Drawings\\12020.cdw"), 0);
тоже.
В чем может быть проблема?

Спасибо


А так не пробовали?
reference doc = OpenDocument("C:\Program Files\ASCON\KOMPAS-3D V10\Samples\Drawings\12020.cdw", 0);

bvr

Такая конструкция взята с примера в КОМПАСЕ (_T("......"), - она не работает
reference doc = OpenDocument("C:\Program Files\ASCON\KOMPAS-3D V10\Samples\Drawings\12020.cdw", 0); - тоже не работает, причем бывает, что и открывает, но это реже, примерно 1:8

Bordes

возможно ваш проект настроен на исп. Unicode,
тогда нужно использовать OpenDocumentW
(и строковые переменные объявлять как TCHAR)

bvr

Caracter Set -> Not Set
char tchStr[MAX_PATH];
reference doc = OpenDocument(tchStr, 0);
Вешает компас напрочь, причем если в компасе открыт чертеж, то может и отработать, а может и повесить.
Не знаю куда и копать
Может у кого есть какие мысли?
Тех поддержка читает этот форум?
Спасибо

А, как Вам помочь, если Вы полную картину не показываете?

bvr

Всех с прошедшими
За основу взят пример с подпиской на события

в eventcom.cpp
BOOL CEventComApp::InitInstance()
{
reference doc_1 = OpenDocument("E:\\3 вариант\\Кольцо внутреннее.cdw", 1); //тут засада

CWnd parent;
HWND ll = (HWND)GetParentHWindow();
HWND hh = (HWND)::GetHWindow();
   parent.Attach(hh);
//.... работа с диалогом
dlgFindFiles dlg = dlgFindFiles(&parent, theApp.m_hInstance);
dlg.DoModal();    //и тут засада

parent.Detach();
   
return CWinApp::InitInstance();
}
******
; eventCom.def : Declares the module parameters for the DLL.

LIBRARY      "ФФФФ"
DESCRIPTION  'ФФФФ Windows Dynamic Link Library'

EXPORTS
LIBRARYENTRY @1
LIBRARYID    @2
LibInterfaceNotifyEntry @3

Надо ли получать указатель на объект компаса?
Вообще не понятно как работает. Если в компасе открат файл, то может сработать, а может и нет. Если никакие файлы не открыты, то чаще всего не срабатывает.
Для открытия файла с помощью OpenDocument надо ли получать указатель на объект компаса?

Спасибо

Какая у Вас цель, если не секрет? Просто для реализации Вы взяли интересное место для открытия файла и пример не менее интересен.

bvr

Просто для изучения был взят этот пример, потом решил добавить функционала.
Задача такая - открыть файл->провести обработку->закрыть файл в указанной папке. Обрабатываются все документы: чертежи, спецификации, текстовые документы в цикле. В приведенном выше примере кода файл открывается при инциализации библиотеки, библиотека на события не подписана(возможно грабли при подписке), т.е. я полагаю, что ничего особенного из этого примера до этого момента нет. Как я описывал файл то открывается, то подвешивает систему, и не понятно в чем причина. Хочется разобраться.

Вы для Вашей задачи взяли не тот пример, я Вам советую взять step3, зачем лезть в события, если они Вам не нужны.

bvr

В степе3 все работает, НО ПОЧЕМУ НЕ РАБОТАЕТ В ЭВЕНТКОМЕ? Вот в чем вопрос.
Может есть у кого какие мысли по этому поводу?
У меня никаких :-(
В чем могут быть грабли?

Вы свою функцию расположили в функции инициализации класса, которая отрабатывается один раз.

bvr

И еще такой вопрос
При открытии чертежа, сделанного из модели выскакивает диолог о том, что модель изменилась и надо ли перестроить чертеж. Можно ли отменить этот диалог?

Спасибо

Через WinApi точно можно, а вот через Api Компаса не знаю, надобности не было.

Bordes

Цитата: bvr от 12.01.12, 16:24:53
...
При открытии чертежа, сделанного из модели выскакивает диолог о том, что модель изменилась и надо ли перестроить чертеж. Можно ли отменить этот диалог?
...
Попробуйте использовать IApplication::HideMessage
+ Благодарностей: 1

chelkar

И не забудьте вернуть сообщения обратно (ksShowMessage).
Иначе поведение КОМПАСа поменяется.