Community
Fusion Manufacture
Talk shop with the Fusion (formerly Fusion 360) Manufacture Community. Share tool strategies, tips, get advice and solve problems together with the best minds in the industry.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to modify Manual NC options fusion 360

5 REPLIES 5
Reply
Message 1 of 6
curtis.racher
392 Views, 5 Replies

How to modify Manual NC options fusion 360

How do I modify the Manual NC options fusion 360? FANUC control on a Bridgeport GX300.

 

I have tried editing to this in my PP.

case COMMAND_START_CHIP_TRANSPORT:
    writeBlock(mFormat.format(68));
    return;
  case COMMAND_STOP_CHIP_TRANSPORT:
    writeBlock(mFormat.format(69));
    return;
 
the problem is that M68 is placed at the beginning of all operations instead of where I want it to start. Only want it to run during 1 process, so I don't waste coolant. 
like: 
(2D POCKET2)
N6 T9 M06
N7 T8
N8 S1456 M03
N9 M106
N10 M68
N11 G54
N12 M08
 
The M69 is where I want it.
 
I also attempted manually placing code to check for broken tools.  
case COMMAND_BREAK_CONTROL:
    writeBlock(mFormat.format(802));
    return;
Which resulted in this, at the end.
N4572 Z-0.2525
N4573 G00 Z0.9
N4574 M107
N4575 M802<<<<<<<<
N4576 M69 // Stop chip Transport in the correct spot. 
N4577 M802<<<<<<<<<
 
 
5 REPLIES 5
Message 2 of 6

Hello @curtis.racher 

 

Hello

You can't change where the code is outputted when using Manual NC commands.
But you can change the way your post is reacting.

For example, instead of outputting the code right away like that:
case COMMAND_START_CHIP_TRANSPORT:
writeBlock(mFormat.format(68));
return;

 

You can do differently.
Define a variable in the global section of the post. (outside of a function)
var flagForChipConveyor = false;

then change the code to
case COMMAND_START_CHIP_TRANSPORT:
flagForChipConveyor = true;
return;


Then in a location somewhere is the post, where it suit you, you can add :
if (flagForChipConveyor) {
writeBlock(mFormat.format(68));
}

And to avoid having it on the next toolpath, if it's not defined, you can change the Stop Chip
case COMMAND_STOP_CHIP_TRANSPORT:
writeBlock(mFormat.format(69));
flagForChipConveyor = false;
return;

For the break control, use the same logic, just create a different flag.

 

Regards


______________________________________________________________

If my post answers your question, please click the "Accept Solution" button. This helps everyone find answers more quickly!



Serge.Q
Technical Consultant
cam.autodesk.com
Message 3 of 6

I am unable to get this to work, It will add the M68 to each tool change, but I only want to add it in with the last tool change so it's not running during the whole process just during the final tool. To mitigate the loss of coolant.

Message 4 of 6

Where did you placed the Manual NC command in the operation tree and or NC program?

If you want to act only on the last operation, put the onManual NC for M68 just before the last toolpath.



Serge.Q
Technical Consultant
cam.autodesk.com
Message 5 of 6

This is a screen shot of what's in my tree. and what code it is putting out.

Message 6 of 6

Hello @curtis.racher 

 

Let's explain point by point some aspects of your requests.

 

Tool breakage can be requested from Fusion in two different ways.
You can check the box on the tool definition, in the post processor tab.

sergequiblier_0-1679505086537.png


You can also use a manual NC command, as show in your picture.

sergequiblier_1-1679505110433.png

 

These both actions will be handled in the same way.
This could explain your double output of M802, one coming from the tool, the other requested from the session.

 

The handling of manual NC command is also done in several ways.


1 - Manual NC using the onManualNC function.
You can have inside your post, a function similar to that one :

function onManualNC(command, value) {
  switch (command) {
    case COMMAND_DISPLAY_MESSAGE:
      writeComment("MSG, " + value);
      break;
    default: expandManualNC(command, value); // normal processing of Manual NC command
  }
}

It can handle much more commands, if needed.

 

 2 - Manual NC via onCommand

If the function onManualNC is not in the post, some manual NC commands will be "converted" to call to other functions.
For example, according to the table in the paragraph 5.1 in the post processor training guide:
Tool break control will be passed to the onCommand function same for the Start and Stop Chip command.

 

 

So, outputting the command can be done in one function or the other.

In your current post onManualNC does not exist.
So, I suppose you modified the onCommand function.

 

Definition inside the onSection function, is forcing the start of the chip conveyor, you may need to delete it, in order to output only at end of the program.

    onCommand(COMMAND_START_CHIP_TRANSPORT);  // may need to be removed
    if (forceMultiAxisIndexing || !is3D() || machineConfiguration.isMultiAxisConfiguration()) {
      // writeBlock(mFormat.format(xxx)); // shortest path traverse
    }

 

As i suggested, for the onCommnd function, you can have something similar to that:

var flagForChipConveyor = false;

function onCommand(command) {
  switch (command) {
  case COMMAND_COOLANT_OFF:
    setCoolant(COOLANT_OFF);
    return;
  case COMMAND_COOLANT_ON:
    setCoolant(COOLANT_FLOOD);
    return;
  case COMMAND_STOP:
    writeBlock(mFormat.format(0));
    forceSpindleSpeed = true;
    return;
  case COMMAND_START_SPINDLE:
    onCommand(tool.clockwise ? COMMAND_SPINDLE_CLOCKWISE : COMMAND_SPINDLE_COUNTERCLOCKWISE);
    return;
  case COMMAND_LOCK_MULTI_AXIS:
    return;
  case COMMAND_UNLOCK_MULTI_AXIS:
    return;
  case COMMAND_START_CHIP_TRANSPORT:
    flagForChipConveyor = true;
    return;
  case COMMAND_STOP_CHIP_TRANSPORT:
     writeBlock(mFormat.format(69));
     flagForChipConveyor = false;
    return;
  case COMMAND_BREAK_CONTROL:
    writeBlock(mFormat.format(802));
    return;
  case COMMAND_TOOL_MEASURE:
    return;
  }
  
  var stringId = getCommandStringId(command);
  var mcode = mapCommand[stringId];
  if (mcode != undefined) {
    writeBlock(mFormat.format(mcode));
  } else {
    onUnsupportedCommand(command);
  }
}

 

As apparently, you want the M68 to be output near the G54 in your example, then the output need to be done in the onSection function, using a piece of code like this:

        currentWorkOffset = workOffset;
      }
    }
  }

  if (flagForChipConveyor ) {  // Addition for chip conveyor management
    writeBlock(mFormat.format(68));
  }
     
  forceXYZ();

 

Regards.


______________________________________________________________

If my post answers your question, please click the "Accept Solution" button. This helps everyone find answers more quickly!

 

 



Serge.Q
Technical Consultant
cam.autodesk.com

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report