Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Базис-мебельщик. Скрипты (https://промебельклуб.рф/forum/forumdisplay.php?f=273)
-   -   Базис + AutoHotkey (https://промебельклуб.рф/forum/showthread.php?t=16289)

Bystry 02.10.2021 17:36

Базис + AutoHotkey
 
Добрый день.
Предлагаю тут развивать тему скриптов AutoHotkey для базиса

Я ужа давно работаю в мебельщике с помощью PieMeny написанное на AutoHotkey. Ну и пару своих скриптов... Снял пару роликов на эту тему на ютьюбе. Кому интересно оставлю тут ссылочки

[youtube]WAylHVwDQCU[/youtube] и [youtube]C4jlkQUw1Zs[/youtube]

Интересно может кто-то еще использует AutoHotkey в работе? Хотелось бы посмотреть примеры использования.

Официальный сайт | Русскоязычная документация

Я попробовал выложить на гугл диск актуальную версию из второго видео, но гугл диск почему-то считает этот архив зло пакостным поэтому если кому надо пишите в телеграмме(@BNikitaG) поделюсь

sergio1982 03.10.2021 11:14

Тоже пробовал сторонние меню, но в итоге пришёл к своему, в проектной программе надо блокировать ввод мыши, плюс свои опции при выборе каждого пункта, выбрать отпусканием вызывающей кнопки, скрыть не скрыть меню, другое действие при клике правой кнопкой и.т.д. Не так красиво конечно, надо на GDI+ переписывать.

Вы кстати можете отказаться от батников, файл ahk из скрипта Базис можно так запустить:
PHP код:

Path 'D:\\test.ahk'
NewCOMObject('WScript.Shell').run('"' Path '"'); 

https://poster.radikal.ru/2110/b4/3b789debcc46.jpg

Bystry 03.10.2021 18:35

спасибо за подсказку и за видео!! тоже интересный метод)) давно так работаете?
Вот ради этого тема и создавалась! ))

sergio1982 03.10.2021 20:09

Цитата:

Сообщение от Bystry (Сообщение 510906)
давно так работаете?

1.5 года, не профессионально, для себя, работаю сборщиком, "товарищи" не справляются.
Цитата:

Сообщение от Bystry (Сообщение 510906)
Вот ради этого тема и создавалась! ))

Увы, скорее всего этим тема и ограничиться. Во первых дикое слово AutoHotkey тут никто никогда не слышал, во вторых вы сами в нём не особо рубите.
Популяризировать то о чём не просят, такое себе. Так что кроме нас тут никто не появится.

kos100pudov 03.10.2021 22:47

Цитата:

Сообщение от sergio1982 (Сообщение 510909)
Так что кроме нас тут никто не появится.

Ну почему же)))
вот я подглядываю за вами)))

sergio1982 04.10.2021 03:56

kos100pudov
Так вы же вроде как на дельфи пишете.

kos100pudov 04.10.2021 07:26

Цитата:

Сообщение от sergio1982 (Сообщение 510919)
kos100pudov
Так вы же вроде как на дельфи пишете.

Нет, просто дэлфи мне немного знаком и в нем как в любом "конструкторе" легко сделать простой интерфейс для взаимодействия с пользователем с компонентами которых нет в окнах скриптов БМ. К примеру таблицы.

kostiaarh 04.10.2021 13:30

Доброго времени. Тема хорошая и актуальная. Спасибо. Заинтересовало. Пересмотрел видео и понял из всего сказаного и показаного процентов 20). Может, есть желание записать еще одно видео или серию)? Хотелось бы пошагового руководства для чайников. Например: установка Pie Menu, назначение клавиш, подключение иконок, прозрачность и т.д.

STORM 04.10.2021 13:43

Цитата:

Сообщение от kostiaarh (Сообщение 510927)
Доброго времени. Тема хорошая и актуальная. Спасибо. Заинтересовало. Пересмотрел видео и понял из всего сказаного и показаного процентов 20). Может, есть желание записать еще одно видео или серию)? Хотелось бы пошагового руководства для чайников. Например: установка Pie Menu, назначение клавиш, подключение иконок, прозрачность и т.д.

Поддерживаю, тема интересная, хочется увидеть пошаговую инструкцию.

Uncle 04.10.2021 16:03

Цитата:

Сообщение от kostiaarh (Сообщение 510927)
Пересмотрел видео и понял из всего сказаного и показаного процентов 20)

Вот и я это хотел сказать... Мало того что подача не достаточно лаконична (на мой взгляд), так и куча информации, понятной только профессионалам. По этому считаю, что тема - для специалистов в области скриптов. Для тех, кто просто скачивает готовые скрипты и пользуется ими - бесполезна. Хотя наверняка с удовольствием попробовал бы в работе круговое меню...

Oldman 04.10.2021 16:05

Вложений: 1
Да, мне тоже интересно. Пока пользуюсь меню из CAD mouse pro.

Bystry 04.10.2021 16:26

Цитата:

Сообщение от Uncle (Сообщение 510934)
Вот и я это хотел сказать... Мало того что подача не достаточно лаконична (на мой взгляд), так и куча информации, понятной только профессионалам. По этому считаю, что тема - для специалистов в области скриптов. Для тех, кто просто скачивает готовые скрипты и пользуется ими - бесполезна. Хотя наверняка с удовольствием попробовал бы в работе круговое меню...

