Список скриптов/макросов для Mach

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение AndyBig »

Ты не мог бы яснее выразить свою мысль? :)
Аватара пользователя
Bistar
Новичок
Сообщения: 19
Зарегистрирован: 13 янв 2017, 05:15
Репутация: 0
Настоящее имя: Vitaly
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение Bistar »

Всем доброго дня!
Возможно ли в Mach3 c помощью скриптов/макросов реализовать функцию сканирования поверхности печатных плат? Есть иногда необходимость в гравировке и сверлении ПП, так из за кривизны стеклотекстолита рез получается разной глубины.
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение AndyBig »

Сканировать с помощью скриптов можно, но вот как потом объединить это с G-кодом гравировки - не представляю.
Но есть специальные программы, которые внедряют сканирование прямо в G-код - Re: Гравировка печатных плат в подробностях #5, Re: Гравировка печатных плат в подробностях #258
МСВ
Новичок
Сообщения: 10
Зарегистрирован: 30 сен 2015, 13:45
Репутация: 0
Настоящее имя: Викторович
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение МСВ »

Доброго времени суток всем знатокам. Прошу помощи. Нужен скрипт или макрос, который я мог бы установить на одну (новую или существующую) кнопки в программе Масн3, нажав на которую станок будет выезжать в определенную точку станочного пространства, т.е. по установленным мной координатам X,Y,Z. Нужно это, например, для частой смены инструмента вручную. По окончании одной программы обработки я нажимаю эту кнопку и станок выезжает в точку смены инструмента самостоятельно. После смены снова замер высоты инструмента и начало работы следующей программы. А не крутить по всем осям поочередно, устанавливая шпиндель в нужную позицию для замены инструмента. Спасибо заранее за рекомендации.
Аватара пользователя
Константин23
Мастер
Сообщения: 483
Зарегистрирован: 06 апр 2015, 16:52
Репутация: 62
Настоящее имя: Константин
Откуда: Krasnodar
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение Константин23 »

МСВ писал(а): станок будет выезжать в определенную точку станочного пространства, т.е. по установленным мной координатам X,Y,Z. Нужно это, например, для частой смены инструмент
Скачай прогу machscreen и посмотрьи вообще как устроен экран и скрипты под кнопками
Можешь свой экран вообще нарисовать или отредактировать имеюшийся
Или,для начала......
В маче нажми Operator ->EditButtom Script
Кнопки моргать начнут
если нажмешь на моргающую откроется окно редактора скрипта этой кнопки
Короче,надо малость разобраться и будешь писать все это сам
Есть много, друг Горацио, такого, что и не снилось нашим мудрецам....
В.Шекспир "Гамлет", д. 1, сц. 5
Аватара пользователя
kurtkobat
Кандидат
Сообщения: 89
Зарегистрирован: 01 мар 2017, 20:52
Репутация: 3
Настоящее имя: Dmitriy
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение kurtkobat »

Вот.. скриптик один переделал на смену инструмента и автоматической настройки коррекции длинны инструмента, с записью информации в TOOL TABLE... В данном скрипте добавлена толщина подложки..
В ближайшем будущем постараюсь заснять как работает, просто для полного понимания моей идеи нужны колечки фиксирующию на фрезе длину вылета из цанги.. когда обзаведусь такими колечками, обязательно сниму видео
___________________________________________________________
Это записываем в редактирование кнопки auto tool zero:
___________________________________________________________
Dim Message, Title, Default, MyValue
Message = "What Tool will measuring?" ' Set prompt.
Title = "Input number of tool" ' Set title.
Default = "0" ' Set default.

' Display dialog box at position 100, 100.
MyValue = InputBox(Message, Title, Default, 100, 100)


Call SetOEMDRO (824,MyValue) 'set number of tool
Tool_Num = GetDRO (24) 'get tool number
If Tool_Num <>0 Then
SetParam ("ZRefPer", 100)
DoButton( 24 )
While IsMoving()
Wend
Call setDRO (2, 0)
SetParam ("ZRefPer", 10)
DoButton (24)
While isMoving ()
Wend
Call SetDRO (2,180)

