1
Mach4 General Discussion / Re: M6 tool change, how to update Z axis with new offset
« on: January 01, 2019, 05:31:04 PM »
I almost got that one but it's a little too tall for my application.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
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
function m3()
inst = mc.mcGetInstance()
commandrpm = mc.mcSpindleGetCommandRPM(inst)
function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
makitasetting = round((((5/20010)*commandrpm)-1.396),2)
mc.mcCntlSetLastError(inst, 'SpindleClockwise')
mc.mcSpindleSetDirection(inst, 1)
wx.wxMessageBox("Set spindle to " .. tostring(commandrpm) .. " RPM (dial #" .. makitasetting ..")\nThen press Cycle Start to continue" )
mc.mcCntlToolChangeManual(inst, true)
end
if (mc.mcInEditor() == 1) then
m3()
end