Хух... Я если честно эти видео писал людям которые меня в чате допытывали что да как )) они уже немного в курсе были...
Вообще для меня очень сложно так всё структурировать....
Позже попробую записать прямо с нуля создание менюхи...
Также под первым видео есть ссылки на канал автора, он там всё подробно рассказывает... да на английском... я его тоже не знаю но переводчик мне помог... тут главное желание ) и да я тогда хоткей первый раз в глаза видел, но както вот разобрался..
А устанавливать там ничего кроме самого хоткея ненадо

Uncle 04.10.2021 16:36

Цитата:

Сообщение от Bystry (Сообщение 510939)
Я если честно эти видео писал людям которые меня в чате допытывали что да как )) они уже немного в курсе были...

Я вообще без претензий. Претензии если предъявлять, то скорее всего самому себе за отсутствие соответствующих познаний что бы с полуслова понимать...
Я выразил лишь свое мнение, которое является (надеюсь) одним из тех, что формирует Ваше понимание отношения к созданной Вами теме

Bystry 04.10.2021 16:42

Цитата:

Сообщение от Uncle (Сообщение 510943)
Я вообще без претензий. Претензии если предъявлять, то скорее всего самому себе за отсутствие соответствующих познаний что бы с полуслова понимать...
Я выразил лишь свое мнение, которое является (надеюсь) одним из тех, что формирует Ваше понимание отношения к созданной Вами теме

так я тоже без претензий )) сам вижу что мои видео сложны для неподготовленного и надо с этим чтото делать... где время на это всё взять...

Добавлено через 3 минуты
Цитата:

Сообщение от Uncle (Сообщение 510943)
Я вообще без претензий. Претензии если предъявлять, то скорее всего самому себе за отсутствие соответствующих познаний что бы с полуслова понимать...
Я выразил лишь свое мнение, которое является (надеюсь) одним из тех, что формирует Ваше понимание отношения к созданной Вами теме

я если надумаю записать инструкцию - реально будет в начало темы добавить видос?

kkoott81 04.10.2021 16:42

Цитата:

Сообщение от Uncle (Сообщение 510934)
Вот и я это хотел сказать... Мало того что подача не достаточно лаконична (на мой взгляд), так и куча информации, понятной только профессионалам. По этому считаю, что тема - для специалистов в области скриптов. Для тех, кто просто скачивает готовые скрипты и пользуется ими - бесполезна. Хотя наверняка с удовольствием попробовал бы в работе круговое меню...

На самом деле код достаточно простой, но для людей кто совсем не в теме, согласен, будет сложновато. Будет повод улучшить свои навыки чтения кода. Если внимательно посмотреть ролики и поэкспериментировать то получается, у меня так и произошло. И там есть файлик с описанием переменных. Никита перевёл большую часть. Конечно на всё нужно время.

Вот видео на ютоб скинул с доступом по ссылке. https://youtu.be/g02w9gX6VFw
PS: Видео уже немного устарело, сейсас ещё лучше сделал)))

Uncle 04.10.2021 16:47

Цитата:

Сообщение от Bystry (Сообщение 510945)
я если надумаю записать инструкцию - реально будет в начало темы добавить видос?

Сами Вы не сможете. Обращайтесь к любому модератору.

sergio1982 04.10.2021 19:15

Много текста будет.

Цитата:

Сообщение от Uncle (Сообщение 510934)
По этому считаю, что тема - для специалистов в области скриптов.

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

Так что это Сизифов труд, по итогу пару человек которые будут распрашивать про AutoHotkey и всё равно ничего не понимать,
ну а если им надо что то понимать - то для этого есть спец форумы.

Ну и Pie-Menu, скажем так продукт тоже для разрабов. Это код который должен запускать другой код (точнее даже просто файлы - об этом дальше),
и он совсем не user-friendly. Я не говорю про то что нет графического интерфейса настроек создания меню. Но настройки в json без поддержки юникода,
перезапуск всей программы при изменении настроек, установка анк, ну и главное что она мало что может кроме как нажать кнопку или запустить файл.
И что за файл надо запустить? Скрипт АНК, ну тогда и настройки можно писать в теле выполняемой программы, и запускать код как часть себя, или хотя бы динамично, а не весь интерпретатор.
И наверное я пропустил, где привязка вызова меню по горячей кнопке к хотя бы активности окна.
Я тут могу ошибаться, и возможно весь этот функционал присутствует, не изучал программу, но я просто не заметил этого в ваших видео.
Главный принцип автоматизации, это экономия кнопок. У меня на мыши есть плюсом 3 кнопки.
Левая рука лежит на ескейп, и максимум что я могу нажать не думая кроме неё, это Ё и F1, если мне надо даже не посмотреть на клавиатуру,
а что то нащупать, не только на клаве, но и на мыши, значит что то не так во всей концепции.

Констатируя - чтобы неокрепшему юзеру понажимать кнопки или запустить файл (в контексте Базиса не ясно что за файл) надо в чём то довольно долго разбираться.
На фоне ломаных HotKeybord и иже с ними, там конечно меню не радиальное, но его выбор понятен.

А дальше, каждому требуются персональные разъяснения что за такие Control Choose и.т.д.

