Окончание процесса печати при ThisDrawing.SetVariable "BACKGROUNDPLOT", 3

Автор Тема: Окончание процесса печати при ThisDrawing.SetVariable "BACKGROUNDPLOT", 3  (Прочитано 2416 раз)

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

Оффлайн ВасилийАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Добрый день, уважаемые коллеги.

Как определить окончание процесса печати при

Код - Visual Basic [Выбрать]
  1. ThisDrawing.SetVariable "BACKGROUNDPLOT", 3 ' фоновая печать

Получается что макрос отработал, а  файл PDF ещё не сформировался.
« Последнее редактирование: 12-04-2018, 13:40:51 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Никак. Для фоновой печати запускается другой экземпляр AutoCAD, который и выполняет печать. Эти экземпляры не связаны и отследить окончание программа не может. Поэтому для программной печати всегда рекомендуется устанавливать BACKGROUNDPLOT в 0: http://adndevblog.typepad.com/autocad/2012/06/backgroundplot-system-variable.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВасилийАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
 Спасибо.
 Чтоб выкрутиться, есть такой вариант.
Код - Visual Basic [Выбрать]
  1. ThisDrawing.Plot.PlotToFile PlotFilePath, Plot_ConfigPlot(0)
  2.  ThisDrawing.SetVariable "BACKGROUNDPLOT", BackPlot
  3.  
  4. Dim Tim1!
  5. Dim stTrCopy%
  6. Bp1300:
  7.     ' извлечём параметры печати из задания ..
  8.              On Error Resume Next
  9.                 Open patfiles For Input As #1
  10.                     Line Input #1, My_Temp01$      ' кол-во экземпляров - ФИКТИВНЫЙ на этот момент
  11.                    
  12.                     If Err Then
  13.                         Err.Clear
  14.                         Tim1! = Timer
  15.                         stTrCopy% = stTrCopy% + 1
  16.                         Label10.Caption = "докопирование " & CStr(stTrCopy%)
  17.                         Frame1.Visible = True
  18.                         Close 1
  19.                            While Tim1! + 5 > Timer: DoEvents: Wend
  20.                         If stTrCopy% > 5 Then
  21.                            MsgBox "Ошибка печати"
  22.                            ' Err.Raise vbObjectError + 513, "Module Pdf_plot", "My custom error."
  23.                        Else
  24.                             GoTo Bp1300
  25.                         End If
  26.                     End If
  27.                Close 1
  28.  

читать и ждать пока не появится этот файл
« Последнее редактирование: 12-04-2018, 14:21:00 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
читать и ждать пока не появится этот файл
Файл может появится, но он еще не будет полностью записан. Так что не всё так просто. Кроме того а если печать идёт не в файл?

Прочитай у меня в подписи как следует форматировать код у нас на форуме и соблюдай это правило.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВасилийАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Правило учту, всё понял.
Задача именно печатать в файл. Если он не полностью записан, то при попытке прочитать будет ошибка.
"Ошибка печати" появится после 5-ти попыток, интервал попытки- каждые 5-ть секунд. Вот тут есть смысл задуматься, где
файл.