• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Проблема с PrintJob на C#

Автор rehscm, 25.07.12, 06:29:09

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

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

rehscm

Здравствуйте. проблема следующая:
хочу сделать автоматическую печать группы документов на виртуальный PDF принтер.
при получении ссылки на IPrintJob - вылетает исключение "интерфейс не зарегистрирован". При этом обращение к другим интерфейсам доступным из API7 - такой ошибки не вылетает.. не понимаю :(

Type t = Type.GetTypeFromProgID("KOMPAS.Application.5");
KompasObject kompas = (KompasObject)Activator.CreateInstance(t);
ksDocument2D doc = (ksDocument2D)kompas.Document2D();
IApplication api7 = (IApplication)kompas.ksGetApplication7();
IPrintJob pj = api7.PrintJob;//на этой строке вызывается исключение

           
           

У меня на Delphi проблем нет см. рисунок с отладчика.
Может так IPrintJob pj =( IPrintJob)api7.PrintJob;, хотя языка Вашего не знаю, могу заблуждаться, а может IApplicationkompas.ksGetApplication7() вернул null, Вы тоже этого не проверили.

rehscm

проверял.. kompas.ksGetApplication7() - возвращает рабочую ссылку. Проверял не только сравнением с null но и получением от api7 ссылки на activeDocument - все работает.. а вот при получении printJob - ошибка.
меня смущает ошибка "интерфейс не зарегистрирован" - как такое может быть если я имею рабочую ссылку на api7 ?

rehscm

проблему можно решить не используя printJob - сохранением чертежа в растр, а затем печатью уже растра, но это во-первых замедляет процесс, во-вторых - дает чертежи несравнимо низкого качества (   требуется именно работа с printJob..
помогите пожалуйста.. обязуюсь результат выложить здесь для свободного использования

Что, я Вам могу сказать, посмотрел в вскользь Ваш язык и я так понимаю, что dll интерфейсов, Вам уже поставляют, а там могут быть ошибки, хотя я могу ошибаться.

rehscm

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

Fomenko75

попробуйте запустить компас из командной строки так kompas.exe -register

Dragon3DGraff

Добрый день!
Понимаю, конечно, что некропост, не стал создавать новую тему. Решена ли проблема?

Я хочу вызвать настройку принтера, но PrintJob у меня просто нет.... Это проблема API или я чего то не понимаю?...


KompasObject kompas7;
IApplication appl;
kompas7 = (KompasObject)Marshal.GetActiveObject("KOMPAS.Application.5");
appl = (IApplication)kompas7.ksGetApplication7();
IKompasDocument2D doc7;
doc7 = (IKompasDocument2D)appl.ActiveDocument;

и вот теперь я должен получить из appl.PrintJob ? Но его там нет...

rehscm

решена переносом с С# на Delphi - там все и сразу заработало

если цель такая же как была у меня - печать документа или папки в pdf, то результат вот:
для 32-битной версии http://drawings66.ru/downloads/PDF_1_win32.rtw
для 64-битной версии http://drawings66.ru/downloads/PDF_1_win64.rtw

после добавления библиотеки в режиме работы "панель" появится панель с двумя кнопками - "документ в пдф" и "папку в пдф"
+ Благодарностей: 1

Dragon3DGraff

Цитата: rehscm от 22.11.17, 07:34:27
решена переносом с С# на Delphi - там все и сразу заработало


Спасибо!
Конечно переходить на делфи нам не подходит...
Пойду спрашивать у техподдержки. Проблема видимо в апи