Fusion360 CAM moves to XY position then retracts Z, causing crash in part

; MOVEMENT_CUTTING
G1 X81.9 Y125.387 Z16 F600
G1 Z7.32 F600

Is there a way to get it to reverse these automatically? I hate having to edit the file every time, and eventually i’m going to forget and break a tool or mess up some nice wood.

any ideas?

thanks,
Dave

What post processor (pp) are you using? From the GCode it looks like you are using F360 hobby edition with the Guffy pp. The Guffy pp doesn’t handle this.

The first move is normally a G0 but F360 Hobby forces this to be a cutting G1 move. If it was a Rapid move the post processor woudl first move up to Z16.

Try my new pp as it fixes this.

Yes, using the Fusion personal edition, and the post processor listed on the milling basics page. Thanks for the help, I’ll give it a shot and report back.

Thanks,
Dave

Looks like the same thing.

; MOVEMENT_CUTTING
G1 X81.9 Y125.387 Z16 F600
G1 Z7.32 F600

Enable the mapping of G1 to G0, it is off by default.

Still the same :frowning:

Thanks for your help.

Can you upload the gcode produced. If the first line is still a G1 then something is not configured correctly.

Sure thing…1001.gcode (114.0 KB)

ok now it’s showing G0 Z16 before the XY move. strange. So this is right now?

Yes, it is now correct - though see my other comments below.

The problem was not that your first two lines were reversed, the problem was that the first line was a G1 cut command (F360 hobby forces all G0 Rapid moves to G1 cuts). The result of this was that when it was trying to reach the start of the cut (X81.9 Y125.387 Z16) it was moving horizontally while slowly moving up to Z16. This resulted in your dragging.

By allowing the PP to convert G1s to G0s it looks for the first move of a cut (which is taking it to the starting location) and changes this to a G0 Rapid move. If you had the full F360 this is what it would have been. G0s are implemented in the PP to always move vertically first and then in a second command move horizontally - this safely moves you to Z16 first and then to X81.9 Y125.387 in the second G0 - thereby no longer dragging.

; First G1 → G0
G0 Z16
G0 X81.9 Y125.387 F2500

The G1 Z7.32 F600 in the next line is F360 moving down from the Clearance plane to the plane it uses just before cutting.

You can optimize some of the other G1s by having them also converted to G0s by changing the Safe Z height and enabling the allow vertical flag in the Map section.

Note: you may want to check your 0,0,0 origin in your model. The PP assumes it is at the top of the material. Your first plunge move only goes down to Z1.955 and then starts cutting. This is OK if that is what you mean to do - as long as you set your top of the material not at 0,0,0 in F360. If this is the case then make sure you change SafeZ to ensure it is above your material. The way it is right now the GCode looks like it is cutting in the air but that depends on where your origin is - if it is not at the top though make sure you adjust SafeZ otherwise a cutting G1 could be converted to a Rapid G0. Since we know that your first move was to Z16 if you want to ensure the mapping never happened (other than the first move) then set SafeZ to 17 and it will never trigger a conversion.

; MOVEMENT_PLUNGE
G1 Z4.32 F508
G1 Z1.955
; MOVEMENT_LEAD_IN
G1 X81.896 Z1.884
G1 X81.884 Z1.814
G1 X81.865 Z1.745
G1 X81.837 Z1.679
G1 X81.803 Z1.617
G1 X81.762 Z1.559
G1 X81.714 Z1.506
G1 X81.661 Z1.459
G1 X81.603 Z1.417
G1 X81.541 Z1.383
G1 X81.475 Z1.356
G1 X81.406 Z1.336
G1 X81.336 Z1.324
G1 X81.265 Z1.32
G1 X80.63

You may also want to consider enabling the scaling of the feedrates in the PP. You have G1 cuts (for example in the first Movement_Lad_In that are moving in the X axis and Z axis at the same time. The feedrate will be the last one used which in this first case will be F508. This may be faster than your Z axis can handle (mpcnc can move/cut faster in XY then Z). I can’t tell without doing the math as it depends on the ratio of X’s travel distance vs Z.

Finally, you may want to enable the flag that forces the feedrate to always be output. Marlin doesn’t understand G0 feedrates separately from G1 feedrates and this can lead to issues.

3 Likes

Hey thanks for taking the time to explain this.

2 Likes