Hi,
I'm running a Laguna IQ Pro w/ an Automatic Tool Changer and 4th axis attachment. The controllor is a RichAuto B58E. I'd like to switch over to Fusion 360 from Aspire, but I've been having issues with post processing my CAM files using the Laguna post processor found in the Fusion 360 Post Library (hsmposts).
I've attached a copy of the post processor I use with Aspire as well as a sample of the gcode that it produced. This post processor works well with my machine and I'd like to translate this over to a Fusion 360 friendly format. Is anyone able to help with this? Is it possible to modify the existing Laguna post to produce the same output?
Thanks,
Jeff
Solved! Go to Solution.
Solved by bob.schultz. Go to Solution.
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.
Can't find what you're looking for? Ask the community or share your knowledge.