Schöck
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA как прервать цикл по клавише F9

VBA как прервать цикл по клавише F9

Ответ
Поиск в этой теме
Непрочитано 20.12.2019, 14:19 #1
VBA как прервать цикл по клавише F9
gizmo_zx
 
Проектировщик ЭО,ЭМ, ЭОС
 
Нижний Новгород
Регистрация: 18.07.2007
Сообщений: 234

Бодрого дня.
Autocad 2019 x64, windows 8.1 x 64.
Код на VBA
Как прервать цикл FOR ... next по горячей клавише F9

Вот так не прокатило
Autocad не знает OnKey.
Код:
[Выделить все]
For L = 1 To J ' перебираем рамки
            DoEvents
            Application.OnKey "{ESC}", "Stop_plot"
next 

Sub Stop_plot()
MsgBox (" Печать удачно прервана !!! ")
End
End Sub


Код:
[Выделить все]
     For Copy = 1 To copycount
        For L = 1 To J ' перебираем рамки
            
            ' 19.12.19 прерывание печати
            DoEvents
            'Application.OnKey "{ESC}", "Stop_plot"
            
            With LimitsArray(L)
                i_odd = L

'----------
                For K = 1 To o 'Перебираем таблицы
                    TablePos = blk_ramka(K).InsertionPoint
                    If .p1(0) <= TablePos(0) And .p2(0) >= TablePos(0) And _
                        .p1(1) <= TablePos(1) And .p2(1) >= TablePos(1) Then
                    
                                varAtt = blk_ramka(K).GetAttributes
                                'temp_1
                                text_to_out1 = ""
                                text_to_out2 = ""
                                text_to_out3 = ""
                                text_to_out4 = ""
                                text_to_out5 = ""
                                text_to_out6 = ""
                                
                                    For ixx = 0 To UBound(varAtt)
                                    Set oAtt = varAtt(ixx)
                                    name_at = oAtt.TagString

                                    If name_at = "NUM" Then
                                        text_to_out1 = oAtt.TextString
                                    End If
                                    If name_at = "INDX" Then
                                        text_to_out2 = oAtt.TextString
                                    End If
                                    If name_at = "CHIFR" Then
                                        text_to_out3 = oAtt.TextString
                                    End If
                                    If name_at = "NAZ2" Then
                                        text_to_out4 = oAtt.TextString
                                    End If
                                    If name_at = "NAZ3" Then
                                        text_to_out5 = oAtt.TextString
                                    End If
                                    If name_at = "NAZ" Then
                                        text_to_out6 = oAtt.TextString
                                    End If

                                    'Clipboard.SetText "1" & text_to_out1, vbCFRTF
                                    'VBA.clipboard=

    
                    'INDX
                    'CHIFR
                    'NAZ2
                    'NAZ3
                    'NAZ
                                    Next ixx
    
    
    
    
                                Set d_clip = New DataObject
                                put_file0 = ThisDrawing.Path + "\"
                                'put_file = ThisDrawing.Path + "\"
                                put_file = text_to_out3 + " Л" + text_to_out2 + text_to_out1
                                put_file = (Replace(put_file, "/", "_"))
                                put_file = (Replace(put_file, ":", "_"))
                                put_file = (Replace(put_file, "*", "_"))
                                put_file = (Replace(put_file, "?", "_"))
                                put_file = (Replace(put_file, "<", "_"))
                                put_file = (Replace(put_file, ">", "_"))
                                put_file = (Replace(put_file, "|", "_"))
                                put_file = put_file0 + put_file
    
                                '/\:*?«<>|
    
    
                                d_clip.SetText put_file
                                d_clip.PutInClipboard
                                s_send1 = put_file + text_to_out3 + " Л" + text_to_out2 + text_to_out1
                                    
                                
                                
                                
                                
                    
                    End If
                Next K


'----------


                PlotFile .p1, .p2
            End With
        Next
    Next
Просмотров: 794
 
Непрочитано 20.12.2019, 14:58
2 | #2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 7,734


подозреваю, что здесь надо апишную функцию работы с клавиатурой подключать. Название навскидку не помню - когда доберусь до записей, уточню. И почему бы не использовать либо Select Case, либо вообще Collection с ключами = названию тегов атрибутов (в этом случае переменные text_to_outN вообще могут не понадобиться). У вас в коде совпало в первой строке Num, например - но при этом все равно пробегаете еще 5 дорогостоящих (по ресурсам) операций сравнения строк впустую.

----- добавлено через ~39 мин. -----
Пробуйте
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.12.2019, 09:26
#3
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 234
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Все работает.
Еще вопрос как объединить ALT+F9, а то по F9 в ACade включается <Объектное отслеживание вкл>
gizmo_zx вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA как прервать цикл по клавише F9

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 671 03.11.2019 16:26
VBA 2010 медленно работает цикл по сравнению с 2008 sergtranes Программирование 23 04.09.2011 17:37
AutoCAD Automation: как правильно программно прервать Utility.GetPoint (выполняется в другом потоке) IvanShkuropadsky Программирование 2 17.08.2011 11:10
Цикл с неизвестным числом итераций? Tonic Программирование 4 01.04.2009 09:52
Перечень актов за полный цикл СМР Технадзор Разное 2 28.12.2008 23:15