1
Mach4 General Discussion / M6 tool change, how to update Z axis with new offset
« on: December 28, 2018, 10:17:33 PM »
I am trying to get the following script to work, which is based on the one from here: https://www.youtube.com/watch?v=6-4JkDv9AgM.
I am having some trouble figuring out how to get it to actually update the Z axis DRO using the difference between the current and selected tool length offsets. Can someone please help?
I am having some trouble figuring out how to get it to actually update the Z axis DRO using the difference between the current and selected tool length offsets. Can someone please help?
Code: [Select]
local inst = mc.mcGetInstance()
----------------------------------------------------------------------------------
--change lines here to either auto rapid, or manually jog to a tool change position
----------------------------------------------------------------------------------
--Manual Lines. Uncomment line below to allow you to manually jog to a tool change position.
--local MyChoice = wx.wxMessageBox("Click OK, \nThen Jog to A Safe Tool Change Position,\nInsert New tool,\nThen Click Cycle Start.","Click OK to continue" , 16)
---------------------------------------------------------------------------------
--Auto Lines. Uncomment both lines below (and comment out local MyChoice line above) to automatically move to tool change position.
--Edit to include the machine coordinate values of that tool change position.
--AUTO LINES
mc.mcCntlGcodeExecuteWait(inst, "G90 G53 G0 Z0")--Move Z all the way up.
mc.mcCntlGcodeExecuteWait(inst, "G90 G53 G0 X-16 Y-12")--Move to X, Y Coords for tool change position.
mc.mcCntlSetLastError(inst, 'Now in Tool Change Position. Hit Cycle Start!')
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
local posmode = mc.mcCntlGetPoundVar(inst, mc.SV_MOD_GROUP_3) --get the current mode so we can return to it when macro ends
local selectedtool = mc.mcToolGetSelected(inst)
local currenttool = mc.mcToolGetCurrent(inst)
local currenttoollen = mc.mcToolGetData(inst, mc.MTOOL_MILL_HEIGHT, currenttool)
if selectedtool == currenttool then
mc.mcCntlSetLastError(inst, "Current tool == Selected tool so there is nothing to do")
else
wx.wxMessageBox("1. Change to tool " .. tostring(selectedtool) .. "\n2. Then press Cycle Start to perform auto TLO" )
mc.mcCntlToolChangeManual(inst, true);
mc.mcCntlSetLastError(inst, "Current tool == " .. tostring(selectedtool) .. " Previous Tool == " .. tostring(currenttool))
mc.mcToolSetCurrent(inst, selectedtool)
local MyChoice =
--wx.wxMessageBox("Click Ok to Begin Probing the New Tool","Click OK to continue" , 16)
mc.mcCntlSetLastError(inst, "Probing in Progress!")
mc.mcCntlGcodeExecuteWait(inst, " G90 G53 G0 X-.4 Y-.54")--go to TLO position
mc.mcCntlGcodeExecuteWait(inst, " G91 G1 Z-3 F30")--go down a little to save time.
mc.mcCntlGcodeExecuteWait(inst, " G91 G31 Z-2 F5")--probe the new tool fast
mc.mcCntlGcodeExecuteWait(inst, " G91 G1 Z.125 F30")--pull off the touch pad a little
mc.mcCntlGcodeExecuteWait(inst, " G91 G31 Z-.135 F2")--probe the new tool slow
local probedz =
mc.mcCntlGetPoundVar(inst, mc.SV_PROBE_POS_Z) -- Z Probe position in Machine coords
mc.mcCntlGcodeExecute(inst, string.format('G ' .. posmode))--return to pre macro mode G90, or G91
mc.mcCntlGcodeExecuteWait(inst, "G00 G53 Z0 ")--Retract
local NewOffset = probedz
mc.mcToolSetData(inst, mc.MTOOL_MILL_HEIGHT, selectedtool, NewOffset)
mc.mcCntlSetLastError(inst, string.format("Auto tool setting complete, Offset = %.4f", NewOffset))
wx.wxMessageBox("Toolchange Complete.\nTLO Set")
end
end
if (mc.mcInEditor() == 1) then
m6()
end