Pause temporarily and Pause to Quit

The pause functionality is in need of a makeover. I have found several requests for this feature stretching back to 2016. I was in the middle of a job that had a few more hours to run. It was late and 22:00 was an inconsiderate time for me to be out in the garden shed; making the noise from the vacuum and the mill while cutting a hardwood job. I apologised to my neighbour for the noise prior to beginning and again after my excessively late working. The tin lid on this particular job was that I also needed to use my computer to finish some other work which was unrelated to my CNC use.

My current position was lost after switching off my additionall external electricity consumer unit (it is unsafe to leave everything powered up and connected because of the potential fire hazard) and I will need to start the job again tomorrow at around 14:00 when I have the spare time to finish it. This is an unhelpful imposition on the users and not particularly efficient. As an aged request of at least five years, it could really do with crossing off the list of jobs to be done. People have requested this feature during the last five years and it must cause them to wonder why this non-exotic request has failed to make it into CM.

The functional temporary pause button needs to have an option to offer [pause to quit] as a deliberately selected choice, rather than just pausing temporarily. It would presumably be best on the same screen page. I would envisage that when the pause to quit is activated, it would be trivial to capture the machine position at that stage and permit the user to start from the saved pause to quit position the following day, week, month or whenever. It seems entirely reasonable to ask for this functionality, which is already partially implemented in the current temporary pause feature in use now.

It should not be difficult to capture the actual machine position and recommence from that position. Without looking for a Rolls Royce refinement, it should be possible to take the CNC snapshot, insofar as the machine position and the line of GCode which the machine was halted at when pause to quit was invoked. This would ideally insert a breakpoint into the code and the user could recommence milling from the point at which they selected [pause to quit].

Potentially the choice to quit and start another time could split the code and save it out as a fresh file with an appended file number suggesting that the pause to quit option was chosen.


I like the idea - a lot - but CM doesn’t appear to have the facility to save - and it’s not always run on a Mac or a PC, so I don’t know what effect that would have.

CM could have an option to (re-)start from a specific point (line of code) but the issue here is that, for the right safety reasons, the spindle and the Shapeoko are shut down, so CM loses contact with those devices and an initialisation workflow required when it starts up again.

For this to work (logically, not programmatically), the [pause to quit] would require the spindle to be moved to a safe place (Home?) until CM is restarted and the initialisation process completed (This could be a problem with the apparent need for the BitSetter to do it’s thing during initialisation!).

Once the .nc file is loaded into CM (with the new option to run the code from a specific line) the process will continue but, although the stock X, Y and Z zero points are stored in the machine, two prompts should be provided to the user after selecting the [pause to quit] option, along the lines of:

Q1 - Has the tool been changed?
Yes - Machine runs BitZero workflow then moves to S, and the user is prompted for Q2.
No - The user is prompted for Q2.

P2 - Has the stock moved?
Yes - Zero X, Y and Z to the stock (manually or with the BitZero).
No - Stays at S

Then the normal process continues, with the prompts to set the spindle speed and to Resume, and CM continues to cut from that line, but should retract to maximum height, moves to the appropriate point, then extends the tool to start the cut.

One possible issue: Either the user, or the machine, will need to ‘remember’ which line CM stopped at. I don’t know how GBRL works, but it might be necessary for the machine to restart at a point before the line the process was stopped at, to ensure the location geometry of the cutter blade is in the right place - three dimensionally - before the cut starts.

1 Like

I suppose it depends on whether it is just a dumb terminal for the SO3. It certainly has the ability to know that the process has been paused currently. I have no idea how that it implemented in software but it cannot be impossible to achieve a modicum of useful functionality. For me, the pause as is may as well not be there other than for a temporary measure if one has to attend to something else during the cut.

Leaving the machine attached to a computer and everything switched on makes no sense. The computer has to be running CM and cannot be switched off. The CNC machine has to be running continuously. If you had potentially stopped what you were doing on Friday evening and could not continue for a few days, the system as is makes no sense. In can only ever have been a work-around rather than this is the method one will use.

Good point. I had not thought about it but it is all the more reason the matter needs to be programmed a lot more efficiently than the present offering.

Oh Yes, I had not considered the BitSetter routine. It ought to be possible to side step it in software.
I would like to see some intelligent file handling and the machine would know what dimensions it is milling. It ought to be able to say that the bottom left hand corner of the workpiece was located at say… 40, 75. Additionally, CM should give you the precise position in machine position (and move the spindle to that exact location) so that you could place the bit and the workpiece and know where it will start from.

This is where it should be possible to issue a save with all of the relevant data along with the file.