Hello Jeff,
You can make changes to the post to match your output. I would start with the Richauto post processor, as this is a bit simpler than the Laguna post processor. Here are the changes you should make to match your output.
Modify the following line at the top of the post to set the file extension.
extension = "mmg"; // *.cnc/*.nc/*.tap/.u00/*.plt/*.mmg/*.txt
You can default the sequence numbers to match the Aspire post by modifying the properties.
// user-defined properties
properties = {
writeMachine: true, // write machine
writeTools: true, // writes the tools
useG28: "clearanceHeight", // specifies the desired safe retract option
showSequenceNumbers: true, // show sequence numbers
sequenceNumberStart: 0, // first sequence number
sequenceNumberIncrement: 10, // increment for sequence numbers
separateWordsWithSpace: true // specifies that the words should be separated with a white space
};
To remove the % at the top of the file comment out the following line in onOpen.
// writeln("%");
In the onOpen function you can remove the initialization blocks and set the output units to MM.
// absolute coordinates and feed per min
// writeBlock(gAbsIncModal.format(90), gFeedModeModal.format(94));
// writeBlock(gPlaneModal.format(17));
unit = MM;
switch (unit) {
case IN:
// writeBlock(gUnitModal.format(20));
break;
case MM:
// writeBlock(gUnitModal.format(21));
break;
}
Make the following change to output the spindle speed after the M03 block.
was:
writeBlock(
sOutput.format(spindleSpeed), mFormat.format(tool.clockwise ? 3 : 4)
);
change to:
writeBlock(
mFormat.format(tool.clockwise ? 3 : 4), sOutput.format(spindleSpeed)
);
You will need to comment ALL instances of the G17 and G90 output.
// writeBlock(gPlaneModal.format(17));
// gAbsIncModal.format(90),
In the onCircular function add the following code and change the writeBlock line to output a radius instead of circle center.
was:
} else {
switch (getCircularPlane()) {
case PLANE_XY:
writeBlock(gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), Output.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
break;
change to:
} else {
var r = getCircularRadius();
if (toDeg(getCircularSweep()) > (180 + 1e-9)) {
r = -r; // allow up to <360 deg arcs
}
switch (getCircularPlane()) {
case PLANE_XY:
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), "R" + xyzFormat.format(r), feedOutput.format(feed));
break;
To remove the coolant codes add the return line to the setCoolant function.
function setCoolant(coolant) {
return;
And finally in the onClose function make the following change to output the M05 code at the end of the program.
onImpliedCommand(COMMAND_END);
onCommand(COMMAND_STOP_SPINDLE);
It's possible that not all of these changes are required, but it does make it match your output.

Bob Schultz
Sr. Post Processor Developer