Что нового

Скрипт для облегчения работы в Autocad

Сообщения
17
Репутация
-1
Нужен скрипт который после ввода текстовой команды с клавиатуры для Autocadа автоматически завершался командой ENTER.
Вот параметры моих комманд, максимум три символа,они могут повторяться,содержать еще цифровые и арифметические знаки, регистр не важен, пробел не допустим, если каждую команду придёться забиндить через функцию HotKeySet, то такой скрипт то же имеет право на жизнь.
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
примерно так?
Код:
HotKeySet("q", "Message")

While 1
    Sleep(100)
WEnd
;===


Func Message()
    Send("5{NUMPADADD}12{NUMPADDIV}26{NUMPADMULT}8{NUMPADSUB}3{ENTER}")
EndFunc

результат ввода: 5+12/26*8-3
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
для того чтобы код отображался правильно на форуме его заключают в тег [AUTOIT][/AUTOIT]
Код:
HotKeySet(Здесь пишем букву или сочетание клавиш по которой вызывает, здесь пишем имя функции которую хотим вызвать)

почти на каждое слово в моем примере можно кликнуть и получить справку по выполняющейся операции.
 
Автор
N
Сообщения
17
Репутация
-1
Код:
HotKeySet("5+12/26*8-3", "Message")

While 1
Sleep(100)
WEnd
;===


Func Message()
Send("5{NUMPADADD}12{NUMPADDIV}26{NUMPADMULT}8{NUMPADSUB}3{ENTER}")
EndFunc

Мне надо было скопипастить без форматирования, я повторю вопрос мне надо что то подобное, достаточно 3-х символов и к примеру
можно было бы так
Код:
HotKeySet("5+12/26*8-3", "Message1")

While 1
Sleep(100)
WEnd
;===


Func Message1()
Send("5{NUMPADADD}12{NUMPADDIV}26{NUMPADMULT}8{NUMPADSUB}3{ENTER}")
EndFunc

HotKeySet("5+12/26*8", "Message2")

While 1
Sleep(100)
WEnd
;===


Func Message2()
Send("5{NUMPADADD}12{NUMPADDIV}26{NUMPADMULT}8{ENTER}")
EndFunc
 
Последнее редактирование:

All2khoff

Продвинутый
Сообщения
351
Репутация
65
простите я вас не понимаю, в первую очередь вы должны хотя-бы примерно объяснить что вы ожидаете от скрипта, вы пишете общими словами без конкретики, компьютер так не умеет работать, задача должна быть максимально четкая.
я вам привел довольно простой вариант без учета ваших потребностей которые вы утаили, чтобы подтолкнуть вас к диалогу и вы поделились подробностями.

у вас в голове есть план?

давайте оттолкнемся от него.
на какую кнопку вам будет удобно запускать действия скрипта?
далее какую информацию скрипт должен вводить?
 
Автор
N
Сообщения
17
Репутация
-1
Да бог с вами все я привел и ничего не утаивал, делаю я так, компилирую экзешник и запускаю его, ну вот из вашего скрипта я привожу совсем конкретно
Код:
HotKeySet("1", "Message1")


;===


Func Message1()
Send("1{ENTER}")
EndFunc

HotKeySet("11", "Message11")


;===


Func Message11()
Send("11{ENTER}")
EndFunc
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
Код:
HotKeySet("1", "Message1")
HotKeySet("11", "Message11")

While 1
Sleep(100)
WEnd

Func Message1()
Send("1{ENTER}")
EndFunc

Func Message11()
Send("11{ENTER}")
EndFunc

вот так правильнее будет. хоть и не работоспособно
но опять же вы понимаете что должен делать ваш скрипт?
1 и 11 для вас два разных вызова, но это не так, по факту же цифру 11 вы нажать не можете так как её нет на клавиатуре.
но даже если опустить этот момент то чем по сути 1 отличается от 11? вы нажимаете 1 в ожидании запуска функции Message1()
а нажимая дважды на 1 вы в голове получаете 11, а для скрипта вы дважды вызвали функцию Message1().

давайте еще раз попробуем понять что же вы ждете от скрипта.
вы хотите вводить формулу руками и скрипт просто должен ее подтверждать по окончанию ввода клавишей ENTER(тут вопросы возникают, "а как скрипт узнает что вы закончили ввод? нажатием хоткея?а зачем тогда скрипт?" ведь можно нажать ENTER самому)
или вы хотите чтобы скрипт вводил формулу и по завершению ввода нажимал ENTER?( у вас всегда одна и та-же формула?)
или какой-то третий вариант?
 
