Hello
I am totally overwhelmed by programming in mach3, so I did a test in mach 4 and it works . I leave the code here, maybe someone else needs it.
The code is not complete because in my case the code will run depending on the unlocking and locking of the turret, which means other program lines for inputs.
function m6()
local rc = 0;
--local inst = 0; -- mc.mcGetInstance(mInst)
local inst = mc.mcGetInstance()
local selectedTool = mc.mcToolGetSelected(inst)
selectedTool = math.tointeger(selectedTool)
local currentTool = mc.mcToolGetCurrent(inst)
currentTool = math.tointeger(currentTool)
if selectedTool == currentTool then
mc.mcCntlSetLastError(inst, "Current tool == Selected tool so there is nothing to do")
else
mc.mcCntlSetLastError(inst, "Change to tool " .. tostring(selectedTool) .. " and press start to continue") --Message at beginning of tool change
--mc.mcCntlToolChangeManual(inst, true) --This will pause the tool change here and wait for a press of cycle start to continue
mc.mcCntlSetLastError(inst, "Current tool == " .. tostring(selectedTool) .. " Previous Tool == " .. tostring(currentTool)) --Message that shows after Cycle Start
mc.mcToolSetCurrent(inst, selectedTool)
if selectedTool == 1 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 2 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 3 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 4 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 5 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 6 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 7 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
else
if selectedTool == 8 then
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(50)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT2);
mc.mcSignalSetState(hsig, 0);
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
wx.wxMilliSleep(1500)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 1);
wx.wxMilliSleep(100)
hsig, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT3);
mc.mcSignalSetState(hsig, 0);
--Remove this line if you would not like the Z axis to move
--mc.mcCntlGcodeExecute(inst, "G90 G53 G0 Z0.0");--Move the Z axis all the way up
--mc.mcCntlSetLastError(inst, "Change to tool " .. tostring(selectedTool) .. " and press start to continue") --Message at beginning of tool change
--mc.mcCntlToolChangeManual(inst, true) --This will pause the tool change here and wait for a press of cycle start to continue
--mc.mcCntlSetLastError(inst, "Current tool == " .. tostring(selectedTool) .. " Previous Tool == " .. tostring(currentTool)) --Message that shows after Cycle Start
--mc.mcToolSetCurrent(inst, selectedTool)
end
end
end
end
end
end
end
end
end
end
if (mc.mcInEditor() == 1) then
m6()
end
I'm missing something with the script in mach 3 because he doesn't like anything I write. It is clear that I need more help!