Rem Probe In the z direction
Code "F1000 G31 Z-10000" '&ZNew
While IsMoving() 'wait for probe move to finish
Wend


ToolLengh = GetDro(2)
Call setOEMDRO(42, ToolLengh) 'set tool offset to tool table
Call SetDRO(2, 0 )

End If
______________________________
ВНИМАНИЕ!!! 1.5 МЕНЯЕМ НА ВАШУ ТОЛЩИНУ ПЛАСТИНЫ ОТ КОТОРОЙ БАЗИРУЕМСЯ
______________________________

PlateOffset=1.5 'толщина платы мм.


If PlateOffset <> 0 Then
Call SetDro (2, PlateOffset) 'записать в окно Z толщину платы, тем самым откорректировав позицию по Z
Code "G4 P0.25" 'пауза для успешной записи значения в DRO
ZNew = PlateOffset + Zup 'вычислени точки подьема

Code "(Z axis is now zero !)" 'послать сообщение в статус

Call SetOEMDRO (824,MyValue) 'set number of tool
Tool_Num = GetDRO (24) 'get tool number
If Tool_Num <>0 Then
SetParam ("ZRefPer", 100)
DoButton( 24 )
While IsMoving()
Wend
Call setDRO (2, 0)
SetParam ("ZRefPer", 10)
DoButton (24)
While isMoving ()
Wend
Call SetDRO (2,180)

Rem Probe In the z direction
Code "F1000 G31 Z-10000" '&ZNew
While IsMoving() 'wait for probe move to finish
Wend


ToolLengh = GetDro(2)
Call setOEMDRO(42, ToolLengh) 'set tool offset to tool table
Call SetDRO(2, 0 )

End If

______________________________
ВНИМАНИЕ!!! 1.5 МЕНЯЕМ НА ВАШУ ТОЛЩИНУ ПЛАСТИНЫ ОТ КОТОРОЙ БАЗИРУЕМСЯ
ДАННЫЕ КОМЕНТАРИИ СТЕРЕТЬ ВМЕСТЕ С ЛИНИЯМИ
______________________________

PlateOffset=1.5 'толщина платы мм.


If PlateOffset <> 0 Then
Call SetDro (2, PlateOffset) 'записать в окно Z толщину платы, тем самым откорректировав позицию по Z
Code "G4 P0.25" 'пауза для успешной записи значения в DRO
ZNew = PlateOffset + Zup 'вычислени точки подьема

Code "(Z axis is now zero !)" 'послать сообщение в статус

Code "Z3"
End If
Code "G91G28Z0"
End If

__________________________________________________________________________________________________________
РАБОТАЕТ только после второго зануления инструмента, причину так и не понял, будьте аккуратнее.
__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

после открываем скрипт m6 start и меняем содержимое на :
__________________________________________________________________________________________________________
OldTool = GetOEMDRO (1224)
x = GetToolChangeStart( 0 ) 'x
y = GetToolChangeStart( 1 ) 'y '
z = GetToolChangeStart( 2 ) 'z '

Code "G91 G30 G00 Z20"
While IsMoving
Wend
tool = GetSelectedTool()
NewTool = tool
Call SetUserDRO (1224, NewTool)
SetCurrentTool( NewTool)
Code "G43 H" & tool

Dim Msg, Style, Ttle, Help, Ctxt, Response, MyString
Msg = "Please insert Tool Number" & " ( " & GetSelectedTool() & " ) " & " " & GetToolDesc(NewTool)
Style = vbYesNo + vbCrtical + vbDefaultButton2
Style = 0 + 48 + 0
Title = "Tool Change Requested"
Help = "DEMO.HLP"
Ctxt = 1000