Для автоматизации Базис (так же как любых других программ) для широких масс юзеров, требуется простая установка, и набор готовых востребованных функций именно в её контексте, а также пара нестандартных примеров безграничности возможностей всего анк с использованием winapi, accesible, comobj и.т.д.
Ну и например, Control Choose TComboBox2, это должна быть встроенная функция - из коробки, а не батник + анк, которые будут запускаться полсекунды, и то если жёсткий диск не занят.

Так что перед тем как раскачивать этот маятник, я бы сначала причесал вводные параметры.
[свернуть]

sergio1982 05.10.2021 00:05

Чтобы меня правильно поняли, это ни какие то тычки в автора, это рассуждения на тему в какой форме должно быть изначально, чтобы было понятно многим. А автор, он что, молодец конечно, он выложил как есть.
То был уже 17 пост в теме, и ни одного правильного вопроса типа - "круто всё выглядит, хочу также, вот пробую установить Pie-Menu, у меня такая то проблема, подскажите пожалуйста что не так".

toucaner 05.10.2021 00:36

Цитата:

Сообщение от sergio1982 (Сообщение 510966)
То был уже 17 пост в теме, и ни одного правильного вопроса типа - "круто всё выглядит, хочу также, вот пробую установить Pie-Menu, у меня такая то проблема, подскажите пожалуйста что не так".

Так страшно связываться :) Ты уже нашел как его упростить (без батников), хочется обновленный вариант и какую то внятную инструкцию.

sergio1982 05.10.2021 02:08

Цитата:

Сообщение от toucaner (Сообщение 510967)
Ты уже нашел как его упростить (без батников)

Я немного запутался, батник это из базиса, к Pie-Menu отношение не имеет.

Цитата:

Сообщение от toucaner (Сообщение 510967)
Так страшно связываться

А что там страшного, я сейчас скачал по его ссылке из видео архив, вот прямая ссылка на установщик AutoHotkey, его надо просто кликнуть 2 раза, хотя судя по коду если Autohotkey не установлен, то PieMenus сам предложит скачать, скачает и запустит. Установить надо версию Unicode 32-bit. После кликаете TogglePieMenus.exe - открываете settings.json в блокноте, смотрите что автор дал стартовые настройки для базиса, так что он ещё раз молодец, видим первое меню:
PHP код:

        "pieMenus":[
            {        
            
"hotkey""PgUp""radius"150"thickness":10"labelDelay":5"enable":1"activePie":
                [
                {
                
"numSlices":8"bgColor": [35,35,35,255], "selColor": [37,132,161,255], "offset"1"functions":[
                    { 
"function":"none""params":["blah"], "label":"do nothing""returnMousePos":1"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^5"], "label":"Ctrl+5 (\u041f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\SendEnter.ahk"], "label":"Enter""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^7"], "label":"Ctrl+7 (\u0421\u043a\u0435\u043b\u0435\u0442)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^2"], "label":"Ctrl+2 (\u0412\u0438\u0434\u0020\u0441\u043f\u0435\u0440\u0435\u0434\u0438)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^6"], "label":"Ctrl+6 (\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b\u0020\u0441\u0020\u043b\u0438\u043d\u0438\u044f\u043c\u0438)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^1"], "label":"Ctrl+1 (\u0412\u0438\u0434\u0020\u0441\u043f\u0440\u0430\u0432\u0430)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["+^n"], "label":"n (\u041b\u0438\u043d\u0435\u0439\u043a\u0430)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^3"], "label":"Ctrl+3 (\u0412\u0438\u0434\u0020\u0441\u0432\u0435\u0440\u0445\u0443)""returnMousePos":0"icon":"figurethisoutlater.svg" }
                    ]
                }
                ]                
            } 

запускается через PgUp, нажимаем PgUp, видим меню, смотрим в этот код, и уже после задаём вопросы. Всё это автором рассказано, а на сколько лаконично - это уже как бы не его проблемы. Не вижу тут требуемых навыков программирования, тут нужно только желание разобраться при наличии кучи подсказок.

Bystry
Для поддержки руского языка, надо перекодировать json в UTF-8-BOM.
Чтобы кнопки работали только в Bazis, надо так:

Скрытый текст

PHP код:

