I had little issue cutting out rings - there was no way to control cut order, which needed to be fixed really. Found myself holding the ring down because the outside cut was made first in each case, leaving the piece to move while the inside cut was done.
New branch on the fork of gcodetools here:
Will merge when I’ve implemented this as an option. At the moment it’s turned on in that branch.
You select the paths in order you want them cut, and the gcode will cut in that order. Quite a big missing feature from gcodetools I think considering how complete it is otherwise.
If you’re interested, the way it works is it renames the paths according to select order, then gets gcodetools to sort the path dictionary by path id before generating gcode.