------------------------------------------------------------------------------------------------------------ --_/\\\\____________/\\\\_____/\\\\\\\\\___________/\\\\\\\\\__/\\\________/\\\____________/\\\_____________ --_\/\\\\\\________/\\\\\\___/\\\\\\\\\\\\\______/\\\////////__\/\\\_______\/\\\__________/\\\\\____________ --__\/\\\//\\\____/\\\//\\\__/\\\/////////\\\___/\\\/___________\/\\\_______\/\\\________/\\\/\\\___________ --___\/\\\\///\\\/\\\/_\/\\\_\/\\\_______\/\\\__/\\\_____________\/\\\\\\\\\\\\\\\______/\\\/\/\\\__________ --____\/\\\__\///\\\/___\/\\\_\/\\\\\\\\\\\\\\\_\/\\\_____________\/\\\/////////\\\____/\\\/__\/\\\_________ --_____\/\\\____\///_____\/\\\_\/\\\/////////\\\_\//\\\____________\/\\\_______\/\\\__/\\\\\\\\\\\\\\\\_____ --______\/\\\_____________\/\\\_\/\\\_______\/\\\__\///\\\__________\/\\\_______\/\\\_\///////////\\\//_____ --_______\/\\\_____________\/\\\_\/\\\_______\/\\\____\////\\\\\\\\\_\/\\\_______\/\\\___________\/\\\______ --________\///______________\///__\///________\///________\/////////__\///________\///____________\///____V2 --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- -- By ::: NJL Bodini -- -- Mach 4 Build ::: 2214 -- -- Date ::: 2015 FEB 17 -- -- Script Desc ::: WarmUp Spindle Gcode generator -- -- Change Log ::: --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ require("wx") ui = {} inst = mc.mcGetInstance() --functions function writegcode () local gcode = string.format("%%Spindle WarmUp Routine\n%%Written by Spindle WarmUp Wizard\n%%"..(os.date"Gcode created: %d-%b-%Y %I:%M%p\n")) local startrpm = ui.startrpm:GetValue() local finalrpm = ui.finalrpm:GetValue() local rpminc = ui.rpminc:GetValue() local time = ui.time:GetValue() local rangerpm = finalrpm-startrpm -- calc rpm range local rpmsteps = (rangerpm/rpminc)+1 -- calc rpm steps local timeseconds = time*60 -- convert minutes to seconds local timediv = timeseconds/rpmsteps -- calc seconds per rpm step local i = 0 local step = startrpm while i <= rpmsteps do step = i * rpminc + startrpm gcode = gcode .. (string.format("M3 S"..step.."\n")) gcode = gcode .. (string.format ("G4 P %.0f\n",timediv)) i = i+1 end gcode = gcode .. "M5\nM30\n%\n" mc.mcCntlCloseGCodeFile(inst) local file = wx.wxFileDialog(ui.frame, "Select Gcode File", "", "Spindle_WarmUp", "Tap files (*.tap)|*.tap|Text files (*.txt)|*.txt", wx.wxFD_SAVE+wx.wxFD_OVERWRITE_PROMPT,wx.wxDefaultPosition,wx.wxDefaultSize, "File Dialog"); if(file:ShowModal() == wx.wxID_OK)then local path = file:GetPath() io.output(io.open(path,"w")) io.write(gcode) io.close() mc.mcCntlLoadGcodeFile( 0, tostring(path)) end end function closeup () ui.frame:Destroy()--close the window end -- create frame ui.frame = wx.wxFrame (wx.NULL, wx.wxID_ANY, "Spindle WarmUp by Bodini", wx.wxDefaultPosition, wx.wxSize( 500,300 ), wx.wxDEFAULT_FRAME_STYLE+ wx.wxSTAY_ON_TOP+ wx.wxTAB_TRAVERSAL ) ui.frame:SetSizeHints( wx.wxSize( 500,300 ), wx.wxDefaultSize ) ui.bSizer7 = wx.wxBoxSizer( wx.wxVERTICAL ) ui.gSizer19 = wx.wxGridSizer( 1, 1, 0, 0 ) ui.m_staticText21 = wx.wxStaticText( ui.frame, wx.wxID_ANY, "Spindle WarmUp Wizard", wx.wxDefaultPosition, wx.wxDefaultSize, 0+wx.wxRAISED_BORDER ) ui.m_staticText21:Wrap( -1 ) ui.m_staticText21:SetFont( wx.wxFont( 20, 70, 90, 90, False, "" ) ) ui.gSizer19:Add( ui.m_staticText21, 0, wx.wxALIGN_CENTER_HORIZONTAL + wx.wxALIGN_CENTER_VERTICAL + wx.wxALL, 5 ) ui.bSizer7:Add( ui.gSizer19, 1, wx.wxEXPAND + wx.wxALIGN_CENTER_HORIZONTAL, 5 ) ui.bSizer8 = wx.wxBoxSizer( wx.wxVERTICAL ) ui.gSizer17 = wx.wxGridSizer( 4, 2, 0, 0 ) ui.startrpm = wx.wxTextCtrl( ui.frame, wx.wxID_ANY, "3000", wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxTE_RIGHT ) ui.gSizer17:Add( ui.startrpm, 0, wx.wxALIGN_CENTER_VERTICAL + wx.wxALIGN_RIGHT + wx.wxALL, 5 ) ui.m_staticText17 = wx.wxStaticText( ui.frame, wx.wxID_ANY, "Start RPM", wx.wxDefaultPosition, wx.wxDefaultSize, 0 ) ui.m_staticText17:Wrap( -1 ) ui.m_staticText17:SetFont( wx.wxFont( wx.wxNORMAL_FONT:GetPointSize(), 70, 90, 90, False, "" ) ) ui.gSizer17:Add( ui.m_staticText17, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.finalrpm = wx.wxTextCtrl( ui.frame, wx.wxID_ANY, "8000", wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxTE_RIGHT ) ui.gSizer17:Add( ui.finalrpm, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL + wx.wxALIGN_RIGHT, 5 ) ui.m_staticText18 = wx.wxStaticText( ui.frame, wx.wxID_ANY, "Finish RPM", wx.wxDefaultPosition, wx.wxDefaultSize, 0 ) ui.m_staticText18:Wrap( -1 ) ui.gSizer17:Add( ui.m_staticText18, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.rpminc = wx.wxTextCtrl( ui.frame, wx.wxID_ANY, "1000", wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxTE_RIGHT ) ui.gSizer17:Add( ui.rpminc, 0, wx.wxALL + wx.wxALIGN_RIGHT + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.m_staticText19 = wx.wxStaticText( ui.frame, wx.wxID_ANY, "RPM Increments", wx.wxDefaultPosition, wx.wxDefaultSize, 0 ) ui.m_staticText19:Wrap( -1 ) ui.gSizer17:Add( ui.m_staticText19, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.time = wx.wxTextCtrl( ui.frame, wx.wxID_ANY, "5", wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxTE_RIGHT ) ui.gSizer17:Add( ui.time, 0, wx.wxALL + wx.wxALIGN_RIGHT + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.m_staticText20 = wx.wxStaticText( ui.frame, wx.wxID_ANY, "Overall Minutes", wx.wxDefaultPosition, wx.wxDefaultSize, 0 ) ui.m_staticText20:Wrap( -1 ) ui.gSizer17:Add( ui.m_staticText20, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.bSizer8:Add( ui.gSizer17, 0, wx.wxEXPAND, 5 ) ui.bSizer7:Add( ui.bSizer8, 1, wx.wxEXPAND, 5 ) ui.gSizer18 = wx.wxGridSizer( 0, 2, 0, 0 ) ui.but_gcode = wx.wxButton( ui.frame, wx.wxID_ANY, "Make Gcode", wx.wxDefaultPosition, wx.wxDefaultSize, 0 ) ui.gSizer18:Add( ui.but_gcode, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL + wx.wxALIGN_RIGHT, 5 ) ui.but_exit = wx.wxButton( ui.frame, wx.wxID_ANY, "Exit", wx.wxDefaultPosition, wx.wxDefaultSize, 0 ) ui.gSizer18:Add( ui.but_exit, 0, wx.wxALL + wx.wxALIGN_CENTER_VERTICAL, 5 ) ui.bSizer7:Add( ui.gSizer18, 1, wx.wxALIGN_CENTER_HORIZONTAL + wx.wxALIGN_CENTER_VERTICAL + wx.wxEXPAND, 15 ) ui.frame:SetSizer( ui.bSizer7 ) ui.frame:Layout() ui.frame:Centre( wx.wxBOTH ) -- Connect Events ui.but_gcode:Connect( wx.wxEVT_COMMAND_BUTTON_CLICKED, function(event) --implements getgcode() writegcode () end ) ui.but_exit:Connect( wx.wxEVT_COMMAND_BUTTON_CLICKED, function(event) --implements exit closeup () end ) ui.frame:Show(true)