Until version 5.5.2.6 the software outputs GCode automatically and internally compensated for all cycles. This means that no tool radius compensation is made by the controller, such as G41/G42.
By internally compensating all the GCode, the GCode output is compatible with more controllers, but several users prefer the use of compensated code on the controller as the code is more easy to change manually and the X and Z values correspond to the exact final part. For this reason on version 5.5.2.6 the user is able to define the most important cycles (inside, outside, facing and grooving) to match what the controller is expecting. The use of G41/G42 is also possible.
Available after version 5.5.2.6 – this feature is experimental and should be used carefully.
Simulation and other options will be affected if using this customer defined cycles
1) How to enable this option
On the machine templates, the cycle definition menu is present:

Step 2) Select the cycle
Among the cycles present, there is a checkbox. If the corresponding checkbox is disabled, the GCode is generated as it was until now, if the check box is enable, the corresponding cycle will be generated accordingly to the syntax defined by the user. As an example, if the user wants to use its own syntax for facing, and considering the following settings:

The software will output, for a complete cycle (a cycle with rough and finish) the upper output and for a finish only the lower one. Lets consider facing on a BUS01 profile, the output will be:

This is not a valid syntax, but placed for exemplification the minimum functionality of the setting
Step 3) Fill the cycle settings with the correct syntax
Many options are present so that a valid syntax can be produced. For the majority of the cycles, the groups Material, Cycle, Axis, Spindle, AuxiliaryFunctions and SafePosition are present. The meaning of each of the available reserved words can be found on the reserved words link.
By using the reserved words, complex syntaxes can be obtained that should be enough to generate all the needed to suit your controller.
Examples
Fanuc cycles implementation
Facing – complete cycle
(******)
({Cycle.Name} G41G42)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G00 G40 X[{Material.Outside}+2] Z2 {AuxiliarFunctions.VacuumONCode}
G72 W{Cycle.ZRough} R1
G72 P{Cycle.IDStart} Q{Cycle.IDEnd} U{Cycle.XFinish} W{Cycle.ZFinish} F{Tool.FeedRough}
N{Cycle.IDStart} G01 Z{Cycle.Geometry.First.Z}
{Cycle.Finish.Path}
G00 Z2
N{Cycle.IDEnd}
[[{Cycle.Skip.Finish}==0 && {Cycle.ZFinish} > 0]:::G40]
[[{Cycle.Skip.Finish}==0 && {Cycle.ZFinish} > 0]:::{Tool.ToolSingleLine}]
[[{Cycle.Skip.Finish}==0 && {Cycle.ZFinish} > 0]:::G96 M04 S{Spindle.SpeedFinish}]
[[{Cycle.Skip.Finish}==0 && {Cycle.ZFinish} > 0]:::G00 G41 X[{Material.Outside}+2] Z2 {AuxiliarFunctions.VacuumONCode}]
[[{Cycle.Skip.Finish}==0 && {Cycle.ZFinish} > 0]:::G70 P{Cycle.IDStart} Q{Cycle.IDEnd} F{Tool.FeedFinish}]
G00 G40 Z2
Facing – finish only
(******)
({Cycle.Name} G41G42 FO)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
G96 M04 S{Spindle.SpeedFinish}]
G00 G40 X[{Material.Outside}+2] Z2 {AuxiliarFunctions.VacuumONCode}
G00 G41 X[{Material.Outside}+2] Z{Cycle.Geometry.First.Z} F{Tool.FeedFinish}
{Cycle.Finish.Path}
G00 G40 Z2
Front groove
(******)
({Cycle.Name} G41G42)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
{Cycle.ExpandedG41G42.Path}
Inside – complete cycle
(******)
({Cycle.Name} G41G42)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G00 G40 X{Material.Inside} Z2 {AuxiliarFunctions.VacuumONCode}
G71 U{Cycle.XRough} R1
G71 P{Cycle.IDStart} Q{Cycle.IDEnd} U-{Cycle.XFinish} W{Cycle.ZFinish} F{Tool.FeedRough}
N{Cycle.IDStart} G00 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z}
{Cycle.Finish.Path}
G00 X{Material.Inside}
G00 Z2
N{Cycle.IDEnd}
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G40]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::{Tool.ToolSingleLine}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G96 M04 S{Spindle.SpeedFinish}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G00 G41 X{Cycle.Geometry.First.X} Z[{Cycle.Geometry.First.Z}+1] {AuxiliarFunctions.VacuumONCode}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G70 P{Cycle.IDStart} Q{Cycle.IDEnd} F{Tool.FeedFinish}]
G00 G40 Z2
{Cycle.Manual.Path}
Inside – finish only
(******)
({Cycle.Name} G41G42 FO)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G00 G40 X[{Material.Inside}-2] Z2 {AuxiliarFunctions.VacuumONCode}
G00 G41 X[{Material.Inside}-2] Z{Cycle.Geometry.First.Z} F{Tool.FeedFinish}
{Cycle.Finish.Path}
G00 X{Material.Inside}
G00 G40 Z2
Outside – complete cycle
(******)
({Cycle.Name} G41G42)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G00 G40 X{Material.Outside} Z2 {AuxiliarFunctions.VacuumONCode}
G71 U{Cycle.XRough} R1
G71 P{Cycle.IDStart} Q{Cycle.IDEnd} U{Cycle.XFinish} W{Cycle.ZFinish} F{Tool.FeedRough}
N{Cycle.IDStart} G00 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z}
{Cycle.Finish.Path}
G00 X{Material.Outside}
G00 Z2
N{Cycle.IDEnd}
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G40]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::{Tool.ToolSingleLine}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G96 M04 S{Spindle.SpeedFinish}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G00 G42 X{Cycle.Geometry.First.X} Z[{Cycle.Geometry.First.Z}+1] {AuxiliarFunctions.VacuumONCode}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G70 P{Cycle.IDStart} Q{Cycle.IDEnd} F{Tool.FeedFinish}]
G00 G40 Z2
{Cycle.Manual.Path}
Outside – finish only
(******)
({Cycle.Name} G41G42 FO)
(******)
G21
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G00 G40 X{Material.Outside} Z2 {AuxiliarFunctions.VacuumONCode}
G00 G42 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z} F{Tool.FeedFinish}
{Cycle.Finish.Path}
G00 X{Material.Outside}
G00 G40 Z2
{Cycle.Manual.Path}
Plain code implementation – generic machines
Facing – complete cycle
( ******* )
({Cycle.Name} G41G42)
( ******* )
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G0 G40 X[{Material.Outside}+2]
Z5
G1 G41 X[{Material.Outside}+2] Z{Cycle.Geometry.First.Z} F{Tool.FeedFinish}
{Cycle.Finish.Path}
G0 G40 Z5
Facing – finish only
( ******* )
({Cycle.Name} G41G42)
( ******* )
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G0 G40 X[{Material.Outside}+2]
Z5
G1 G41 X[{Material.Outside}+2] Z{Cycle.Geometry.First.Z} F{Tool.FeedFinish}
{Cycle.Finish.Path}
G0 G40 Z5
Front groove
(******)
({Cycle.Name} G41G42)
( ******* )
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G95 S{Spindle.SpeedFinish} M4
{AuxiliarFunctions.ChipVacuumONCode}
{Cycle.ExpandedG41G42.Path}
G0 Z5
Inside – complete cycle
( ******* )
({Cycle.Name} G41G42)
( ******* )
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G40
G0 X{Cycle.Rough.First.X} Z5
{Cycle.Rough.Path}
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::(** FINISH **)]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G0 X[{Cycle.Geometry.First.X}] Z[{Cycle.Geometry.First.Z}+2]]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G1 G41 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::{Cycle.Finish.Path}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G0 X[{Cycle.Geometry.Min.X}-2] Z[{Cycle.Geometry.Last.Z}+0.2]]
G0 G40 Z5
{Cycle.Manual.Path}
Inside – finish only
( ******* )
({Cycle.Name} G41G42 FO)
( ******* )
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G0 X[{Cycle.Geometry.First.X}] Z[{Cycle.Geometry.First.Z}+2]
G1 G41 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z}
{Cycle.Finish.Path}
G0 X[{Cycle.Geometry.Min.X}-2] Z[{Cycle.Geometry.Last.Z}+0.2]
G00 G40 Z5
{Cycle.Manual.Path}
Outside – complete cycle
(******)
({Cycle.Name} G41G42)
(******)
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G40
G0 X{Cycle.Rough.First.X} Z5
{Cycle.Rough.Path}
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::(** FINISH **)]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G0 X[{Cycle.Geometry.First.X}] Z[{Cycle.Geometry.First.Z}+2]]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G1 G42 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::{Cycle.Finish.Path}]
[[{Cycle.Skip.Finish}==0 && {Cycle.XFinish} > 0]:::G0 X[{Cycle.Geometry.Max.X}+2] Z[{Cycle.Geometry.Last.Z}+0.2]]
G0 G40 Z5
{Cycle.Manual.Path}
Outside – finish only
(******)
({Cycle.Name} G41G42 FO)
(******)
{Safe.Position}
{Tool.ToolSingleLine}
{Spindle.MaxSpeedExpression}
{Spindle.StartExpression}
G0 X[{Cycle.Geometry.First.X}] Z[{Cycle.Geometry.First.Z}+2]
G1 G42 X{Cycle.Geometry.First.X} Z{Cycle.Geometry.First.Z}
{Cycle.Finish.Path}
G0 X[{Cycle.Geometry.Max.X}+2] Z[{Cycle.Geometry.Last.Z}+0.2]
G00 G40 Z5
{Cycle.Manual.Path}