Hello Brandon,
It is pretty straight forward to make the changes that you need. For the single G-code on a block, you will need to break out the G17 output from the circular block. You can do this in the onCircular function using the following method.
switch (getCircularPlane()) {
case PLANE_XY:
writeBlock(gPlaneModal.format(17)); // remove from following line and add this line
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx, 0), jOutput.format(cy, 0), getFeed(feed));
break;
case PLANE_ZX:
writeBlock(gPlaneModal.format(18));
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx, 0), kOutput.format(cz, 0), getFeed(feed));
break;
case PLANE_YZ:
writeBlock(gPlaneModal.format(19));
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), jOutput.format(cy, 0), kOutput.format(cz, 0), getFeed(feed));
break;
There are 3 places in the onCircular function that will need to be changed, for full circles, IJK output, and Radius output. If your control supports cutter compensation, then you will also have to modify the onLinear function to break out the G4x code onto its own line.
switch (radiusCompensation) {
case RADIUS_COMPENSATION_LEFT:
dOutput.reset();
writeBlock(gFormat.format(41));
writeBlock(gMotionModal.format(1), x, y, z, dOutput.format(d), f);
break;
case RADIUS_COMPENSATION_RIGHT:
dOutput.reset();
writeBlock(gFormat.format(42));
writeBlock(gMotionModal.format(1), x, y, z, dOutput.format(d), f);
break;
default:
writeBlock(gFormat.format(40));
writeBlock(gMotionModal.format(1), x, y, z, f);
}
For the sequence number limit you can add the following code to the writeBlock and writeOptionalBlock functions.
if (properties.showSequenceNumbers) {
if (sequenceNumber > 9999) { // add this code
sequenceNumber = properties.sequenceNumberStart;
}

Bob Schultz
Sr. Post Processor Developer