Response = MsgBox(Msg, Stile, Title, Help, Ctxt)
If Response = vbOk Then 'User choose Ok
MyString = "Ok"
End If
Message "Tool # " & GetCurrentTool() & " " & GetToolDesc(GetCurrentTool()) & " Installed " & " Returning to Tool Cange start position"
Code "G91 G30 G00 X0" & x & "Y0" & y & "Z0" & z
While IsMoving
Wend
End

____________________________________________________________________

СКРИПТ ПРОСТО ШИКАРНЫЙ... ОСОБЕННО С ПОСТПРОЦЕССОРОМ :
gMilling_Haas_3x В SOLIDCAM ....
ВОТ ТУТ ОБЪЯСНЯЮТ КАК НАСТРАИВАТЬ ПОСТПРОЦЕССОР ...
https://www.youtube.com/watch?v=6iJxlkX ... X8&index=1
https://www.youtube.com/watch?v=Hgbnt8c ... X8&index=3
НАСТРАИВАЕМ ПОЗИЦИЮ СМЕНЫ ИНСТРУМЕНТА В МАЧ3 НАСТРОЙКИ/БАЗЫ\ОГРАНИЧЕНИЯ G28X...Y...Z...

___________________________________________________________________
ТЕПЕРЬ МНЕ СОЛИДКАМ ВЫДАЕТ ВОТ ТАКИЕ ШАПКИ:
G00 G28 G91 Z0 \\МАШИННЫЙ НОЛЬ Z
G00 G28 G91 X0 Y0. \\МАШИННЫЙ НОЛЬ X Y
T5 M06() \\ТУТ ОСТАНАВЛИВАЕТСЯ И ПРЕДЛАГАЕТ ВСТАВИТЬ ДАННЫЙ ИНСТРУМЕНТ
S10000 M03 \\ЗАПУСК ШПИНДЕЛЯ
G00 G17 G54 G90 X197.68 Y45.75 \\ВКЛЮЧАЕМ КОРДИНАТЫ НА G54 И ПЕРЕХОДИМ В G90
G43 H5 Z30. \\ПОДЪЕЗЖАЕМ НА ВЫСОТУ С КОРРЕКЦИЕЙ ИНСТРУМЕНТА
:hottabych:
______________________________________________________________________
ВЕСЬМА УДОБНО
:good:
______________________________________________________________________
Последний раз редактировалось kurtkobat 18 авг 2017, 14:47, всего редактировалось 1 раз.
Иногда в мозгах включается G04 Х500, но это нужда что бы сделать правильно
Аватара пользователя
kurtkobat
Кандидат
Сообщения: 89
Зарегистрирован: 01 мар 2017, 20:52
Репутация: 3
Настоящее имя: Dmitriy
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение kurtkobat »

Есть у кого рабочий скрипт на поиск центра???
По какой то причине мач не читает &ZNew,&XNew,&YNew, он их игнорирует
вот пример кода где он игнорирует:


' Ищем край по оси Х в положительную сторону
Code "(НАЧИНАЕМ ЗАМЕР !)"
XCen=GetABSPosition(0)
Code "G4 P1" 'Пауза 1 сек.
CurrentFeed = GetOemDRO(818)
Code "F100"

Code "(ПЕРВЫЙ ЗАМЕР !)"

Code "G31x1000"
While IsMoving()
Wend
XNew=GetABSPosition(0)

XEge = XNew - XCen

XEge2 = XNew - 1

If XEge < 1 Then

XEge2 = XCen
End If

Code "G0 x" &XEge2 'отьехать ОТ КРАЯ ... В данном месте он по идее должен выйхать в центр отверстия, а он наезжает на концевики

While IsMoving ()
Wend

Code "F20"
Code "G31x1000" 'ПОЕХАЛИ
While IsMoving()
Wend
XEND1=GetABSPosition(0)


Code "(ЗАКОНЧИЛИ ЗАМЕР ПО Х !)"
...