Автор
N
Сообщения
17
Репутация
-1
Ну да я понял что оно не роботоспособно, да все правильно я хочу вводить формулу руками и скрипт просто должен ее подтверждать по окончанию ввода клавишей ENTER, ну клавишы 11, я понял из хелпа так
Функция HotKeySet
HotKeySet ( "key" [,"function"] )
где key именно комбинация клавиш а не одна клавиша и можно замутить именно на таком уровне
Функция Send Повторение одиночных нажатий:
Send("{DEL 4}") Нажать клавишу DEL четыре раза
Send("{S 30}") Выслать 30 символов 'S'
Send("+{TAB 4}) Нажать четыре раза комбинацию SHIFT+TAB
Нажатие симулируется не менее одного раза, даже указывается нулевое число повторов.
Удержание клавиши в нажатом состоянии и ее освобождение(используется в играх):
Send("{a down}") ;Нажать клавишу A
Send("{a up}") ;Освободить клавишу A
тоже самое только для HotKeySet
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
итак мы выяснили что формулу вы вводите сами, рассматриваем этот вариант.
тогда вот
Код:
HotKeySet("=", "Message")

While 1
    Sleep(100)
WEnd

Func Message()
    Send("{ENTER}")
EndFunc

по нажатию клавиши "=" будет нажата кнопка ENTER.
оно?
 
Автор
N
Сообщения
17
Репутация
-1
Да нет же, мне надо чтобы текстом отпечатолось = и сработала команда ENTER.
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
вы вводите формулу в форму ввода автокад, далее вы хотите чтобы скрипт завершил ввод формулы нажатием ENTER
каким образом должен скрипт понять что вы закончили ввод формулы?
вы уж простите но может вы таки попробуете еще раз с нуля озвучить что вы хотите? я как сотрудник техподдержки и системный администратор обладаю скилом понимания людей, но ваши объяснения никак не приоткрывают тайну ваших рассуждений.
 
Последнее редактирование:
Автор
N
Сообщения
17
Репутация
-1
Выше вы все правильно сказали, ну во первых у меня будет определенный список формул, ну задержку(SLEEP) ему назначить перед командой ENTER что ли
за который я должен успеть набить формулу.
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
Вам лень перефразировать задачу? но я должен читать ваши мысли? Выше вся наша беседа где я перебирал варианты. я вам несколько раз дал понять что ваше описание задачи неясно.
вы в голове у себя провели диалог пришли к каким-то выводам и выдаете эти выводы, но самого диалога вы не даете.
с нуля пожалуйста попробуйте объяснить, что вы хотите. если вас не понимают вам не могут помочь.
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
замечательно, я задал вопрос сразу за этим сообщением, ответ у вас есть?
 

All2khoff

Продвинутый
Сообщения
351
Репутация
65
ОК до тех пор пока вы не соизволите сказать как вы видите работу программы, я не включусь более в эту беседу.
я искренне желаю помочь, но к сожалению вы сопротивляетесь.
еще раз предложу вам сформируйте задачу с нуля другими словами,
я вам пишу простыню текста разжёвывая ход своих мыслей,в ответ вы отвечаете односложно, тут скорее вы троллите чем я.
обратите внимание что кроме меня никто не проявил интереса к вашей задаче, была бы она прозрачна и ясна вам бы уже ответили.
но нет на все попытки выяснить что же человеку надо, натыкаешься на стену ответов по типу "ну ты чо яж сказал", ждите ответов других участников форума... если они последуют.
 
Автор
N
Сообщения
17
Репутация
-1
Вообщем у меня есть список команд так называемы псевдонимы, вот видео на эту тему
https://www.youtube.com/watch?v=4g_g1R:rofl:Gvc сам список показан на 2:30 , и у меня появилась идея забиндить свой список псевдонимов команд
к примеру через функцию HotKeySet чтобы каждый раз не нажимать ENTER
Сообщение автоматически объединено:

Вот мне надо было всего лишь,правда практическое применение из за глючности в автокаде я применить не смогу.
Код:
HotKeySet("{1}", "func1")

;;;; Body of program would go here ;;;;
While 1

Sleep(100)

WEnd
;;;;;;;;




Func func1()
   Send("{ASC 049}")
   Send("{ENTER}")
EndFunc

Сообщение автоматически объединено:

Вообщем с глюком, я справился так, что понравилось что клавиши в Num Lock клавиатуре не биндяться поэтому можно свободно вводить координаты
Код:
HotKeySet("{1}", "func1")

;;;; Body of program would go here ;;;;
While 1

Sleep(100)

WEnd
;;;;;;;;



Func func1()
   Send("{ENTER}") ; Вызов предыдущей команды
   Send("{ESCAPE}") ; Выход из предыдущей команды
   Send("{ASC 049}")
   Send("{ENTER}")
 
Последнее редактирование:
Верх