|
|
|
|
|
17.01.2022, 11:12
|
#1
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Запуск меню по F1.
Проверено в 8н.
Пути конечно нужно прописать свои.
Ускорил работу, если 90 папок, находит за 1 секунду (на видео папка "ящик" 93я по счёту).
Добавил меню, пример с хоткеями оставил в комментарии.
Для работы в других папках "Скрипты" надо заменить на "Фрагменты", "Фурнитура" (см. массив Compliance).
Кнопка "Назад" не работает, если была смена дерева, например с "Фрагменты" на "Фурнитура".
Файл.
Последний раз редактировалось sergio1982; 17.01.2022 в 12:05.
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
17.01.2022, 12:36
|
#2
|
Новичок
Регистрация: 07.01.2020
Сообщений: 9
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
|
Я вообще чайник в скриптах! Так что разведкой не пользуюсь!
|
|
|
17.01.2022, 13:22
|
#3
|
Местный
Регистрация: 22.12.2008
Сообщений: 266
Сказал(а) спасибо: 55
Поблагодарили 238 раз(а) в 171 сообщениях
Вес репутации: 261
|
Для тех, кто пользуется видами и слоями в чертежах.
Скрипт быстрого перехода по хоткеям по видам.
Пример на 3 вида (Вид1, Вид2, Вид3).
Зажимаем тильду ~ и 1, 2 или 3.
Скрытый текст
PHP код:
#singleInstance force #ifWinActive БАЗИС-Мебельщик
;<!--Переключение Видов-- sc29 & 1:: ; Зажимаем ~ + 1 Control, Choose, 1, TSpTBXComboBox7 return
sc29 & 2:: ; Зажимаем ~ + 2 Control, Choose, 2, TSpTBXComboBox7 return
sc29 & 3:: ; Зажимаем ~ + 3 Control, Choose, 3, TSpTBXComboBox7 return ;--Переключение Видов--!>
[свернуть]
Скрипт быстрого перехода по хоткеям по слоям.
Пример на 3 слоя (Слой1, Слой2, Слой3).
Зажимаем Tab и 1, 2 или 3.
Скрытый текст
PHP код:
#singleInstance force #ifWinActive БАЗИС-Мебельщик
;<!--Переключение Слоев-- scF & 1:: ; Зажимаем Tab + 1 Control, Choose, 1, TSpTBXComboBox6 return
scF & 2:: ; Зажимаем Tab + 2 Control, Choose, 2, TSpTBXComboBox6 return
scF & 3:: ; Зажимаем Tab + 3 Control, Choose, 3, TSpTBXComboBox6 return ;--Переключение Слоев--!>
[свернуть]
|
|
|
17.01.2022, 22:16
|
#4
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Цитата:
Сообщение от skromvit
TSpTBXComboBox6
|
А вы давно это используете?
Просто порядковый номер контрола (у вас это 6 или 7) у меня другой, и от запуска к запуску могут меняться.
|
|
|
17.01.2022, 23:22
|
#5
|
Местный
Регистрация: 22.12.2008
Сообщений: 266
Сказал(а) спасибо: 55
Поблагодарили 238 раз(а) в 171 сообщениях
Вес репутации: 261
|
Цитата:
Сообщение от sergio1982
А вы давно это используете?
Просто порядковый номер контрола (у вас это 6 или 7) у меня другой, и от запуска к запуску могут меняться.
|
Как-то раньше не замечал.
Сейчас протестировал и вот какая штука вырисовывается.
Если запустить БМ (у меня 2021.9.2, на работе 11) и сначала открыть модель, а потом чертеж - то адреса 6 и 7. А если открыть БМ и сначала запустить чертеж - то адреса меняются на 4 и 5. НО, если потом открыть модель, ТО в чертежах все становится на свои места!
Похоже есть какие-то приоритеты раздачи номеров при запуске. Что первым открылось, тому и номерки поменьше.
UPD^
А вот какая штука вырисовывается, при дальнейших исследованиях:
Код HTML:
<!--Слои в чертежах, если открыть до модели:-->
ClassNN: TSpTBXComboBox4 HWND: 0x80312
<!--Виды в чертежах, если открыть до модели:-->
ClassNN: TSpTBXComboBox5 HWND: 0x902d6
<!--Слои в чертежах, если открыть после модели:-->
ClassNN: TSpTBXComboBox6 HWND: 0x80312
<!--Виды в чертежах, если открыть после модели:-->
ClassNN: TSpTBXComboBox7 HWND: 0x902d6
То есть, номера Control'ов меняются, а HWND - остаются прежними.
HWND из Wiki
Чтобы указать контрол через его HWND (window handle, идентификатор окна), оставьте параметр Control пустым и задайте ahk_id %ControlHwnd% как значение параметра WinTitle - это работает также и для скрытых контролов, даже если обнаружение скрытых окон (команда DetectHiddenWindows) не включено. HWND, как правило, узнаётся через команды ControlGet Hwnd, MouseGetPos или DllCall.
[свернуть]
Осталось только разобраться и протестить.
UPD2^
Использование HWND ни к чему не привело, так как с каждым запуском оно другое. Остаются лишь постоянными 6 и 7, или 4 и 5 - в зависимости от того что вперед было запущено.
Последний раз редактировалось skromvit; 18.01.2022 в 00:00.
Причина: Дополнение
|
|
|
18.01.2022, 00:09
|
#6
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Цитата:
Сообщение от skromvit
То есть, номера Control'ов меняются, а HWND - остаются прежними.
|
Просто меняется родительская иерархия.
Цитата:
Сообщение от skromvit
Остаются лишь постоянными 6 и 7, или 4 и 5
|
Это плохое решение, и вы будете периодически сталкиваться с неработоспособностью, например при изменении рабочего стола.
Например, если надо найти нужный TSpTBXComboBox, то можно в начале найти его родителя - TSpTBXToolbar с текстом "Слои", и в нём искать TSpTBXComboBox. Причём если его искать относительно TSpTBXToolbar, а не всего окна, то в нём индекс будет всегда одинаков.
|
|
|
17.01.2022, 19:44
|
#7
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Навигация по файлам
Добавил пример для нескольких типов папок.
Кнопка "Назад" везде работает.
Открывать должно что угодно менее чем за секунду.
Запуск меню по F1.
Проверено в 8н.
Пути конечно нужно прописать свои.
Файл.
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
18.01.2022, 02:06
|
#8
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Вот рабочий пример. Переключает слои циклично.
Тут указан неизменный TSpTBXComboBox2.
На время теста лучше закомментировать это
Код:
If Childs[Saveid] && WinExist("ahk_id " Childs[Saveid]) && DllCall("IsWindowVisible", "Ptr", Childs[Saveid])
Return Childs[Saveid]
так как оно возвращает ранее найденный хэндл.
Станет работать медленнее, но при каждом нажатии будет искать именно TSpTBXComboBox2.
Но в режиме чертения, этот родительский контрол перестраивается, и ComboBox становится 3.
Скрытый текст
PHP код:
#SingleInstance Force #Persistent #NoEnv #UseHook SetBatchLines -1 ListLines Off #KeyHistory 0
#If WinActive("ahk_class TFormMain ahk_exe Bazis_.exe") ^+Up:: Next_Layer(0) ^+Down:: Next_Layer(1) #If
Next_Layer(Next) { hwnd := Control_Child("Next_Layer", "TSpTBXToolbar", "Слои", "TSpTBXComboBox2") SendMessage, 0x147, 0, 0, , ahk_id %hwnd% ; CB_GETCURSEL SelPos := ErrorLevel SelPos := SelPos = 0xffffffff || SelPos < 0 ? 0 : SelPos + 1 SendMessage, 0x146, 0, 0, , ahk_id %hwnd% ; CB_GETCOUNT COUNT := ErrorLevel If Next NewPos := SelPos = COUNT || !SelPos ? 1 : SelPos + 1 Else NewPos := SelPos <= 1 ? COUNT : SelPos - 1 Control, Choose, %NewPos%, , ahk_id %hwnd% }
Control_Child(Saveid, parentclass, parenttext, classNN) { Static Childs := {} If Childs[Saveid] && WinExist("ahk_id " Childs[Saveid]) && DllCall("IsWindowVisible", "Ptr", Childs[Saveid]) Return Childs[Saveid] If !HWND := Control_Find(parentclass, parenttext) Return 0 ControlGet, Child, HWND, , %classNN%, % "ahk_id " HWND If !Child Return 0 Return Childs[Saveid] := Child }
Control_Find(class, text, Win = 0) { Win := "ahk_id" (Win ? Win : WinExist("A")) Loop { ControlGet, HWND, HWND, , %class%%A_Index%, %Win% If !HWND Return 0 If !DllCall("IsWindowVisible", "Ptr", HWND) Continue ControlGetText, GetText, , % "ahk_id " HWND If (GetText != text) Continue Return HWND } Return 0 }
[свернуть]
Последний раз редактировалось sergio1982; 18.01.2022 в 03:11.
|
|
|
19.01.2022, 08:41
|
#9
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Переключение слоёв
Цитата:
Сообщение от sergio1982
Но в режиме чертения, этот родительский контрол перестраивается, и ComboBox становится 3.
|
Неправильно написал, Toolbar и ComboBox в другом режиме это другие контролы, они не перестраиваются, а изначально так создаются.
В общем проверяем режим, и в зависимости от него указываем нужный индекс.
Переключение:
Ctrl+Shift+Up
Ctrl+Shift+Down
Проверено в 8н.
Файл.
Последний раз редактировалось sergio1982; 19.01.2022 в 16:24.
Причина: 123
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
20.01.2022, 12:14
|
#10
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Скрипты Переключение слоёв и Навигация по файлам возможно заработают на новых версиях Базиса.
В начале появилась переменная 8H
Если = 1, то народный, если = 0, остальные.
|
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 01:28. Часовой пояс GMT +3.
|