{
"global":{
    
"pieTips":0,
    
"adobeScriptsFolder":"C:\\Users\\beaug\\Documents\\Adobe Scripts\\",
    
"functionLaunchMode":0
},
"appProfiles":
    [
        {
        
"name":"Default Profile",
        
"ahkHandle":"ahk_group regApps",
        
"enable":0,
        
"enablePenTablet":0,        
        
"pieModifier":{
            
"useModifierKey":1,
            
"modifierKey":"g",
            
"toggle":0
            
}, 
            
"pieMenus":[ 
            ]
        } ,
        {
        
"name":"Bazis",
        
"ahkHandle":"ahk_exe Bazis_.exe",
        
"enable":1,
        
"enablePenTablet":0,        
        
"pieModifier":{
            
"useModifierKey":0,
            
"modifierKey":"g",
            
"toggle":0
            
},
        
"pieMenus":[
            {        
            
"hotkey""PgUp""radius"150"thickness":10"labelDelay":5"enable":1"activePie":
                [
                {
                
"numSlices":8"bgColor": [35,35,35,255], "selColor": [37,132,161,255], "offset"1"functions":[
                    { 
"function":"none""params":["blah"], "label":"do nothing""returnMousePos":1"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^5"], "label":"Ctrl+5 (вапвапвап)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\SendEnter.ahk"], "label":"Enter""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^7"], "label":"Ctrl+7 (\u0421\u043a\u0435\u043b\u0435\u0442)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^2"], "label":"Ctrl+2 (\u0412\u0438\u0434\u0020\u0441\u043f\u0435\u0440\u0435\u0434\u0438)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^6"], "label":"Ctrl+6 (\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b\u0020\u0441\u0020\u043b\u0438\u043d\u0438\u044f\u043c\u0438)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^1"], "label":"Ctrl+1 (\u0412\u0438\u0434\u0020\u0441\u043f\u0440\u0430\u0432\u0430)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["+^n"], "label":"n (\u041b\u0438\u043d\u0435\u0439\u043a\u0430)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                    { 
"function":"sendKey""params":["^3"], "label":"Ctrl+3 (\u0412\u0438\u0434\u0020\u0441\u0432\u0435\u0440\u0445\u0443)""returnMousePos":0"icon":"figurethisoutlater.svg" }
                    ]
                }
                ]                
            }
            
            
            
            ,
            {        
                
"hotkey""!^t""radius"150"thickness":10"labelDelay":5"enable":1"activePie":
                    [
                    {
                    
"numSlices":8"bgColor": [35,35,35,255], "selColor": [178139181,255], "offset"1"functions":[
                            { 
"function":"none""params":["blah"], "label":"do nothing""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["+^w"], "label":"Ramka Gabait""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["^y"], "label":"Ctrl+Y (\u0428\u0430\u0433\u0020\u0432\u043f\u0435\u0440\u0435\u0434)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\SendDelete.ahk"], "label":"Delete""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["^s"], "label":"Ctrl+S (\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["o"], "label":"X3... 2""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["^z"], "label":"Ctrl+Z (\u0428\u0430\u0433\u0020\u043d\u0430\u0437\u0430\u0434)""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["o"], "label":"X3... 3""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["+^s"], "label":"Shift+Ctrl+S (\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0020\u043a\u0430\u043a)""returnMousePos":0"icon":"figurethisoutlater.svg" }
                        ]
                    }
                    ]                
                }    





                ,
            {        
                
"hotkey""0""radius"150"thickness":10"labelDelay":5"enable":1"activePie":
                    [
                    {
                    
"numSlices":10"bgColor": [35,35,35,255], "selColor": [178139181,255], "offset"1"functions":[
                            { 
"function":"sendKey""params":["0"], "label":"0""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["1"], "label":"1""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["2"], "label":"2""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["3"], "label":"3""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["4"], "label":"4""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["5"], "label":"5""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["6"], "label":"6""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["7"], "label":"7""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["8"], "label":"8""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"sendKey""params":["9"], "label":"9""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\klawa.ahk"], "label":"klawa""returnMousePos":0"icon":"figurethisoutlater.svg" }
                        ]
                    }
                    ]                
                }







                ,
                {        
                    
"hotkey""1""radius"150"thickness":10"labelDelay":5"enable":1"activePie":
                        [
                        {
                        
"numSlices":1"bgColor": [35,35,35,255], "selColor": [178139181,255], "offset"1"functions":[
                                { 
"function":"sendKey""params":["1"], "label":"0""returnMousePos":0"icon":"figurethisoutlater.svg" },
                                { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\klawa.ahk"], "label":"klawa""returnMousePos":0"icon":"figurethisoutlater.svg" }
                            ]
                        }
                        ]                
                    }




                ,
            {        
                
"hotkey""PgDn""radius"150"thickness":10"labelDelay":5"enable":1"activePie":
                    [
                    {
                    
"numSlices":4"bgColor": [35,35,35,255], "selColor": [178139181,255], "offset"1"functions":[
                            { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\SendCtrlShidt+Shift1.ahk"], "label":"v""returnMousePos":0"icon":"figurethisoutlater.svg" },
                            { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\SendCtrlShidt+Shift2.ahk"], "label":"Prostopadla""returnMousePos":0"icon":"figurethisoutlater.svg" },                                                           
                            { 
"function":"sendKey""params":["+^j"], "label":"Razmer""returnMousePos":0"icon":"figurethisoutlater.svg" },                                                            
                            { 
"function":"sendKey""params":["+^n"], "label":"n (\u041b\u0438\u043d\u0435\u0439\u043a\u0430)""returnMousePos":0"icon":"figurethisoutlater.svg" },     
                            { 
"function":"runScript""params":["%A_ScriptDir%\\Local Scripts\\SendCtrlShidt+Shift4.ahk"], "label":"Popolam""returnMousePos":0"icon":"figurethisoutlater.svg" }                                                             
                        ]
                    }
                    ]                
                } 
            ] 
        }
    ]    


[свернуть]
и запустить от админа.

Bystry 05.10.2021 16:01

GUI тут надо написать для редактирования файла json и всё тут... я пока не силён... давно об этом мечтаю.. ща учусть почуть чуть... может когданить напишу...

Добавлено через 8 минут
Цитата:

Сообщение от Uncle (Сообщение 510948)
Сами Вы не сможете. Обращайтесь к любому модератору.

Там в первом посте ссылка на старую верию PieMenu(автор c ней уже 3 года ничего не делал... там и иконки нельзя подключать)
Она из первого(старого) моего видео
Прошу прощения только сейчас заметил...


поправьте пожалйсто на эту

https://github.com/dumbeau/AutoHotPie

Это самая актуальная, про которую я в последнем видео рассказываю
Я на ютубе под видео тоже добавил

kostiaarh 05.10.2021 16:31

Цитата:

Сообщение от Bystry (Сообщение 510976)
поправьте пожалйсто на эту

Спасибо. Вчера в телеграмме общались по поводу не срабатывания в Базисе. Эта сборка помогла.
Вот интересно стало, а есть ли возможность (реально ли) написать скрипт PieMenu для Базиса? Как, например, пишут плагины для Sketchup)
https://www.youtube.com/watch?v=wd4L..._channel=Curic

Bystry 05.10.2021 18:42

Цитата:

Сообщение от kostiaarh (Сообщение 510979)
Как, например, пишут плагины для Sketchup)v=wd4LpZFUYwQ&ab_channel=Curic[/url]