Кто шарит, помогите... второй день мучаюсь, не получается
Иногда в мозгах включается G04 Х500, но это нужда что бы сделать правильно
NikolayUa24
Мастер
Сообщения: 1407
Зарегистрирован: 31 июл 2013, 20:05
Репутация: 256
Настоящее имя: Николай
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение NikolayUa24 »

kurtkobat писал(а):Есть у кого рабочий скрипт на поиск центра???
(для просмотра содержимого нажмите на ссылку)
Rem VBScript To center probe inside a pipe

If GetOemLed (825) <> 0 Then 'Check to see if the probe is already grounded or faulty
Code "(Probe plate is grounded, check connection and try again)"
Else
FeedCurrent = GetOemDRO(818) 'Get the current settings
XCurrent = GetDro(0)
YCurrent = GetDro(1)

Code "G4 P1" 'Pause 1 second to give time to position probe plate
Code "F150" 'slow feed rate to 150 mm/min

Rem Probe Left

XNew = Xcurrent - 25 'probe 25 mm to left
Code "G31 X" &XNew
While IsMoving() 'wait for the move to finish
Wend
XPos1 = GetVar(2000) 'get the probe touch location

Code "G0 X" &XCurrent 'rapid move back to start point

Rem Probe Right

XNew = XCurrent + 25 'probe 25 mm to right
Code "G31 X" &XNew
While IsMoving()
Wend
XPos2 = GetVar(2000)

XCenter = (XPos1 + XPos2) / 2 'center is midway between XPos1 and XPos2
Code "G0 X" &XCenter 'rapid move to the x center location

Rem Probe up

YNew = YCurrent + 25
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos1 = GetVar(2001)

Code "G0 Y" &YCurrent

Rem Probe down

YNew = YCurrent - 25
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos2 = GetVar(2001)

YCenter = (YPos1 + YPos2) / 2

Rem move To the center

Code "G0 Y" &YCenter
While IsMoving ()
Wend

Code "F" &FeedCurrent 'restore starting feed rate
End If
Скрипт с темы Скринсет для Mach3, русскоязычный автор michael-yurov
Страдания ведут человека к совершенству.
Аватара пользователя
kurtkobat
Кандидат
Сообщения: 89
Зарегистрирован: 01 мар 2017, 20:52
Репутация: 3
Настоящее имя: Dmitriy
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение kurtkobat »

NikolayUa24 писал(а):
kurtkobat писал(а):Есть у кого рабочий скрипт на поиск центра???
(для просмотра содержимого нажмите на ссылку)
Rem VBScript To center probe inside a pipe

If GetOemLed (825) <> 0 Then 'Check to see if the probe is already grounded or faulty
Code "(Probe plate is grounded, check connection and try again)"
Else
FeedCurrent = GetOemDRO(818) 'Get the current settings
XCurrent = GetDro(0)
YCurrent = GetDro(1)

Code "G4 P1" 'Pause 1 second to give time to position probe plate
Code "F150" 'slow feed rate to 150 mm/min

Rem Probe Left

XNew = Xcurrent - 25 'probe 25 mm to left
Code "G31 X" &XNew
While IsMoving() 'wait for the move to finish
Wend
XPos1 = GetVar(2000) 'get the probe touch location

Code "G0 X" &XCurrent 'rapid move back to start point

Rem Probe Right

XNew = XCurrent + 25 'probe 25 mm to right
Code "G31 X" &XNew
While IsMoving()
Wend
XPos2 = GetVar(2000)

XCenter = (XPos1 + XPos2) / 2 'center is midway between XPos1 and XPos2
Code "G0 X" &XCenter 'rapid move to the x center location

Rem Probe up

YNew = YCurrent + 25
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos1 = GetVar(2001)

Code "G0 Y" &YCurrent

Rem Probe down

YNew = YCurrent - 25
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos2 = GetVar(2001)

YCenter = (YPos1 + YPos2) / 2

Rem move To the center

Code "G0 Y" &YCenter
While IsMoving ()
Wend

