401
Mach4 General Discussion / Re: Macro - Pause until input triggered
« on: September 27, 2016, 02:40:49 AM »
Take a look at the api docs for mcSignalWait located in the mach4 docs directory.
DazTheGas
DazTheGas
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.
LowerZ = wx.wxDialog (wx.NULL, wx.wxID_ANY, "Touch Z", wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxCAPTION + wx.wxCLOSE_BOX )
LowerZ:SetSizeHints( wx.wxDefaultSize, wx.wxDefaultSize )
mainSizer = wx.wxBoxSizer( wx.wxVERTICAL )
z_info = wx.wxStaticText( LowerZ, wx.wxID_ANY, " Undefined Tool Lower Z Then Click Continue or Cancel To Stop Probing!", wx.wxDefaultPosition, wx.wxDefaultSize, 0 )
z_info:Wrap( -1 )
mainSizer:Add( z_info, 0, wx.wxALIGN_CENTER_HORIZONTAL + wx.wxTOP + wx.wxBOTTOM + wx.wxRIGHT, 5 )
buttonSizer = wx.wxBoxSizer( wx.wxHORIZONTAL )
z_lower = wx.wxButton( LowerZ, wx.wxID_ANY, "Lower Z", wx.wxDefaultPosition, wx.wxDefaultSize, 0 )
buttonSizer:Add( z_lower, 0, wx.wxALL, 5 )
z_ok = wx.wxButton( LowerZ, wx.wxID_ANY, "Continue", wx.wxDefaultPosition, wx.wxDefaultSize, 0 )
buttonSizer:Add( z_ok, 0, wx.wxALL, 5 )
z_cancel = wx.wxButton( LowerZ, wx.wxID_ANY, "Cancel Probe", wx.wxDefaultPosition, wx.wxDefaultSize, 0 )
buttonSizer:Add( z_cancel, 0, wx.wxALL, 5 )
mainSizer:Add( buttonSizer, 1, wx.wxALIGN_CENTER_HORIZONTAL, 5 )
LowerZ:SetSizer( mainSizer )
LowerZ:Layout()
mainSizer:Fit( LowerZ )
LowerZ:Centre( wx.wxBOTH )
z_lower:Connect( wx.wxEVT_LEFT_DOWN, function(event)
--Lower Z Start
mc.mcSignalSetState (mc.mcSignalGetHandle (inst, mc.ISIG_JOGZN), 1)
event:Skip()
end )
z_lower:Connect( wx.wxEVT_LEFT_UP, function(event)
--Lower Z Stop
mc.mcSignalSetState (mc.mcSignalGetHandle (inst, mc.ISIG_JOGZN), 0)
event:Skip()
end )
z_ok:Connect( wx.wxEVT_LEFT_UP, function(event)
--Continue Probe
LowerZ:EndModal(0)
event:Skip()
end )
z_cancel:Connect( wx.wxEVT_LEFT_UP, function(event)
--Cancel Probe
LowerZ:EndModal(1)
event:Skip()
end )
ZProbe = LowerZ:ShowModal()
if ZProbe == 0 then
wx.wxMessageBox("Continue with Probe")
else
wx.wxMessageBox("Quit Probing")
end
function M6()
local inst = mc.mcGetInstance();
local selectedtool = mc.mcToolGetSelected(inst)
local currenttool = mc.mcToolGetCurrent(inst)
local changetoo = mc.mcToolGetDesc(inst,selectedtool)
local toollen = mc.mcToolGetData(inst, mc.MTOOL_MILL_HEIGHT, selectedtool)
local probestart = (-11.5 + toollen ) -- math here needs to be the -travel distance between collet and touchplate + toollen + probe depth
if selectedtool == currenttool then
mc.mcCntlSetLastError(inst, "ToolChange Activated But Not Required")
else
mc.mcCntlGcodeExecuteWait(inst,"G90 G53 G0 Z0.0") --move z axis all the way up
mc.mcCntlGcodeExecuteWait(inst,"G90 G53 G0 X0.464 Y-99.808") -- Move XY to above fixed touchplate location
wx.wxMessageBox("Please change to tool "..selectedtool.." which is a "..changetoo.."")
if toollen ~= 0 then -- if toollen is defined do this
mc.mcCntlGcodeExecuteWait(inst,"G90 G53 G0 Z"..probestart.."\n G91 G31 Z-.5 F8")
mc.mcAxisSetPos(inst, 2, 0)
mc.mcCntlGcodeExecuteWait(inst,"G90 G53 G0 Z0.0")
mc.mcCntlSetLastError(inst, "ToolChange Finished")
else -- if toollen is not defined do this
wx.wxMessageBox("No tool length currently defined Lower Z to above touch plate, hit enter to start probe")
--need a way to lower Z manually here and have not verified this portion of code--
-- This can be done with a modal dialog I can sort later --
-- Do not run this part until dialog is sorted --
mc.mcCntlGcodeExecuteWait(inst,"G91 G31 Z-.5 F8")
mc.mcAxisSetPos(inst, 2, 0)
mc.mcCntlGcodeExecuteWait(inst,"G90 G53 G0 Z0.0")
mc.mcCntlSetLastError(inst, "ToolChange Finished")
end
end
mc.mcToolSetCurrent(inst, selectedtool)
end
if (mc.mcInEditor() == 1) then
M6()
end