это вполне реально. только надо знать AHK))) там если погуглить люди такие штуки делают что огого
но это уже можно сказать настоящее программирование

sergio1982 05.10.2021 20:13

Я этим раньше не долго пользовался - Radial Menu v4, но не для меня все эти кружочки.
В целом к ней вопросов не было, что то подглючивало вроде, уже не помню, в ней возможностей больше, и вложенные меню 1 уровня есть.

Bystry 06.10.2021 11:47

Цитата:

Сообщение от sergio1982 (Сообщение 510992)
но не для меня все эти кружочки

Да знаю про эту штуку... мне не зашло...

Есть вещичка поинтереснее вот ссылочка
http://radialmenu.weebly.com

долго с ней игрался но так и не пригодилась мне... мне моя радиалка больше подходит именно изза управления жестами.
а тут надо целиться и нажимать на кноки, это долго

https://www.youtube.com/watch?v=bvAtyS2s02E&t=96s

sergio1982 06.10.2021 14:53

Цитата:

Сообщение от Bystry (Сообщение 511008)
надо целиться и нажимать на кноки

Да удобно когда движение в каком то направлении вызывает пункт, у меня для подобного есть опция запретить мышь за пределами меню.


https://www.youtube.com/watch?v=UaJlvlrkpTc

Bystry 06.10.2021 16:37

Цитата:

Сообщение от sergio1982 (Сообщение 511014)
Да удобно когда движение в каком то направлении вызывает пункт, у меня для подобного есть опция запретить мышь за пределами меню.

Поделитесь кодом?

sergio1982 06.10.2021 16:54

Вот. Немного мусора удалил из тестового варианта, много оставил. Хоткеи на 260 строки начинаются.

Bystry 07.10.2021 14:40

Цитата:

Сообщение от sergio1982 (Сообщение 511017)
Вот. Немного мусора удалил из тестового варианта, много оставил. Хоткеи на 260 строки начинаются.

Да уж не слабо=-O... Спасибо.

toucaner 08.10.2021 22:11

А написать какой то простейший интерфейс для выбора иконок, настройки путей и тп какая то сложная и не посильная задача, это возможно ? Сильно упростило бы настройку и изменение этих менюшек.

sergio1982 09.10.2021 12:02

Цитата:

Сообщение от toucaner (Сообщение 511060)
выбора иконок, настройки путей

В Radial Menu v4 это есть, пользуйтесь.
Цитата:

Сообщение от toucaner (Сообщение 511060)
А написать какой то простейший интерфейс для выбора иконок, настройки путей и тп какая то сложная и не посильная задача, это возможно ?

Задача не тривиальная, на это потребуется много времени. В случае моего кода, следующий этап, это улучшение внешнего вида.

Если вам это очень нужно сейчас, то разобраться в этом на примере создания меню из 8 пунктов:

PHP код:

Menu.Option({name:"Keys"fontstyle"Comic Sans MS"MarkerBorder5SubMenuBorder3    
    
BlockMouse2RightClickClose2ClickNoClose1ClipCursor1SelectedEmpty1ReturnMouse2
    
textcolor:"000000"margin22wside:140hside80col3fontsize16})


