PrintSetup InSession

Автор Тема: PrintSetup InSession  (Прочитано 9842 раз)

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

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #15 : 18-11-2019, 14:04:27 »
Да, конечно в этом месте.
Только у меня, похоже не In-Session, а обычный вызов обернутый в транзакцию (в коде не указал, извиняюсь).

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

Обновил до Revit 2020.1, пытаюсь вызвать SubmitPrint и Revit просто падает с сообщением "An unrecoverable error has occurred.  The program will now be terminated.  All of your data has been recently saved, so there is no need to create recovery files." :( Опять же, в 2018-ом такого не было. 2020-ый падает стабильно.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: PrintSetup InSession
« Ответ #16 : 18-11-2019, 14:09:03 »
Попробуйте открыть группу транзакций, в ней транзакцию сохранения настроек печати, её коммитим, дальше печатаем, в завершение, откатываем группу транзакций

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #17 : 18-11-2019, 15:06:04 »
С группой транзакций не понял, но идея разделить на транзакции зацепила.
Разбил процесс печати на 3 транзакции, но результат тот же самый. Не понимаю, чего ему не хватает. Причем, что интересно, Revit создает .ps файл в результате вызова SubmitPrint, а потом вываливает сообщение о неустранимой ошибке. И ошибка не трай-кэтчится, что обидно. В итоге и .ps файл имеется, и сделать ничего не можешь.

Попробовал вызвать те же самые действия с правами админа, результат тот же самый. Не слабый такой облом получился при переходе на новую версию. Теперь ума не приложу, как печатать большой объем документации?! :(

Off-Topic: показать
P.S. Revit - пример крайне непродуманного и сырого продукта. В сравнении с AutoCAD - небо и земля.
« Последнее редактирование: 18-11-2019, 15:23:21 от Александр Ривилис »

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: PrintSetup InSession
« Ответ #18 : 18-11-2019, 15:11:04 »
Off-Topic: показать
P.S. Revit - пример крайне непродуманного и сырого продукта. В сравнении с AutoCAD - небо и земля.


о_0, 0_о, 0_0

Да ну ладно, Revit - конфетка, ну, может быть кроме API, связанного с печатью :). Где-то в другом, возможно проблема. У нас есть пакетная печать, в 2020 работает без проблем
« Последнее редактирование: 18-11-2019, 15:23:39 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: PrintSetup InSession
« Ответ #19 : 18-11-2019, 15:22:48 »
Причем, что интересно, Revit создает .ps файл в результате вызова SubmitPrint, а потом вываливает сообщение о неустранимой ошибке.
А это не проблема драйвера?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #20 : 18-11-2019, 15:28:28 »
о_О, о_О, о_О
Это, конечно, уже не в тему, но попробуйте программно повернуть, скажем, тройник на 15 градусов вокруг длиной оси. Еще можете попробовать поменять систему у трубопровода с одной на другую. Ну или сформировать спецификацию металла с "двухэтажным" обозначение материала, а потом еще и сводную ведомость материалов. И все эти детские проблемы в 2020 версии, а не в первой!

Александр Ривилис, вполне возможно, что так. Я уже два разных проверил. Но в обоих случаях ошибка. И ведь вручную он с их помощью печатает, а программно - нет! Настройки идентичные при печати!

Сейчас попробую с помощью SendKey дожать это засранца.

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #21 : 19-11-2019, 14:51:09 »
В общем, пока нашел только вызов диалогового окна "Print":

Код - C# [Выбрать]
  1. RevitCommandId printCommandId = RevitCommandId.LookupPostableCommandId(PostableCommand.Print);
  2. application.PostCommand(printCommandId);
  3.  

и событие на выполнение печати, т.е., в моем случае, создание .ps-файла:

Код - C# [Выбрать]
  1. private static void Doc_ViewPrinted(object sender, Autodesk.Revit.DB.Events.ViewPrintedEventArgs e)
  2. {
  3.     // здесь можно пост обработку добавить
  4. }
  5.  

Проблема в том, что не могу нажать на "ОК" программно в окне "Print" (Печать). Никто не решал такой задачки?

P.S. Забавно то, что окно "Print" при поиске его с помощью функций Win32 не находится ни среди MainWindow, ни среди Children'ов. Но Spy++ его находит и показывает на Desktop'е.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: PrintSetup InSession
« Ответ #22 : 19-11-2019, 14:54:48 »
Проблема где-то, по-видимому, за пределами показанного Вами кода. В журналах Revit-а не пробовали смотреть? Повторюсь ещё раз, у нас есть вполне рабочая версия пакетной печати в 2020

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #23 : 19-11-2019, 15:14:36 »
Какой принтер вы используете для формирования PS или PDF? Мы - PDF Creator (он же GhostScript).

P.S. И еще раз повторюсь, в 2018 все работало, а в 2020 перестало.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: PrintSetup InSession
« Ответ #24 : 19-11-2019, 15:33:27 »
Проблема в том, что не могу нажать на "ОК" программно в окне "Print" (Печать). Никто не решал такой задачки?
Говорят, что обработка события DialogBoxShowing должна помочь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: PrintSetup InSession
« Ответ #25 : 19-11-2019, 15:34:25 »
Какой принтер вы используете для формирования PS или PDF?

PDF Writer - bioPDF.

Т.е. в 2020 работает с физическим принтером или другим виртуальным, но падает с GhostScript?

P.S.
P.S. И еще раз повторюсь, в 2018 все работало, а в 2020 перестало.

Такое бывает, добро пожаловать в мир разработки ПО :)

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #26 : 20-11-2019, 06:08:25 »
Цитировать
Говорят, что обработка события DialogBoxShowing должна помочь.
Саша, они нагло врут! Не отлавливает этот event событие открытия диалога "Print". Если же тебе разработчики подсказали, то значит в этом направлении у них еще один баг. Хотя, еще один из тыщи их мало заботит.
Этот event отлавливает появление TaskDialog. К "Print" не относится. Проверил. :(

Цитировать
PDF Writer - bioPDF.

Т.е. в 2020 работает с физическим принтером или другим виртуальным, но падает с GhostScript?
Попробую PDF Writer, сообщу.
Я не могу проверить программную печать на всех видах принтеров, на это нет времени. Тем более, что через интерфейс все работает.

Off-Topic: показать
Цитировать
Такое бывает, добро пожаловать в мир разработки ПО
Если б Revit 2020 был второй версией продукта, т.е. первая вышла, скажем, в 2018-ом с номером 2019 (идиотская нумерация), то подобные баги были бы простительны. Вторая версия продукта. Сырой еще. Не все алгоритмы устоялись и протестированы. Ничего страшного - наладят.
Но продукту уже 19 лет! Он выпускается с 2000 года (под шильдиком Autodesk)! И за 19 лет в таком огромном коммерческом продукте, продаваемом миллионами копий не устоялись алгоритмы печати?! Да вы, ять, издеваетесь?! (это обращение к разработчикам)
Это указывает на то, что качество кода в продукте - отстой, идеологически - не продуман, тесты написаны далеко не все, архитектор продукта не знает, что продукт делает, а в команде разработчиков нет обмена информацией. Autodesk за последние лет 10-15 из поставщика качественной CAD системы (я про AutoCAD), превратился в безответственного продавана. Это я вам как бывший поклонник всех продуктов Autodesk говорю.
« Последнее редактирование: 20-11-2019, 09:47:46 от Александр Ривилис »

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #27 : 20-11-2019, 08:27:31 »
PDF Writer и bioPDF денег стоят. :(
Попробовал еще Microsoft Print to PDF - пару раз печатает с помощью SubmitPrint, а потом точно также роняет весь Revit.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: PrintSetup InSession
« Ответ #28 : 20-11-2019, 10:33:50 »
Что в журналах Revit-а? Пробовали отладчик студии аттачить к процессу?

P.S.
Извините, вам запрещён просмотр содержимого спойлеров.

Оффлайн Alxd

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 2
Re: PrintSetup InSession
« Ответ #29 : 20-11-2019, 12:09:59 »
Вы натолкнули меня на мысль, изолировать аддон от других аддонов. Исключил загрузку всех аддонов, оставил только разрабатываемый. Все равно падает.
Зачем аттачить отладчик? Я запускаю Revit прямо из под VS 2019 и отлаживаю приложение в таком режиме.
Лог приложил.