powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Слишком быстро выполняется скрипт
9 сообщений из 9, страница 1 из 1
Слишком быстро выполняется скрипт
    #37634417
OSIP_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем есть скрипт, который работает с COM-объектами!
Скрипт отправляет чертеж в AutoCAD, дальше в AutoCAD делаются изменения (программно конечно, не ручками), потом отправляет чертеж на виртуальный принтер PDFCreator!
В общем в чем проблема!
Во время обработки скрипта, передаются параметры для PDFCreator, в определенном порядке в соответствии с отправкой чертежа в AutoCAD!
И как я понял, скрипт отправляет данные слишком быстро на два объекта, и получается, что они работают по отдельности и косячно!
Как сделать так, чтобы чертеж отправился в AutoCAD, затем обработался в PDFCreator, потом следующий в AutoCAD, а потом в PDFCreator ?


вот кусок кода скрипта!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
    Dim plotcmd As String
    Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")   
    pdfjob.cStart "/NoProcessingAtStartup"             
    With pdfjob                                             
    isSpec = True
    .cOption("UseAutosave") = 0
    .cOption("UseAutosaveDirectory") = 0
    .cClearCache                            ' чистка кэша
    .cPrinterStop = True                    ' приостановление печати
    .cOption("PrinterStop") = 1

    For Each lay In ThisDrawing.Layouts
        If lay.TabOrder = 0 Then
            Exit For
        Else
                .cOption("PrinterStop") = 1
                .cOption("UseAutosave") = 1
                .cOption("UseAutosaveDirectory") = 1
                .cOption("AutosaveDirectory") = FDir    ' директория для сохранения файла
                .cOption("AutosaveFilename") = FName    ' имя сохраняемого файла
                .cOption("AutosaveFormat") = 0          ' 0 = PDF
'                .cPrinterStop = True                    ' приостановление печати
            If lay.TabOrder > 0 And (Not VBA.IsNumeric(lay.Name)) Then
                plotcmd = "_-PLOT y " & vbCr & APlotter & vbCr & APaperSize & vbCr & "m l n e f"
                plotcmd = plotcmd & vbCr & "c" & vbCr & "y" & vbCr & APlotStyle & vbCr & "y n n n y "
                ThisDrawing.SendCommand plotcmd
                isSpec = False
                Exit For
            Else
                Dim tLa As AcadLayout
                Set tLa = ThisDrawing.Layouts.item(lay.Name)
                ThisDrawing.ActiveLayout = tLa
                plotcmd = "_-PLOT y " & vbCr & APlotter & vbCr & APaperSize & vbCr & "m l n e f"
                plotcmd = plotcmd & vbCr & "c" & vbCr & "y" & vbCr & APlotStyle & vbCr & "y n n n n y y "
                ThisDrawing.SendCommand plotcmd
                .cCombineAll                            ' склейка нескольких листов в один PDF
            End If
        End If
    Next
        .cOption("PrinterStop") = 0
'        .cCombineAll                            ' склейка нескольких листов в один PDF
        .cPrinterStop = False                   ' возобновление печати
        .cClearCache                           

    End With
    Else:
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634602
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
ThisDrawing.SendCommand plotcmd

Эта команда асинхронная. Задание не успевает попасть на виртуальный принтер до .cCombineAll. Нужно сначала отправить все на печать, подождать или, если есть возможность, сравнить количество заданий на принтере с отправленным количеством, только потом все склеить и разблокировать печать.
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634629
OSIP_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Код: vbnet
1.
ThisDrawing.SendCommand plotcmd

Эта команда асинхронная. Задание не успевает попасть на виртуальный принтер до .cCombineAll. Нужно сначала отправить все на печать, подождать или, если есть возможность, сравнить количество заданий на принтере с отправленным количеством, только потом все склеить и разблокировать печать.

Да, про асинхронность я догадывался!
Сравнивать пробовал, почему то не помогает!
Видимо нужна пауза, но я не знаю как её реализовать!
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634790
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравнивать пробовалКак именно?
Видимо нужна пауза, но я не знаю как её реализовать!Где выполняется скрипт?
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634853
OSIP_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСравнивать пробовалКак именно?
Видимо нужна пауза, но я не знаю как её реализовать!Где выполняется скрипт?


Брал переменную с PDFCreator сравнивал её с количеством листов в чертеже в AutoCAD!
Код предоставить немогу, затер уже :(

Скрипт выполняется в VB 6.3! Расширение скрипта *.dvb
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634883
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это VBA 6.3.
Задержку можно сделать так:
Код: vbnet
1.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



Только лучше разобраться со сравнением количества, раз уж это возможно.
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634924
OSIP_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЭто VBA 6.3.
Задержку можно сделать так:
Код: vbnet
1.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



Только лучше разобраться со сравнением количества, раз уж это возможно.

Спасибо! Попробую допилить код с количеством!
Но пока в спячку буду отправлять =)))
А вызов спячки будет примерно такой:
sleep(1000) ??
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37634955
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
...
Рейтинг: 0 / 0
Слишком быстро выполняется скрипт
    #37638172
OSIP_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставил пару "слипов", вроде нормально стало работать :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Слишком быстро выполняется скрипт
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]