Code "F" &FeedCurrent 'restore starting feed rate
End If
Скрипт с темы Скринсет для Mach3, русскоязычный автор michael-yurov
У меня не читает &YNew,&XNew и все что связанно с &... незнаю в чем проблема, но проблема серьезная
Иногда в мозгах включается G04 Х500, но это нужда что бы сделать правильно
NikolayUa24
Мастер
Сообщения: 1407
Зарегистрирован: 31 июл 2013, 20:05
Репутация: 256
Настоящее имя: Николай
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение NikolayUa24 »

kurtkobat писал(а): У меня не читает &YNew,&XNew и все что связанно с &... незнаю в чем проблема, но проблема серьезная
А версия мача какая. У меня R2.63 все отлично, была проблема с скриптом Z-0 поменял скрипт сейчас все работает.
Страдания ведут человека к совершенству.
Аватара пользователя
igorvpetrov
Мастер
Сообщения: 317
Зарегистрирован: 27 май 2015, 13:33
Репутация: 64
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igorvpetrov »

Не используй copy/paste. Похоже, юникод сидит где-то в скрипте.
Возьми и набей весь скрипт руками - скорее всего поможет.
А "&", на который грешишь, это просто символ склеивания строк.
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

привет всем
с макросом автосмены более-менее разобрался, но по нему инструмент берётся сверху,а как написать чтобы инструмент забирался с вилки???
то есть переехал на позицию, опустился далее опять переехал по y (или X) оставил инструмент ну и т.д.
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

Я бы делал все перемещения только в абсолютных координатах станка. Что-нибудь типа этого:

Код: Выделить всё

x_abs = GetOEMDRO(83) 'взять текущую абсолютную координату оси X
code "G53 G1 F50 X" & x_abs + 10 'переехать по X на 10мм со скоростью 50
Поищи документацию по кодам 'Mach3_V3.x_Macro_Prog_Ref' и ещё 'Mach Script Language Reference'
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

т. есть вы предлагаете уже после переезда на позицию замены прописать пару новых действий?
а вот на счёт этого (x_abs + 10) спасибо, подозревал что что-то подобное должно быть, но vb не знаю, а тут всё просто и явно, спасибо
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

да, ещё вопрос в начале макроса есть строка: GetOEMDRO (1200)
я понял окошку с номером инструмента в редакторе экрана надо переназначить вместо system function на Oem code function1200 ?
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

То, что я писал, можно одной строкой, x_abs - это просто переменная:

Код: Выделить всё

code "G53 G1 F50 X" & GetOEMDRO(83) + 10
'и ждать, пока приедет в новую точку оси X:
While IsMoving()
Wend
'...дальше код...
'...опять ждать...
'...и т.д.
OEMDRO коды пользователя могут быть в диапазоне 1000...2254
http://www.machsupport.com/Mach3Wiki/in ... =Main_Page
Окно DRO с кодом 1200 уже есть здесь:
Вложения
Снимок.PNG (12730 просмотров) <a class='original' href='./download/file.php?id=131852&mode=view' target=_blank>Загрузить оригинал (252.97 КБ)</a>
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

OldTool = GetOEMDRO (1200) 'Tool In spindle DRO You must add this to your settings screen
это тогда зачем?
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

Для хранения номера последнего используемого инструмента, т.е. этот инструмент уже в шпинделе. Если шпиндель пустой, без инструмента, тогда в это окно запиши ноль.
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

ну я так и понял, что окну с номером инструмента надо присвоить OEMDRO (1200)
Вложения
Безымянный.jpg (12708 просмотров) <a class='original' href='./download/file.php?id=131860&mode=view' target=_blank>Загрузить оригинал (523.31 КБ)</a>
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

Я бы сделал бы рядом ещё одно окошко, с номером (например 1500) и в скрипте изменил строки с DRO 1200 на 1500.

Код: Выделить всё

OldTool = GetOEMDRO(1200) 'Tool In spindle DRO You must add this to your settings screen
Call SetUserDRO (1200,NewTool)
Ответить

Вернуться в «Windows / Mach»