MAJOR cam post process error

MAJOR cam post process error

Anonymous
Not applicable
803 Views
3 Replies
Message 1 of 4

MAJOR cam post process error

Anonymous
Not applicable

So i'm trying to cut these triangles in 2x1 aluminum tube on my mill and out of nowhere it decides to go rogue and cut straight through the remaining stock. After looking at the G-code and comparing coordinate values to the simulation in Fusion I noticed that no y coordinate was posted for line 41 where there should have been Y-1.62248. I have copied the body from the model i was using into a different file and re-camed the toolpath and I still get the same result. I have attached the gcode, the .F3D file for part and the post processor that I have been using extensively without issue. I hope this isnt due to a new fusion update as I really need to be able to run my machine without manually editing every gcode file...

 

Edit: I have found a short term solution by changing "Minimum Cutting Radius" from 0 to 0.001.

0 Likes
Accepted solutions (1)
804 Views
3 Replies
Replies (3)
Message 2 of 4

GeorgeRoberts
Autodesk
Autodesk
Accepted solution

Hello,

 

Thanks for posting. Please could you try using the latest DX-32 post from >>HERE<<. With this post processor, the issue doesn't seem to appear.

 

Please test carefully and let us know the results

 

Cheers

-

George Roberts

Manufacturing Product manager
If you'd like to provide feedback and discuss how you would like things to be in the future, Email Me and we can arrange a virtual meeting!
0 Likes
Message 3 of 4

AchimN
Community Manager
Community Manager

@Anonymous the issue is into your post processor. I assume this is a custom post?

The reason why it will not output the required coordinates is that in onLinear the xyz output format gets called twice:

 

  var x = xOutput.format(_x);
  var y = yOutput.format(_y);
  var z = zOutput.format(_z);
  var f = feedOutput.format(feed);

  var xx = xOutput.format(getCurrentPosition().x);
  var yy = yOutput.format(getCurrentPosition().y);

 

Since XYZ output are modal formats, the post will not output the needed Y-coordinate in this example since it did get assigned wrong.

Here is the updated onLinear() function, please replace that into your post:

 

function onLinear(_x, _y, _z, feed) {
  if(properties.decelerationOverride) {
    writeBlock(gNineModal.format(9));
  }
  // at least one axis is required
  if (pendingRadiusCompensation >= 0) {
    // ensure that we end at desired position when compensation is turned off
    xOutput.reset();
    yOutput.reset();
  }
  var x = xOutput.format(_x);
  var y = yOutput.format(_y);
  var z = zOutput.format(_z);
  var f = feedOutput.format(feed);
  
  var xx = getCurrentPosition().x;
  var yy = getCurrentPosition().y;

  if (hasParameter("operation:makeSharpCorners")) {
    var makeSharpCorners = getParameter("operation:makeSharpCorners");
    } else {
    var makeSharpCorners = 0;
    }
    
  if (x || y || z) {
    if (pendingRadiusCompensation >= 0) {
      pendingRadiusCompensation = -1;
      var d = tool.diameterOffset;
      if (d > numberOfToolSlots) {
        warning(localize("The diameter offset exceeds the maximum value."));
      }
      
      switch (radiusCompensation) {
      case RADIUS_COMPENSATION_LEFT:
        writeBlock(gPlaneModal.format(17), gFormat.format(1), xOutput.format(xx), yOutput.format(yy));
        xOutput.reset();
        yOutput.reset();
        if (makeSharpCorners) {
            writeBlock(gCycleModal.format(48));
        } else {
            writeBlock(gCycleModal.format(49));
        }
        writeBlock(gFormat.format(41), xOutput.format(xx), yOutput.format(yy));
        writeBlock(gFormat.format(1), x, y, z, f);
        break;
      case RADIUS_COMPENSATION_RIGHT:
        writeBlock(gPlaneModal.format(17), gFormat.format(1), xOutput.format(xx), yOutput.format(yy));
        xOutput.reset();
        yOutput.reset();
        if (makeSharpCorners) {
            writeBlock(gCycleModal.format(48));
        } else {
            writeBlock(gCycleModal.format(49));
        }
        writeBlock(gFormat.format(42), xOutput.format(xx), yOutput.format(yy));
        writeBlock(gFormat.format(1), x, y, z, f);
        break;
      default:
        writeBlock(gFormat.format(1), x, y, z, f);
        writeBlock(gFormat.format(40));
      }
    } else {
      writeBlock(gMotionModal.format(1), x, y, z, f);
    }
  } else if (f) {
    if (getNextRecord().isMotion()) { // try not to output feed without motion
      feedOutput.reset(); // force feed on next line
    } else {
      writeBlock(gMotionModal.format(1), f);
    }
  }
}

 

In general you should maybe have a look at this post where the issue is fixed as well.

http://cam.autodesk.com/posts?p=bridgeport_dx32

 

 



Achim.N
Principal Technology Consultant
0 Likes
Message 4 of 4

Anonymous
Not applicable

Thanks! Did you make this just for me? I see that it was added just yesterday... I will check it on the machine tonight and let you know how it goes.