Menu.Add(  {text:   "AAAAAA`nBBBBBBB`nCCCCCCCC" 
funcFunc("MsgBox").Bind("MsgBox 1", , 0x420000.6
bckgpic:"D:\Images\Icons&Avatar\ICO\1ICONs=\76.ico"
bckgbckgpic:1
picalign:"Right"
fontsize:12                          
picfill0    
align:"Left" })

Menu.Add(  {text:   "AAAAA`nBBBBBB`nCCCCCCC"
bckgpic:"Shell32.dll"
bckgbckgpic:1
icon32
picalign:"Left"
align:"Right" 
fontsize:12
funcFunc("MsgBox").Bind("MsgBox 2", , 0x420000.6) }) 

Menu.Add(  {text:   "3"
bckgpic:"D:\Images\Icons&Avatar\ICO\1ICONs=\76.ico"
bckgbckgpic:
fontsize64        
funcFunc("MsgBox").Bind("MsgBox 3", , 0x420000.6)})

Menu.Add(  {text:   "4" 
bckgpic:"..\pics\colortexture.jpg"
picfill:1
fontsize:36        
textcolor"ffffff"
funcFunc("MsgBox").Bind("MsgBox 4", , 0x420000.6) })   

Menu.Add(  {startarea1})

Menu.Add({text"Панель"bckgcolor:"389AE8"funcFunc("ToolTip").Bind("")    } )

Menu.Add( {text"Menu"bold:1000 fontsize:24 bckgcolor:"FFDE8B"func"SubMenu:Option"    } )

Menu.Add({text"Показать`nлинии"bckgcolor:"f4f4f4"align:"Center"spam:0funcFunc("ToolTip").Bind("")    })

Menu.Add({text""bckgpic"Shell32.dll"bckgcolor"2A211C"bckgbckgpic0icon269HideAction1funcFunc("ToolTip").Bind("")} )

Menu3 := new Menu() 

для вас какая то сложная и не посильная задача, это возможно ?

Добавлено через 17 минут
Вот ссылка на файл с минимальным кодом. Меню запускается по кнопке "1" и "2". Во всём что после "Class Menu 14:47 06.10.2021" разбираться не надо.

sergio1982 14.10.2021 23:01

Освежу тему популяризации АНК, суть сего - "разное по одной кнопке в зависимости от того что под курсором мыши" и только при условии активности окна Базиса.

Видео
[youtube]9ZM1pL7haJU[/youtube]

Тут по кнопке F2, если мышь находится над любой из панелей управления - разворачивает или сворачивает её. Если над редактором скриптов - показывает или скрывает его. Если на модели - выделяет (или отменяет выделение) родительский блок (не как при выключенном "Выделение элементов внутри блоков", а именно родительский). Полноэкранный режим по F12.

skromvit 30.12.2021 11:11

Сдвиг и поворот + F6
 
Полезный скрипт, для тех кто использует F6.
Подхватывает выделенное вызывая окно смещения.

Autohotkey


PHP код:

#singleInstance force
#ifWinActive БАЗИС-Мебельщик 11 ;здесь название и версия БМ

;--Сдвиг и поворот Сместить курсор--
sc2C sc2D:: ; нажатие сочетания кнопок Z X
Send 
^{sc32}{Enter} ; Ctrl+здесь сочетание горячих клавиш в БМ на Сдвиг и поворот
Sleep 10
Send 
{F6} ; F6 здесь горячая клавиша в БМ на Сместить курсор
Return 

[свернуть]


Если перемещение нужно с шагом стрелками

Autohotkey


PHP код:

#singleInstance force
#ifWinActive БАЗИС-Мебельщик 11 ;здесь название и версия БМ

;--Сдвиг и поворот--
sc2C sc2E:: ; нажатие сочетания кнопок Z С
Send 
^{sc32}{Enter} ; Ctrl+здесь сочетание горячих клавиш в БМ на Сдвиг и поворот
Return 

[свернуть]

sergio1982 30.12.2021 12:37

Замена F6
 
https://poster3.radikal.ru/2112/59/25c1059da9eb.jpg

В данном коде окно вызывается по кнопке F1.
Если кнопку направления выбрать правой кнопкой, то перед смещением будет нажатие Enter, это два последних смещения в видео.
Также удобно с резиновой нитью. Такой способ гарантирует то что перед вызовом окна не будет смещения курсора.
Поддерживает ввод выражений с + - / * ()
Проверено только в 8ке.


14:05 30.12.2021
Добавил поддержку второго монитора.
15:19 30.12.2021
Добавил по F2 пример с "Сдвиг и поворот".

Код

Код:


#SingleInstance Force
#Persistent
#NoEnv 

#If WinActive("ahk_class TFormMain ahk_exe Bazis_.exe")
F1:: Bazis_Shift.Go()

; по F2 сначала нажимается "Ctrl+M" Сдвиг и поворот, после при выборе правой кнопкой, будет смещение объектов.
F2:: 
        SendInput {LCtrl Down}{sc32}{LCtrl Up}    ;  LCtrl + "M"  Сдвиг и поворот
        Bazis_Shift.Go({Escape: 1})  ; Escape - после действия будет нажато Escape
        Return
#If



class Bazis_Shift

/*
Singleton - Bazis_Shift 15:14 30.12.2021
https://promebelclub.ru/forum/showthread.php?p=512760#post512760
*/
        Go(com = "") {
                this.hActive := WinExist("A")
                this.MouseMem()
                for k, v in com
                        this[k] := v
                If !this.Start
                {
                        DetectHiddenWindows, On
                        this.BSize := 66
                        this.Start := 1
                        this.Hotkey_Enter := "~RButton Up"
                        this.fOnButtonDown := ObjBindMethod(this, "OnButtonDown")
                        this.fDo := ObjBindMethod(this, "Do")
                        this.fExit := ObjBindMethod(this, "Exit") 
                        this.fEnter := ObjBindMethod(this, "Enter") 
                        Gui, New
                        Gui, -Caption +AlwaysOnTop +hwndhGui
                        this.hGui := hGui
                        Gui, Margin, 0, 0
                        Gui, Color, 409BE0
                        Gui, Font, % "s" this.BSize // 2
                        Gui, Add, Edit, % "Center x0 y0 w" this.BSize * 3 " h" this.BSize " hwndhShift", 100
                        this.hShift := hShift
                        Gui, Add, Button, % "Center x" this.BSize " y+0 w" this.BSize " h" this.BSize " hwndhUp", % Chr(0x21D1) 
                        Gui, Add, Button, Center x0 y+0 wp hp Section hwndhLeft, % Chr(0x21D0)
                        Gui, Add, Button, % "Center x+" this.BSize " yp wp hp hwndhRight", % Chr(0x21D2)
                        Gui, Add, Button, % "Center xs+" this.BSize " y+0 wp hp hwndhDown", % Chr(0x21D3)
                        this.Dir := {hUp+0:"Up", hLeft+0:"Left", hRight+0:"Right", hDown+0:"Down"} 
                        this.GuiControl(this.hGui ": +g", hUp, this.fDo)
                        this.GuiControl(this.hGui ": +g", hLeft, this.fDo) 
                        this.GuiControl(this.hGui ": +g", hRight, this.fDo) 
                        this.GuiControl(this.hGui ": +g", hDown, this.fDo) 
                        Gui, New
                        Gui, % "+hwndhBlockGui +Owner -Caption +AlwaysOnTop +E" WS_EX_NOACTIVATE := 0x08000000
                        this.hBlockGui := hBlockGui
                        Gui, Color, 0xffffff
                        WinSet, TransParent, 1, ahk_id %hBlockGui%
                        WinSet, TransColor, 409BE0, ahk_id %hGui%
                        Gui, % this.hGui ": Show", Hide
                        Gui, % this.hBlockGui ": Show", Hide
                        WinGetPos, WinX, WinY, WinWidth, WinHeight, % "ahk_id" this.hGui
                        this.WinWidth := WinWidth
                        this.WinHeight := WinHeight
                        DetectHiddenWindows, Off
                }               
                this.Hotkey("Esc", this.fExit, "On") 
                this.Hotkey(this.Hotkey_Enter, this.fEnter, "On")
                OnMessage(0x201, this.fOnButtonDown)  ; WM_LBUTTONDOWN
                this.hWin := WinExist("ahk_class TFormMain ahk_exe Bazis_.exe")
                ControlGet, HCB, Hwnd, , TSpTBXComboBox3  ; Это для 8ки
                this.hEdit := this.CB_GetEditControl(HCB)
                ControlGetText, StartStep, , % "ahk_id " this.hEdit
                this.StartStep := StartStep
                WinGetPos, WinX, WinY, WinWidth, WinHeight, % "ahk_id" this.hActive
                Gui, % this.hBlockGui ": Show", x%WinX% y%WinY% w%WinWidth% h%WinHeight%
                Gui, % this.hGui ": Show", % "x" WinX + WinWidth // 2 - this.WinWidth // 2 "y" WinY + WinHeight // 2 - this.WinHeight // 2
                GuiControl, % this.hGui ": Focus", % this.hShift
                ControlSend, ahk_parent, {LCtrl Down}{A}{LCtrl Up}, % "ahk_id" this.hShift
                WinGetPos, CtrlX, CtrlY, CtrlW, CtrlH, % "ahk_id" this.hGui 
                this.MouseMove(CtrlX + CtrlW // 2, CtrlY + CtrlH // 2 + this.BSize // 2, 0)
        }

        Do(Dir) {
                Static doc
                BlockInput, On
                OnMessage(0x201, this.fOnButtonDown, 0)  ; WM_LBUTTONDOWN 
                this.Hotkey("Esc", this.fExit, "Off")
                this.Hotkey(this.Hotkey_Enter, this.fEnter, "Off")
                KeyWait, LButton
                KeyWait, RButton
                GuiControlGet, Shift , % this.hGui ":", % this.hShift
                If (Shift + 0 = "")
                {
                        If !doc
                                doc := ComObjCreate("htmlfile")
                                , doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9'>")
                                , doc.write("<script>with (Math) var math_eval = function (str) {return eval(str);};</script>")
                               
                        try Shift := doc.parentWindow.math_eval(Shift)
                       
                        If (Shift + 0 = "")
                        {
                                this.ToolTip("The expression does not supported", 500)
                                this.MouseMove(this.X_Start, this.Y_Start, 2)
                                this.Exit()
                                Return
                        } 
                        this.ToolTip("math eval = " Shift, 1500)
                }
                this.Bazis_SetStep(Shift, this.hEdit) 
                Dir := this.Dir[Dir]
               
                Gui, % this.hGui ": Show", Hide
                Gui, % this.hBlockGui ": Show", Hide
                ; ControlFocus, TChildControl3D1, % "ahk_id" this.hWin
                ; this.MouseMem(1, 2) 
                this.MouseMove(this.X_Start, this.Y_Start, 2)   
                If this.IsEnter {
                        Send {Enter} 
                        Sleep 300 ; !!!!шаг меньше 6 не работает 
                }
                Send {%Dir%} 
                Sleep 200
                Send {Enter}
                If this.Escape
                {
                        Sleep 155
                        SendInput {sc1}    ;  "Escape"
                }
                this.Bazis_SetStep(this.StartStep, this.hEdit)
                BlockInput, Off
                this.IsEnter := 0
        }
        Enter() {
                MouseGetPos, , , Window, Control, 2
                If Bazis_Shift.Dir[Control]
                        Return this.IsEnter := 1, this.Do(Control)
        }
        Exit() {
                this.IsEnter := 0
                OnMessage(0x201, this.fOnButtonDown, 0)  ; WM_LBUTTONDOWN 
                this.Hotkey("Esc", this.fExit, "Off")
                this.Hotkey(this.Hotkey_Enter, this.fEnter, "Off")
                Gui, % this.hGui ": Show", Hide
                Gui, % this.hBlockGui ": Show", Hide
                BlockInput, Off
        }
        MouseMem(Set = 0, Speed = 0) {
                Static x, y
                S_CoordModeMouse := A_CoordModeMouse
                CoordMode, Mouse, Screen
                If Set
                        this.MouseMove(x, y, Speed)
                Else 
                {
                        MouseGetPos, x, y
                        this.X_Start := x, this.Y_Start := y
                }
                CoordMode, Mouse, %S_CoordModeMouse%
        }
        MouseMove(X, Y, s := 1) { 
                CoordMode, Mouse, Screen
                MouseMove, X, Y, %s%
        }
        OnButtonDown(wParam, lParam, msg, hwnd) {
                If (hwnd != this.hBlockGui)
                        Return
                Gui, % this.hGui ": +AlwaysOnTop"
                GuiControl, % this.hGui ": Focus", % this.hShift
        }
        Bazis_SetStep(step, Hwnd) {
                ControlSetText, , % step + 0, ahk_id %Hwnd%
                ControlFocus, , ahk_id %Hwnd%
                ControlSend, , {Enter}, ahk_id %Hwnd% 
                ; EM_SETMODIFY := 0xB9
                ; SendMessage, EM_SETMODIFY, 1, 0, ahk_id %hEdit%
        }

        CB_GetEditControl(HCB) {
          ; HEDIT: Offset = 40 + A_PtrSize, Type = "UPtr"
          Return this.CB_GetInfo(HCB, CBBI, 40 + A_PtrSize, "UPtr")
        }

        CB_GetInfo(HCB, ByRef CBBI, OffSet := -1, Type := "") {
          ; CB_GETCOMBOBOXINFO = 0x0164
          Static SizeOfCBBI := 40 + (A_PtrSize * 3)
          VarSetCapacity(CBBI, SizeOfCBBI, 0)
          NumPut(SizeOfCBBI, CBBI, 0, "UInt")
          SendMessage, 0x0164, 0, &CBBI, , ahk_id %HCB%
          Return ((ErrorLevel = 0) || (ErrorLevel = "FAIL")) ? False
                          : ((OffSet > 0) && (Type <> "")) ? NumGet(CBBI, Offset, Type)
                          : True
          ; Return DllCall("User32.dll\GetComboBoxInfo", "Ptr", HCB, "Ptr", &CBBI, "UInt") ? True : False
        }
        Hotkey(HK, Label, Option = "") {
                Hotkey, %HK%, %Label%, %Option%
                Return ErrorLevel
        }
        GuiControl(SubCommand, ControlID = "", Value = "") { 
                GuiControl, % SubCommand, % ControlID, % Value
        }
        ToolTip(text = "", time = 500) {
                DllCall("GetCursorPos", "int64P", pt)
                X := pt << 32 >> 32
                Y := pt >> 32
                ToolTip, %text%, X-10, Y-45, 20
                If time !=
                        SetTimer, this_HideToolTip, -%time%
                Return 1

                this_HideToolTip:
                        ToolTip, , , , 20
                        Return
        }
}

[свернуть]

toucaner 01.01.2022 01:36

Последовательность запуска опиши, не рабоатет это. За старания спасибо, копаеш не туда.

sergio1982 01.01.2022 10:46

Цитата:

Сообщение от toucaner (Сообщение 512776)
Последовательность запуска опиши, не рабоатет это. За старания спасибо, копаеш не туда.

Можно это всё на русский язык перевести, а то совсем ничего непонятно.

Enigmaman 16.01.2022 13:13

Всем привет! Кто разбирается в скриптах для ahk? Вопрос: как выбрать пункт в форме TTreeView (дерево файлов)?

sergio1982 16.01.2022 14:23

ControlSend может отправлять нажатия когда TTreeView видим.

Скрытый текст

PHP код:


1
::
    
SetKeyDelay5050
    DetectHiddenWindows
On 
    WinExist
("ahk_class TDropTreeForm ahk_exe Bazis_.exe")
    
ControlSendTTreeView1, {Home}
    
Sleep 100
    ControlSend
TTreeView1, {Down 3
    
ControlSendTTreeView1, {Enter}  
    Return 

На 8ке у меня периодически отказывается реагировать на нажатия, в том числе и с клавиатуры, точнее при первом нажатии сразу переходит в выделенную после нажатия папку.
[свернуть]


Это если у вас все папки на местах останутся.

Иначе изучать Accessible, она может получить имена всех папок, а также узнать их вложенность. Тогда выбор можно будет задать указанием пути.

Enigmaman 16.01.2022 16:26

Спасибо, буду пробовать! И ещё вопрос: можно ли и как организовать переход в папку выбранную ранее?

sergio1982 16.01.2022 16:38

Да, перед тем как выбирать нужный пункт, надо запомнить выбранный.
Он имеет соответствующий State, или с помощью accSelection.

Добавлено через 4 минуты
Вы какими инструментами пользуетесь, для предварительной "разведки" Accessible?


Текущее время: 07:20. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL