Download as pdf or txt
Download as pdf or txt
You are on page 1of 436

Go to CGTECH Help Library

VERICUT Macros
Macros - listed alphabetically
The macros which can be referenced via groups in the G-Code Processing window:
Word/Address , and the events in the G-Code Processing window: Events section are
listed below in alphabetical order.

NOTES:
1. Use of the Probe macro requires a CNC Machine Probing license.
2. All of the macros described below can have one, or more, valid input types. The
input types are described below.
Word — A "Word" input is the object that initiates the macro's action.
Words are defined in the Word Format Table.

Text — A "Text" input a text string, for example a variable name. "Text"
inputs come from the NC program file but can be over-ridden by entering a text
string in a macro's Override Text field.

Value — A "Value" input is a numeric value. "Value" inputs come from the NC
program but can be over-ridden by entering a value the macro's Override Value
field.

None — "None" indicates that no input is required for the particular macro.

EXAMPLES:

G-Code Word Text Value Comment


Assuming
X(#1+#2) X (#1+#2) 5
(#1+#2)=5
X"2" X "2" 2

Tip: Use the Debug Macro Arguments feature to see the macro name, the word, the
text string value, and the numeric value for the macro being called.

Shortcut: Click on a letter below to go directly to the macros that start with that letter.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
3dToolOffset
Function — CUTTER COMPENSATION
Status — RENAMED
Comment — Renamed to: Tool3dOffset

3dToolXOffset
3dToolYOffset
3dToolZOffset
Function — CUTTER COMPENSATION
Status — RENAMED
Comment — Renamed to: Tool3dXOffset, Tool3dYOffset, Tool3dZOffset

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A2AxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to AAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: AAxisIncreMotion, B2AxisIncreMotion, BAxisIncreMotion,
C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

A2AxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to AAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: AAxisMachineMotion, B2AxisMachineMotion, BAxisMachineMotion,
C2AxisMachineMotion, CAxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion
A2AxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its A2AxisMachineMotion counterpart, except it also adds in the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: AAxisMachineRefMotion, B2AxisMachineRefMotion,
BAxisMachineRefMotion, C2AxisMachineRefMotion, CAxisMachineRefMotion,
UAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

A2AxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the A2 value used to command the machine's A2 rotary component. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion, CAxisMotion,
UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

AAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to AAxisMotion except it ignores the Absolute / Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, B2AxisIncreMotion, BAxisIncreMotion,
C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion
AAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to AAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, B2AxisMachineMotion, BAxisMachineMotion,
C2AxisMachineMotion, CAxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

AAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its AAxisMachineMotion counterpart, except it also adds the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, B2AxisMachineRefMotion,
BAxisMachineRefMotion, C2AxisMachineRefMotion, CAxisMachineRefMotion,
UAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

AAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the A value used to command the machine's A rotary component. A macro exists for
each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion, CAxisMotion,
UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion
AbBlockInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Initializes Allen-Bradley specific variables. This macro should be called along with the
standard BlockInit macro at the "Start of Block Processing" event.

ABCPos
Function — MOTION
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text, Value
Sets the A, B, or C angle values used to define the tool axis vector using RPY angles. The
A, B and C values (for example, A0 B20 C0) are used to calculate the tool vector for the
next tool position. This method can be used instead of direct IVector, JVector and
KVector macros defining components of the tool vector and is specific for the KUKA
robots. The tool axis vector can be transformed to user specified coordinate system. By
default, this macro detects the A,B or C based on the Word.
Using an Override Text value of "A,B,C" enables you to indicate that format A:0 B:20
C:0 should be accepted. Any other value entered in the Override Text field is ignored.
Also see: SetRobotCsys

AbSyncChannelCommand
Function — SYNC
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Value
This is an Allen-Bradley specific macro. The Allen Bradley documentation states that:
"Start Of Block synchronization occurs when a block of information contains..."
"Any command, or combination of commands, that affects both axis pairs".
This macro is used to track any of these commands that are present on the current block.
If a block contains one of these commands for both channels, then a sync will be done.
The value passed to this macro represents the channel that this command is associated
with.
1 = command for channel 1
2 = command for channel 2
3 = command for both channels.
AbsoluteShift
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — None
Shifts the work coordinate system by the specified axis values. The values will be
interpreted as absolute. Any axis value which is not specified is assumed to be zero.
(Shift Offset 0, ABSOLUTE/NON-MODAL).
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

AbsoluteShiftModal
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Shifts the work coordinate system by the specified axis values. The values will be
interpreted as absolute. Only values specified on the block will be adjusted. (Shift Offset
0, ABSOLUTE/MODAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

AbsoluteShiftNum
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Shifts the work coordinate system by the specified axis values. The values will be
interpreted as incremental or absolute depending on the current state, incremental
(ModeIncremental) or absolute (ModeAbsolute), of the control. Only values specified on
the block will be adjusted. (Shift Offset 1, ABSOLUTE/MODAL or INCREMENTAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

AbsoluteShiftRotationDynamic
Function — SHIFT OFFSETS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
This macro was modeled after IncrementalShiftRotationDynamic. The basic concept is
that the offset is currently being defined within the current "working plane". This
"working plane" is a combination of the rotation plane and the orientation of the stock.
The offset specified (with the WorkCoord...Value macros) will be multiplied by the
current rotation plane, and then if dynamic work offsets are turned on, it will be un-
rotated by the current rotation of the stock. This shift offset would be applied as: (Shift
Offset 0, ABSOLUTE)
If the Text value is "Modal", the original non-rotated offset will be considered
Modal.This means that if an X offset is specified on one line, and a Y offset is specified
on another line, this will be treated the same as if X and Y were on the same line.
See "Notes about Shift Macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

AbsoluteShiftRotationDynamicIndex
Function — SHIFT OFFSETS
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Text, Value (0, 1, or 2)
Value represents the shift index to be used.
This macro is designed for the Siemens 840D control to process TR (trans) values in
$P_PFRAME. This macro is modeled after IncrementalShiftRotationDynamicIndex. The
basic concept is that the offset is currently being defined within the current "working
plane". This "working plane" is a combination of the rotation plane and the orientation of
the stock.
The offset specified (with the WorkCoord...Value macros) will be multiplied by the
current rotation plane, and then if dynamic work offsets are turned on, it will be unrotated
by the current rotation of the stock. This shift offset would be applied as: (Shift Offset 0,
ABSOLUTE). The Override Value is used to specify the shift index to be used and can
be an integer value from 0 to 2.
If the Text value is "Modal", the original non-rotated offset will be considered
Modal.This means that if an X offset is specified on one line, and a Y offset is specified
on another line, this will be treated the same as if X and Y were on the same line.
See "Notes about Shift Macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

ABType2CLS
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
An Allen Bradley, Type II, subroutine call with no arguments. Same as Type2CLS,
except it strips all characters starting with the "/" character. For example:
(CLS,027sta/hd) would call subroutine file "027sta".
AccelTakeoffFactor
Function — ACCEL / DECEL
Status — ACTIVE
Valid Inputs — Value
0 = do not output accel bloc (Default)
A value greater than 0 = outputs an accel block when suitable
Controls the length of the accel block output during optimization for motions in a corner.
When called with a value greater than "0", OptiPath outputs an accel block when suitable.
A value of "0" (default) causes the accel block to not be output. The value passed
represents a % override to apply to the calculated length for normal accel block output.
For example, a value of "1.0" specifies that 100% of the calculated accel block length
should be used, while "0.5" uses 50% of the calculated length.

ActivateAxis
Function — ACTIVATION
Status — ACTIVE
Valid Inputs — Text, Value
Marks this axis as active for this subsystem. Used with InActivateAxis on synchronized
turning tool paths to avoid conflict with Stock/SubStock rotaries. Is passed the numeric
value associated with the axis (1-12), or a text value of "All" to activate.
Numeric values:
1 = X axis
2 = Y axis
3 = Z axis
4 = A axis
5 = B axis
6 = C axis
7 = U axis
8 = V axis
9 = W axis
10 = A2 axis
11 = B2 axis
12 = C2 axis

Text value:
All = All axes will be activated.

NOTE: When an axis is activated, it will pick up the current location of the axis and
offset from the machine. This logic does not take into account rotation matrices that
might be applied.
ActivatePreToolSubsystem
Function — ACTIVATION
Status — ACTIVE
Valid Inputs — Text
This macro calls ActivateToolSubsystem with the component number that was pre-
selected with PreToolCompSelect.

ActivateSpindle
Function — ACTIVATION
Status — NOT RECOMMENDED
Comment — Recommend using ActivateToolSubsystem
Valid Inputs — Value
Activates the Tool component with "Tool Index Number" equal to the value specified by
the SpindleValue macro. Intended to replace the ActiveTool1-5 macros.

ActivateToolSubsystem
Function — ACTIVATION
Status — ACTIVE
Valid Inputs — Value
Activates the tool component based on the specified numeric value (value = tool index)
and the current subsystem. This commands sets the active tool based on the specified
Tool Index number and the current subsystem ID. This command is integrated with the
Sync logic.

ActiveSpindleActiveStock
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
This macro sets the active spindle component name based on the active stock. The "active
stock" is either the stock component that has been marked as active, or the first stock
component in the machine list. If this active stock has a corresponding spindle
component, this component will be marked as the active spindle component. This
component will then be used to store the spindle attributes (speed, minimum speed,
maximum speed, on/off, and direction). The active spindle must be set prior to setting
any spindle attributes. See "Notes about Spindle Configuration in V6" in the Notes
about Special Topics section, in the CGTech Help Library, for additional information.
ActiveSpindleActiveTool
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
This macro sets the active spindle component name based on the active tool. The "active
tool" is either the tool component that has been marked as active, or the first tool
component in the machine list. If this active tool has a corresponding spindle component,
this component will be marked as the active spindle component. If the active tool does
not have a corresponding spindle component, then the active tool component will be
marked as the active spindle component. This component will then be used to store the
spindle attributes (speed, minimum speed, maximum speed, on/off, and direction). The
active spindle must be set prior to setting any spindle attributes.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

ActiveSpindleCompName
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
Sets the active spindle component name based on the incoming Override Text value.
This component will be used to store the spindle attributes (direction, speed, minimum
speed, maximum speed, on/off, and direction). The named component can be either a
spindle component or a tool component. The active spindle must be set prior to setting
any spindle attributes.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

ActiveSpindleDir
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
CCW = counterclockwise
CW = clockwise
This macro sets the spindle direction to either clockwise or counterclockwise for the
active spindle component. If the text value is set to CW, the direction will be set to
clockwise. If the text value is set to CCW, the direction will be set to counterclockwise.
This macro does not turn the spindle on. It only sets the direction attribute.
The ActiveSpindleDir macro takes into consideration part side/tool side, the settings of
Disable Auto Direction and Reverse Direction, on the Modeling window: Component
Attributes tab (ref. Modeling window: Component Attributes tab, in the VERICUT
Help section, in the CGTech Help Library), when determining which direction is CW.
Under certain conditions the spindle direction may be reversed.
Internally, VERICUT always uses the right hand rule to determine clockwise (clock
direction is defined by looking in the negative Z axis direction). The above macro will be
used to convert from NC world to VERICUT world.
The following matrices show under what conditions the direction will be reversed.
Part Side Spindle
Disable Auto Direction - Disable Auto Direction -
"On" "Off"
Reverse Direction - direction reversed ---------------
"On"
Reverse Direction - --------------- direction reversed
"Off"

Tool Side Spindle


Disable Auto Direction - Disable Auto Direction -
"On" "Off"
Reverse Direction - direction reversed direction reversed
"On"
Reverse Direction - --------------- ---------------
"Off"

The active spindle must be set prior to calling this macro. See ActiveSpindleCompName
and ActiveSpindleActiveTool.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

ActiveSpindleMaxSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
This macro sets the maximum speed for the active spindle component to the input value.
The active spindle must be set prior to calling this macro.
Also see: ActiveSpindleCompName and ActiveSpindleActiveTool.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
ActiveSpindleMinSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
This macro sets the minimum speed for the active spindle component to the input value.
The active spindle must be set prior to calling this macro.
Also see: ActiveSpindleCompName and ActiveSpindleActiveTool.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

ActiveSpindleOnOff
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Off
1 = On
This macro turns the active spindle component On or Off. A value of zero turns it Off,
and a value of one turns it On. This can correspond to either the stock spindle or tool
spindle. The active spindle and its corresponding children will be spun. It will also cause
an APT "SPINDL" statement to be generated, and the status to be updated.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
NOTE: The spinning status of a stock component determines whether this stock is in
"Turning" or "Milling" mode. The active spindle must be set prior to calling this macro.
See ActiveSpindleCompName and ActiveSpindleActiveTool.

ActiveSpindleSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
value = spindle speed
This macro sets the spindle speed for the active spindle component. This macro does not
turn the spindle on. It only sets the speed attribute. If the spindle is already turned on,
then it will cause an APT "SPINDL" statement to be generated, and the status to be
updated. The active spindle must be set prior to calling this macro.
See ActiveSpindleCompName and ActiveSpindleActiveTool.
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

ActiveTool
Function — ACTIVATION
Status — NOT RECOMMENDED
Comment — Recommend using ActivateToolSubsystem
Valid Inputs — Value
value = tool index number
This macro activates the Tool component with "Tool Index Number" equal to the value
specified by this macro. This command sets the active tool based strictly on the Tool
Index number. If the same Tool Index number exists on multiple subsystems, it will find
the first one. This macro is not integrated with the Sync logic, and should never be used
with Sync. Intended to replace the ActiveTool1-5 macros, and support using more than
five tool positions on a machine.
NOTES:
1. If the machine contains multiple subsystems, it is recommended that you use the
ActivateToolSubsystem macro rather than this macro.
2. If you are running in SYNC mode, it is required that you use the
ActivateToolSubsystem macro rather than this macro.

ActiveTool1
ActiveTool2
ActiveTool3
ActiveTool4
ActiveTool5
Function — ACTIVATION
Status — OBSOLETE
Comment — Use ActivateToolSubsystem
Valid Inputs — Value
Activates the Tool component with "Tool Index Number" of 1-5, respectively.
NOTES:
1. If the machine contains multiple subsystems, it is recommended that you use the
ActivateToolSubsystem macro rather than this macro.
2. If you are running in SYNC mode, it is required that you use the
ActivateToolSubsystem macro rather than this macro.
AdditionalWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
Updates the work coordinate system based on values retrieved from the Work Offsets
table (ref. Work Offsets table in the Tables for Processing G-Codes section, in the
CGTech Help Library). The Register value is set by the WorkCoordIndex macro, and the
Sub-Register value is set by the TableSubRegisterValue macro. These macros must be
called prior to calling the AdditionalWorkCoord macro. Outputs an error message if the
corresponding table entry does not exist, and "ERROR" is specified as the Text value.

AddModelRemoveAllModels
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text = Component Name
This macro is used to remove all models from specified Component. In the current
implementation it should be used only for components with models accumulated by calls
of the AddModelToComponent macro.

AddModelSetColor
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
Value = number associated with color index in Shade Color List
This macro specifies the color to apply to all future models being added to a Component
using macro AddModelToComponent. The color is specified using the number associated
with color in Shade Color list (ref. to Color window: Define tab, in the VERICUT Help
section, in the CGTech Help Library).

AddModelSetFileName
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text = Model File Name
This macro specified model file name to use for all future models added to a Component
using macro AddModelToComponent.
AddModelSetNormals
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
INWARD = surface normals oriented inward
OUTWARD = surface normals oriented outward
GUESS = surface normals orientation will be computed by VERICUT
This macro specifies the model surface orientation for all future models added to a
Component using macro AddModelToComponent. The surface normals are oriented
according to specified setting when a model file is processed.

AddModelSetRelComponent
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text = Component Name
This macro specifies the Component Name to use as a relative position for all models
added to a Component using macro AddModelToComponent. The model being added to
a Component will be oriented and positioned in the local coordinate system of the
specified Relative Component. Note that the Relative Component can be different than
the Parent Component where the model is added.
Also see: AddModelSetRelPosition macro.

AddModelSetRelPosition
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text = Xoffset Yoffset Zoffset
This macro specifies the offset vector to apply to the model position when the model is
located in relation to the Relative Component (ref. AddModelSetRelComponent macro).
The offset vector is applied in the local Relative coordinate system of the Relative
Component. This offset will be applied to all future models added to a Component using
the AddModelToComponent macro.
AddModelSetUnits
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
INCH = model file is defined in inches
MILLIMETER = model file is defined in millimeters
This macro specifies the units used in model file for all future models added to a
Component using macro AddModelToComponent. The model geometry data will be
converted to VERICUT's current units when a model file is processed.

AddModelToComponent
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text = Component Name
This macro is used to add a model to the Component specified by its name. The model,
its attributes, and position are specified by specific macros (ref. AddModelSetColor,
AddModelSetFileName, AddModelSetNormals, AddModelSetRelComponent,
AddModelSetRelPosition, and AddModelSetUnits,). The Component type is limited and
can not be Stock in the current implementation.

AdjustToolOffset
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Text, Value
Text = defines the CSYS to be used by option 4.
Value = the option used to define how the offset is applied.
0 = Interpret the Tool Offsets within the machine CSYS, and then adjust the
offset based on the machine kinematics.
1 = Interpret the Tool Offsets within the Tool's CSYS, and then adjust the
offsetbased on the machine kinematics. (Default)
2 = Interpret the Tool Offsets within the "local" CSYS, and then adjust the
offset based on the machine kinematics.
3 = No adjustments. Apply the offset as is.
4 = Interpret the Tool Offsets within the specified CSYS, and then adjust the
offset based on the machine kinematics.
The tool offsets include:
Gage Offset
Tool Nose Offset
Tool Length Offset
Driven Point Offset
Gage Pivot Offset
Turret Offset
These "tool" offsets are added, and then typically interpreted within the Tool's current
coordinate system. These offsets are then transformed into machine coordinates, and then
adjusted based on the machine kinematics. (The machine coordinate system is shown
with the "Machine Origin" axis)
This macro allows flexibility on how the tool offsets are adjusted. This macro does not
cause the tool offsets to be recalculated, it only defines HOW they are to be adjusted
when they are recalculated.
Options:
Value = 0: Interpret the Tool Offsets within the machine CSYS, and then adjust the
offset based on the machine kinematics. This option can be used if the Tool Offsets
are fixed, and are not dependent on the orientation of the tool. This option is not valid
with a slant bed lathe.
Value = 1: (Default) Interpret the Tool Offsets within the Tool's CSYS, and then
adjust the offset based on the machine kinematics. Here, whenever the tool offsets are
recalculated, the offsets will be adjusted based on the orientation of the Tool.
NOTE: This is the only option that will work with any form of RTCP.
Value = 2: Interpret the Tool Offsets within the "local" CSYS, and then adjust the
offset based on the machine kinematics. The "local" CSYS is defined by the machine
CSYS, the working plane in effect, the rotation plane in effect, the RPCP matrix in
effect, and the Sin840D matrices in effect. It is recommended to never use this
option. It is rarely if ever valid.
Value = 3: No adjustments. Apply as is. This option can be used if the Tool Offsets
are fixed, and are not dependent on the orientation of the tool. This option can work
with a slant bed lathe as long as there is no Y offset.
Value = 4: Interpret the Tool Offsets within the specified CSYS, and then adjust the
offset based on the machine kinematics. The Text value defines the CSYS. This value
can be either the name of a defined "CSYS", or the name of a Component. The
offsets will be based on the current orientation CSYS/Component. Picking the right
CSYS/Component can allow this option to work with a slant bed lathe.
AlarmSignal
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Similar to ErrorMacro, except it concatenates the Override Text value and the numeric
Override Value. It also checks whether the "if condition" (if one is present) was true. This
produces a simple generic alarm message with an error code:
Error: <Override Text value>: <numericOverride Value>

ApplyGageOffset
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use TurnOnOffGageOffset
Valid Inputs — Value
0 = gage offset not be applied in Gage Length, or Tool Length
Compensation programming mode (Default)
1 = gage offset applied regardless of programming mode
This macro provides an approach to using Tool Length Compensation mode. The concept
is the gage offset is not applied until G43 is entered, and is canceled when G49 is entered.
When called with a value of "1", the gage offset will be applied regardless of what
programming mode you are in. The default Override Value is "0". Prior to the calling of
this macro, the gage offset would not be applied if you are in Gage Length, or Tool
Length Compensation programming mode (ref. Project menu > Processing Options >
G-Code > Settings: Settings tab, the VERICUT Help section, in the CGTech Help
Library).
The approach would look like the following:
1. G43 calls ApplyGageOffset with Override Value = "1" (to apply the gage
offset)
2. G49 calls ApplyGageOffset with Override Value = "0" (to cancel the
application of the gage offset)
3. H calls ToolOffsetUpdate

ApplyGagePivotOffset
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use TurnOnOffGagePivotOffset
Valid Inputs — Value
This macro is passed a value of 0 or 1. The default value is 0. When set to 1, it will cause
the tool offset to include the distance from the active tool to the rotary pivot. The rotary
pivot is being defined as the origin of the first parent rotary (if there is only one), or the
intersection of the axes of the first 2 rotary components up from the tool (if there are
more than one tool side rotary component). If there are two or more parent rotary
components, and if the axes do not intersect, the rotary pivot point is defined as the
second parent rotary. Compensation for the tool offset typically occurs with a call to
ToolOffsetUpdate. This feature can now be used with RTCP. When used with RTCP,
this Gage Pivot Offset will be used rather than the RTCP Pivot Offset. Being in RTCP
mode is not a requirement to activate this offset.
The ApplyGagePivotOffset approach is the preferred method for handling the tool to
pivot offset. It has many advantages over the traditional approach. The advantages are all
associated with the new approach establishing a "relational" offset (pivot point to current
active tool). As described above, this approach assumes a specific pivot point based on
the machine configuration. In some cases, this pivot point might not be the pivot point
that you want to define. In these instances use PivotOffsetCompName to define the
component containing the desired pivot point.
Using ApplyGagePivotOffset sets the Gage Pivot Offset flag for all subsystems.

ApplyGagePivotOffsetCurrent
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use TurnOnOffGagePivotOffset
Valid Inputs — Value
This macro is identical to the ApplyGagePivotOffset macro except that it sets the Gage
Pivot Offset flag only for the current subsystem.

ApplyPivotOffset
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — This macro is associated with the older RTCP method.
Valid Inputs — Value
0 = No
1 = Yes
Specifies whether the RTCP Pivot Offset should be applied. A value of 1=YES, 0=NO.
When YES, the controller will compensate for the pivot distance when running in RTCP
mode. The pivot distance can be specified with the RTCP Pivot Offset table (see the
Tables for Processing G-Codes section, in the CGTech Help Library). If the table is not
specified, it will be calculated based on the location of the Tool and its corresponding
Rotary components.
NOTE: Even with this flag being set to YES, the RTCP Pivot Offset will only be
applied if in RTCP mode, or in a special FanucToolLengthCompAxisOn mode.
ApplyRotationPlaneWithIjk2Abc
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
Valid Text:
BFRAME = $P_BFRAME Frame variable
IFRAME = $P_IFRAME Frame variable
PFRAME = $P_PFRAME Frame variable
WPFRAME = $P_WPFRAME Frame variable
ALL = equivalent to all supported Frames.
Valid Values:
0 = No (Default)
1 = Yes
This macro sets a flag specifying whether the current rotation plane should be applied to
the IJK vector associated with the IJK to ABC conversion. Enter a 0 or 1 in the Override
Value field. 1 = Yes, 0 = No (Default).
If one or more valid frame keywords are entered in the Override Text field, VERICUT
checks whether the specified frame(s) exist. If they do, they are used to translate the IJK
vector before calculating ABC angles for the final orientation of Working Plane. Valid
frame key words are IFRAME, PFRAME, WPFRAME, BFRAME and ALL.
If multiple keywords are entered, separate them by commas. If multiple frames are used,
the order in which the translations are applied is identical to the Siemens 840D Frames
order.

ApplyTurretOffset
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Use TurnOnOffGagePivotOffset
Valid Inputs — Value
0 = do not apply turret offset (Default)
1 = On
2 = On except when gage offset is set to "0 0 0"
Automatically applies a turret offset to the gage offset a tool in use. The turret offset is
the distance from the active tool component to the turret component. This allows tool
components to be connected at their actual location on the Turret component without
having to include this distance in each tool's gage offset values. This macro should be
called during the "Start of Processing" event with a value of "1" (on) or "2" (on except
for when the gage offset is set to "0 0 0"). "0" is the default, and does not apply the turret
offset.
Also see: ToolOffsetUpdate
ArcAccelFeedrateFactor
Function — ACCEL / DECEL
Status — ACTIVE
Valid Inputs — Value
Sets a factor that will be used when calculating the maximum feedrate when processing
an arc. This is used with the ACCEL/DECEL logic within OptiPath. The default for this
factor is one. The formula to be used is: Feedrate = sqrt(acceleration * radius * factor).

AutoScanOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Turns off the "automatic" setting of the Scan Toolpath Files flag when a subroutine file is
specified. This macro needs to be called during the "Reset" event.
NOTE: Subroutine files will always be scanned.

AutosetCutterCompVars
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Value
value = starting variable number
Reads the Cutter Compensation table (see the Tables for Processing G-Codes section,
in the CGTech Help Library) and sets system variable values based on table values. This
macro is passed the starting variable number. For example: if the starting variable number
is set to "2000", and index 5 in the table is set to ".2", variable #2005 will be set to .2.
See: "Notes about system variables" in the Notes about Special Topics section, in the
CGTech Help Library for more information.

AutosetTableAxisFrames
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Updates system Frames $P_UIFR[1 – 99] based on current Work Offsets table values.
The valid input text specifies the range for Work Offsets table names, i.e. 54 57 (Frames
[1-4]) or 505 599 (Frames [5-99]). This macro should be called in the Event group,
"Start of Processing", after the CGTechVarDefMacro defining $P_UIFR frames.
AutosetTableAxisFrames also sets initial values for $P_BFRAME Frame when it is
defined and the Base Work Offset table entry is set.
AutosetTableAxisVars
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Text, Value
Updates system variables based on current table values (re-reads table values). For
multiple subsystem controls, AutosetTableAxisVars supports using a different set of
variable names for each subsystem. This macro is passed a series of arguments in the
Override Text field. Arguments are as follows (separated by spaces):
table name
starting index value
ending index value
starting variable value
variable offset per index
variable offsets for axes: x y z a b c u v w
NOTE: Unused axes to the right do not need to be specified. An unused axis in the
middle should be specified with a "-1".
Examples:
The following defines the work offsets for a Fanuc 15MB with a 4-axis NC machine
where the B-axis is defined as the 4th axis (x,y,z are 1,2,3):

Override Text = Base Work Offset 1 1 5200 20 1 2 3 -1 4 (Note that "-1" represents
the unused A-axis in this machine.)
Override Text = Work Offsets 54 59 5220 20 1 2 3 -1 4
Override Text = Work Offsets 1 48 7000 20 1 2 3 -1 4

The following loads registers 1-300 from the Cutter Compensation table (see the
Tables for Processing G-Codes section, in the CGTech Help Library) into variables
starting at #2000
NOTE: This is only an example, typically you would call AutosetCutterCompVars).
Override Text = Cutter Compensation 1 300 2000 1 1
Also see: "Notes about system variables" in the Notes about Special Topics section, in
the CGTech Help Library for more information.

AutosetTableAxisVarsAdv
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
This macro is identical to AutosetTableAxisVars except for 3 additional arguments
associated with the SubRegister values. For multiple subsystem controls,
AutosetTableAxisVarsAdv supports using a different set of variable names for each
subsystem.
NOTE: If the SubRegister value is always 1, then the old AutosetTableAxisVars
macro can still be used to set variables associated with the Work Offset table.
Updates system variables based on current table values (re-reads table values). This
macro is passed a series of arguments in the Override Text field. Arguments are as
follows (separated by spaces):
table name
starting index value
ending index value
starting sub index value
ending sub index value
starting variable value
variable offset per index
variable offset per sub index
variable offsets for axes: x y z a b c u v w
NOTE: Unused axes to the right do not need to be specified. An unused axis in the
middle should be specified with a "-1".

AutosetToolLengthCompVars
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Value
Value = starting variable number
Reads the Tool Length Compensation table (ref. Tool Length Compensation table in
the Tables for Processing G-Codes section, in the CGTech Help Library) and sets system
variable values based on table values. This macro is passed the starting variable number.
For example: if the starting variable number is set to "4000", and index 5 in the table is
set to "10", variable #4005 will be set to 10. The setting of the variables is based strictly
off the table and is NOT dependent on programming method or the Input Program Zero
table (ref. Input Program Zero table in the Tables for Processing G-Codes section, in
the CGTech Help Library).
Also see: "Notes about system variables" in the Notes about Special Topics section, in
the CGTech Help Library for more information.
AutosetToolManCutCom840DVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: var_name
where var_name is the name of the 840D control variable.
This macro is designed for the Siemens 840D control which has specific variables
designed to handle tool data. These variables are usually 2 dimensional numeric arrays,
$TC_DP1, etc.
This macro scans all tools in current tool library and automatically transfer Cutter
Compensation data from the tool library to the specified Siemens 840D control variable.
The variable name is specified in the Override Text field and is usually $TC_DP15.
The variable should be defined in the .def file with a minimum size large enough to fit all
tools in the library and with the second dimension at least equal to the maximum number
of cutter compensation values of the particular tool. If the number of tools is larger than
the variable's first dimension, an error message is output in the logger. If the list of cutter
compensation values is larger than the variable's second dimension, all remaining values
will be ignored.
This macro should be called in the Start of Processing event or in the SubSystem branch.
Example: Override Text value: $TC_DP15

AutosetToolManCutComVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: start inc inx
where "start" is the first variable address,
"inc" is the increment to offset the address at each tool definition,
"inx" specifies which Cutter Compensation radius in the list is processed,
an "inx" value of -1 specifies all.
This macro is used to automatically transfer Cutter Compensation data from Tool
Manager to specified control variables. The format of control variables is limited to
"tagged" variables used in Fanuc, NUM, and other similar controls. Siemens 840D
system variables are not supported by this macro.
This macro should be called in the Start of Processing event or in the SubSystem branch.
The macro will scan all tools in "current" tool library. Only numeric tool IDs are
supported.
Example:
Override Text: 2000 1 0
Result: For tool 15, variable 2015 => R of the first Cutter Compensation element
in the list for tool 15.
NOTE: For tools with multiple Cutter Compensation records, the Cutter Compensation
values can be stored using a fake tool address.

AutosetToolManDrvPnt840DVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: var_name point_comp
where var_name is the name of the 840D control variable and point_comp is
the point component (X, Y, or Z).
This macro is designed for the Siemens 840D control which has specific variables
designed to handle tool data. These variables are usually 2 dimensional numeric arrays,
$TC_DP1, etc.
This macro scans all tools in current tool library and automatically transfers driven point
data from tool library to the specified Siemens 840D control variable. The variable name
is specified in the Override Text field and is usually $TC_DP12, $TC_DP13 or
$TC_DP14.
The variable should be defined in the .def file with a minimum size large enough to fit all
tools in library and with the second dimension at least equal to the maximum number of
Driven Point values of the particular tool. If the number of tools is larger than the
variable's first dimension, an error message is output in the logger. If the list of Driven
Points is larger than the variable's second dimension, all remaining values will be
ignored.
The point component X, Y or Z is specified as a second parameter in Override Text
field. Usually $TC_DP12 is used for the Z component.
This macro should be called in the Start of Processing event or in the SubSystem branch.
Example: Override Text value: $TC_DP13 X

AutosetToolManDrvPntVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: start inc inx xflag yflag zflag
where "start" is the first variable address,
"inc" is increment to offset address at each tool definition,
"inx" is index of selected driven point or -1 if all driven points are processed.
"xflag", "yflag", and "zflag" are used to indicate which components of the
driven point are to be processed (For example, 1 0 1 specifies that only X and
Z components are to be stored).
This macro is used to automatically transfer driven point data from Tool Manager to
specified control variables. The format of control variables is limited to "tagged"
variables used in Fanuc, NUM, or other similar controls. Siemens 840D system variables
are not supported by this macro.
This macro should be called in the Start of Processing event or in the SubSystem branch.
The macro will scan all tools in "current" tool library. Only numeric tool IDs are
supported.
Example:
Override Text: 2000 3 0 1 1 1
Result: For tool 10, variables 2010, 2011 and 2012 will be set to the X, Y and Z
components of the first driven point of tool.
NOTE: For tools with multiple driven points, the driven points can be stored using a
fake tool address.

AutosetToolManLength840DVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: var_name point_comp
where var_name is the name of the 840D control variable and point_comp is
the point component (X, Y, or Z).
This macro is designed for the Siemens 840D control which has specific variables
designed to handle tool data. These variables are usually 2 dimensional numeric arrays,
$TC_DP1 etc.
This macro scans all tools in current tool library and automatically transfers gage point
data from tool libray to the specified Siemens 840D control variable. The variable name
is specified in Override Text field and is usually $TC_DP3, $TC_DP4 or $TC_DP5.
The variable should be defined in the .def file with a minimum size large enough to fit all
tools in library and with the second dimension at least equal to the maximum number of
Driven Point values of the particular tool. If the number of tools is larger than the
variable first dimension, an error message is output in the logger. If the list of Driven
Points is larger than the variable second dimension, all remaining values will be ignored.
The point component X, Y or Z is specified as a second parameter in Override Text
field. Usually $TC_DP3 is used for the Z component.
This macro should be called in the Start of Processing event or in the SubSystem branch.
Example: Override Text value: $TC_DP3 Z

AutosetToolManLengthVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: start inc xflag yflag zflag
where "start" is the first variable address,
"inc" is increment to offset address at each tool definition,
"xflag", "yflag, and "zflag" are used to indicate which components of the gage
point are to be processed (for example, 1 0 1 indicates that only the X and Z
components are to be stored).
This macro is used to automatically transfer gage point data from Tool Manager to
specified control variables. The format of control variables is limited to "tagged" vars
used in Fanuc, NUM or other similar controls. Siemens 840D system variables are not
supported by this macro.
This macro should be called in the Start of Processing event or in the SubSystem branch.
The macro will scan all tools in "current" tool library. Only numeric tool IDs are
supported.
Example:
Override Text: 2000 1 0 0 1
Result: For tool 5, variable 2005 => Z component of the tool gage offset.

AutosetToolManMisc840DVars
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Text
Override Text format: var_name data_type
where var_name is the name of the 840D control variable and data_type is
the keyword for the type of data to be transferred. The following data type
keywords are supported:
RADIUS - the tool's maximum radius
TYPE -the VERICUT tool type (Default)
CORNER - the tool's corner radius
TOOLID - the tool ID
This macro is designed for the Siemens 840D control which has specific variables
designed to handle tool data. These variables are usually 2 dimensional numeric arrays,
$TC_DP1 etc. A one dimensional string array, $TC_TP2, is used for tool IDs. The Tool
IDs are text strings.
This macro scans all tools in current tool library and automatically transfers
miscellaneous data from the tool library to the specified Siemens 840D control variable.
The type of data is defined by a key word following the variable name.
Currently the following data types, with the corresponding keyword, are supported:
Tool's maximum radius (RADIUS), VERICUT Tool Type (TYPE or default), Corner
radius (CORNER) and Tool ID (TOOLID). The Tool ID string is stored in a one-
dimensional string array. If the number of tools is larger than the variable's first
dimension, an error message is output in the logger. The second dimension must be at
minimum 1. For Tool ID the second dimension is not required.
This macro should be called in the Start of Processing event or in the SubSystem branch.
Examples: Override Text value: $TC_DP6 RADIUS
$TC_TP2 TOOLID
$TC_DP1

AutoUpdateIPZ
Function — PROGRAM ZERO
Status — OBSOLETE
Comment — Use AutoUpdatePZ
Valid Inputs — Text, Value
This macro is passed the text of the parent component name of the assembly that is being
attached to or removed from the main machine assembly. Use the Override Text field to
specify the component name. The offset will be calculated based on the difference
between the origins of the parent component (top of the component list) and the lowest
level child component of the associated assembly.
The Override Text field is also used to pass a value of 1 or -1 to add or subtract the auto-
calculated values from the internal Input Program Zero (Special Z) table (ref. Input
Program Zero (Special Z) table in the Tables for Processing G-Codes section, in the
CGTech Help Library) offset.
NOTES:
1. This DOES NOT change any of the table values. The new value for IPZ (Special
Z) can be seen using Modals/Debug/Debug Offsets.
2. This macro should probably be executed after motion or on a block by itself.
Also, since the internal value for Input Program Zero (Special Z) is being
modified, this method will probably not work when running in Tool Length Comp
mode.
AutoUpdatePZ
Function — PROGRAM ZERO
Status — NOT RECOMMENDED
Comment — Recommend using Gage and Gage Pivot Offsets
Valid Inputs — Text, Value
This macro is passed the text of the parent component name of the assembly that is being
attached to or removed from the main machine assembly. Use the Override Text field to
specify the component name. The offset will be calculated based on the difference
between the origins of the parent component (top of the component list) and the lowest
level child component of the associated assembly.
The Override Text field is also used to pass a value of 1 or -1 to add or subtract the auto-
calculated values from the internal Program Zero table (ref. Program Zero table in the
Tables for Processing G-Codes section, in the CGTech Help Library) offset.

AxisMappingXtoU
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
1 = U register will be mapped to the X point coordinate
Any other value = X register will be mapped to the X point coordinate
This macro updates the register that maps to the X point. If a value of 1 is passed, the U
register will be mapped to the X point. For any other value, the X register will be mapped
to the X point.
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: CirclePresentAxis, CyclePresentAxis, PlaneAxisMapping, Register Mapping,
UvwAxis and XyzAxis.

AxisMachineMotion
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
Text = the axis to be moved.
Similar to AxisMotion except that it sets the axis to be moved ("A", "B", "C", "A2",
"B2", "C2", "U", "V", "W", "X", "Y", "Z") then calls the appropriate axis machine
motion macro, passing along the Override Text value. For example, if Override Text = B,
then macro BAxisMachineMotion is called.
Also see: AAxisMachineMotion, BAxisMachineMotion, CAxisMachineMotion,
A2AxisMotion, B2AxisMachineMotion, C2AxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion and ZAxisMachineMotion

AxisMotion
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
Text = the axis to be moved.
Sets the axis to be moved ("A", "B", "C", "A2", "B2", "C2", "U", "V", "W", "X", "Y",
"Z") then calls the appropriate axis motion macro passing along the Override Text value.
For example, if Override Text = B, then macro BAxisMotion is called.
NOTE: Macro AxisMotion should not be used when you need to specify the override
text "-" to select the motion direction when in the "absolute" mode.
Also see: AAxisMotion, BAxisMotion, CAxisMotion, A2AxisMotion, B2AxisMotion,
C2AxisMotion, UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion,
YAxisMotion and ZAxisMotion

AxisPriorityGroup
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
Value = the Axis Priority Group number.
Use to specify the Axis Priority Group to be used. (ref. Machine Settings window: Axis
Priority tab, in the Configuration menu section of VERICUT Help, in the CGTech Help
Library).

AxisPriorityOnOff
Function — MOTION
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Axis Priority settings turned off, and all axes will be interpolated
1 = Axis Priority settings will be used
Turns On and Off the settings in the Axis Priority table (ref. Machine Settings window:
Axis Priority tab, in the VERICUT Help section, in the CGTech Help Library). If passed
a value of 0, the Axis Priority settings will be turned off, and all axes will be interpolated,
and have the same priority. If passed a value of 1, the Axis Priority settings will be used.
Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

B2AxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to BAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, BAxisIncreMotion,
C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

B2AxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to BAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, BAxisMachineMotion,
C2AxisMachineMotion, CAxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

B2AxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its B2AxisMachineMotion counterpart, except it also adds the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
BAxisMachineRefMotion, C2AxisMachineRefMotion, CAxisMachineRefMotion,
UAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion
B2AxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the B2 value used to command the machine's B2 rotary component. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, BAxisMotion, C2AxisMotion, CAxisMotion,
UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

BaseWorkOffsetValues
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Value
Sets the base work offset, an offset that is added to any current work offset. The XYZ
offset is specified with the macros WorkCoordXValue, WorkCoordYValue,
WorkCoordZValue.

BAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to BAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

BAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to BAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
C2AxisMachineMotion, CAxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion
BAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its BAxisMachineMotion counterpart, except it also adds in the offset from the
Machine Reference Location table (ref. Machine Reference Location table in the
Tables for Processing G-Codes section, in the CGTech Help Library). Thus, motion is
relative to the machine's reference location. A macro exists for each motion axis: A, B, C,
A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, C2AxisMachineRefMotion, CAxisMachineRefMotion,
UAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

BAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the B value used to command the machine's B rotary component. A macro exists for
each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, C2AxisMotion, CAxisMotion,
UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

BiDirVarsAbsIncr
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text, Value
Text:
Work Offsets = setting only applies to the Work Offsets table
Base Work Offset = setting only applies to the Base Work Offsets table
Value:
1 = Sets the coordinate mode of bi-directional variables to absolute (Default)
2 = Sets the coordinate mode of bi-directional variables to incremental
3 = Sets the coordinate mode of bi-directional variables to the
absolute/incremental mode in the current.
Sets the coordinate mode of bi-directional variables to absolute, incremental, or G-Code
(1,2, or 3). This controls how the bi-directional variable's value is applied to update the
table positions. G-Code uses the current NC program mode for absolute or incremental.
Default is Absolute.
If a text value of "Work Offsets" or "Base Work Offset" is used, the setting applies only
to this specific table. Otherwise, this setting applies to all tables.

BiDirVarsApplyOnOff
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
0 = processing Off, table updated, but offset not applied until the NC program
activates it. (Default)
Any other value = processing On, updated offset table is applied whenever the
bi-directional variable changes
Controls "when" the tables updated by bi-directional variables are applied. A value of "0"
means the table is updated, but the offset is not applied until the NC program specifically
activates it. Any other value turns processing "ON", meaning the updated offset table is
applied (if the offset is active) whenever the bi-directional variable changes. Default is
OFF. This feature is currently only supported with the Work Offset and Base Work
Offset tables.

BiDirVarsModeOnOff
Function — VARIABLES
Status — ACTIVE
Comment — V6.1
Valid Inputs — Value
0 = Off (Default)
1 = On
2 = On, but only for the fully supported tables
Sets processing of bi-directional variables ON/OFF. A value of "0" turns processing
"OFF" , a value of 1 turns processing "ON", and a value of 2 turns processing "ON" but
only for the fully supported tables (currently Work Offset and Base Work Offset). Bi-
directional variables are defined by the AutosetTableAxisVars macro during initial
events. During NC program execution, the tables associated with bi-directional variables
are updated whenever the NC program changes the variable's value. Default is OFF.
BlockBeginLabel
Function — BRANCHING
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Sets a label string marking the beginning of the block to execute. If a text string, or string
variable, is not specified in the Override Text field, a default value of "Label1" will be
used as the block begin label. See the example under macro BlockEndLabel.

BlockEndLabel
Function — BRANCHING
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Sets a label string marking the end of the block to execute. If a text string, or string
variable, is not specified in the Override Text field, a default value of "Label2" will be
used as the block end label. This macro should be used after macro BlockBeginLabel to
correctly execute the block of NC code.
Example:
The CALL BLOCK, calls the lines between a "start label" and an "end label". It is
similar to calling a subroutine but with the start and end being labels.
CALL BLOCK Label_STARTLABEL TO Label_ENDLABEL



Label_STARTLABEL:
...
...

N1170 M5
N1171 M9
N1172 G17 M9
N1173 G60
N1174 M17
Label_ENDLABEL:
Entries should be defined for TO and BLOCK in the Word/Address table as
illustrated below:
Also see: LabelMacro and EndLabelLoop.

BlockFinish
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Default event macro for the "End of Block Processing" event.

BlockInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Default event macro for the "Start of Block Processing" event.

BlockSkipAnywhere
Function — BLOCK SKIP
Status — SPECIAL
Valid Inputs — Value
Allows the block skip character to be anywhere in the block. This macro should be called
during the "Reset" event with an value of "1". When active, the block will be processed
up until the block skip token is read. The remainder of the block will then be skipped.
NOTE: This macro should only be used when the block skip character can not be
interpreted as anything except a block skip character. It should not be used when this
token could also mean divide.

BlockSkipNoValue
Function — BLOCK SKIP
Status — SPECIAL
Comment — Added V7.1.3
Valid Inputs — None
Typically, Block Skip characters are followed by a number which indicates the switch
number. This macro specifies that the current control does not support multiple switches,
and therefore, any number that might, or might not, come after the Block Skip character
should not be interpreted as a switch number. In this case, the Block Skip will be
interpreted as switch 1.
This macro should be called during the "Reset" event. If it is not called during the
"Reset" event, it will be assumed that any number that comes immediately after the
Block Skip character is the switch number.
BlockSkipSwitch1
Function — BLOCK SKIP
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
Controls when block skip Switch 1 is on, or off (ref. Project menu > Processing
Options > G-Code > Settings: Block Skip tab in the VERICUT Help section , in the
CGTech Help Library). A value of "1"=On, "0"=Off.

BlockSkipSwitchOff
Function — BLOCK SKIP
Status — ACTIVE
Valid Inputs — Value
Value = switch number (i.e., 0 = Switch 0 off, 1 = Switch 1 off, etc.)
Turns off the specified Block Skip switch. Valid values are 0-9. (ref. Project menu >
Processing Options > G-Code > Settings: Block Skip tab in the VERICUT Help
section , in the CGTech Help Library).
NOTE: In the GUI, switch 1 actually sets switch 0 and switch 1. With these macros,
you must explicitly set the switches that you want on or off. The defaults are the GUI
settings.

BlockSkipSwitchOn
Function — BLOCK SKIP
Status — ACTIVE
Valid Inputs — Value
Value = switch number (i.e., 0 = Switch 0 on, 1 = Switch 1 on, etc.)
Turns on the specified Block Skip switch. Valid values are 0-9. (ref. Project menu >
Processing Options > G-Code > Settings: Block Skip tab in the VERICUT Help
section , in the CGTech Help Library).
NOTE: In the GUI, switch 1 actually sets switch 0 and switch 1. With these macros,
you must explicitly set the switches that you want on or off. The defaults are the GUI
settings.
BoschType2CYCLE
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
Sets the ZAxisMotion, the CycleRapidLevelValue, and the CycleStepValue based on the
format of a Bosch Type II Cycle command.

BroachModeOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
1 = On
Any other value = Off
This macro is used to turn On/Off a special "broaching" motion in VERICUT. An
Override Value of "1" turns broaching mode "On". Any other Override Value turns
broaching mode "Off".

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

C2AxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to CAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

C2AxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to CAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, CAxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

C2AxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its C2AxisMachineMotion counterpart, except it also adds in the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, CAxisMachineRefMotion,
UAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

C2AxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the C2 value used to command the machine's B2 rotary component. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, CAxisMotion,
UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

CallNCMacro
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Sets up the variables for calling a Fanuc style NC macro in the machine code input file.
The machine code macro which is called is specified with the SubroutineName macro.
This macro is also dependent on the calling of the MacroVar macro for setting the
parameters which are to be passed to the subroutine. Up to 150 variable values can be
passed by a call to an NC macro.
CallNCMacroBlock
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Sets the mode to call an NC Macro on every block.

CallNCMacroCancel
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Cancels the mode set with CallNCMacroBlock and CallNCMacroMotion.

CallNCMacroMotion
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Sets the mode to call an NC Macro on every block with motion.

CallSub
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Calls the machine code subroutine specified via the SubroutineName macro.

CallSubCurrent
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — None
Calls the subroutine or program that is currently being processed. Typically this is
combined in the control configuration with some type of GOTO sequence number of
label.

CallSubName
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Calls the machine code subroutine specified with the input value.
CallTextSubName
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text
Text = subroutine name
Similar to CallSubName, except the subroutine name is interpreted as text, regardless of
the Type of Subroutine Names control setting. Use the Word Format window features
(ref. Word Format window, in the VERICUT Help section, in the CGTech Help
Library), to define a "SubroutineName" word that takes an alpha-numeric argument.
NOTE: It is critical that the value type be set to Alpha-Numeric. Then use the
Word/Address window features to configure the SubroutineName macro to call this
macro.
For additional information, see Word Format window and Word Address window, in
the VERICUT Help section, in the CGTech Help Library.

Cancel3dToolOffset
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Text
Cancels the 3D Tool Correction offset.
Also see: Tool3dOffset

CancelAllWorkOffsets
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
Cancels the shift offset (Fanuc G92), the work coordinate offset (G54-59), and the Base
offset (MAHO).

CancelShiftOffsets
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — None
Cancels the shift offset (Fanuc G92).
CancelWorkOffsets
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — None
Cancels the work coordinate system offset (G54-59)

CartesianModeOnOff
Function — MOTION
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
0 = the input data defines position of machine axes.
1 = the input data defines the position and tool orientation in Cartesian
coordinates (usually X Y Z I J K words).
Some machines like robots, or a Brown fastener machine can be programmed directly
using machine axes position or by a Cartesian location of a point and a tool vector. This
macro is used to explicitly specify what type of positioning data is in the block.

CaseElse
Function — BRANCHING
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — None
Use this macro to define the beginning of the "ELSE" portion of a "CASE" statement.
See the example "CASE" statement under CaseStart.

CaseEnd
Function — BRANCHING
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — None
Use this macro to define the end of a "CASE" statement. See the example "CASE"
statement under CaseStart.
CaseStart
Function — BRANCHING
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
This macro is used to define the beginning of a "CASE" statement. The general format of
a CASE statement is defined as:
CASE <expression>
VALUES value, value, value, value, …
Possible blocks of data
VALUES value, value, value, value, …
Possible blocks of data

ELSE
Possible blocks of data
CASE_END
The expression on the CASE statement will be evaluated and passed to this macro. This
value will be matched with a corresponding VALUES statement, and a jump will be
made to this statement. If no matches exist, the control will branch to the ELSE
statement. If a ELSE statement does not exist, the control will branch to the CASE_END
statement
The next VALUES or ELSE statement will mark the end of the current VALUES block,
and the control will branch to the CASE_END statement.
NOTE: Embedded case statements are supported.
See Also: CaseValues, CaseElse, and CaseEnd

CaseValues
Function — BRANCHING
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
Use this macro to define the beginning of a "VALUES" portion of a "CASE" statement.
See the example "CASE" statement under CaseStart.
Multiple values are supported. This macro should be called once for each value.
CAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to CAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, UAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

CAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to CAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, UAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

CAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its CAxisMachineMotion counterpart, except it also adds in the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
UAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion
CAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the C value used to command the machine's C rotary component. A macro exists for
each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

CGTechVarDefMacro
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
Text = variable definition
Value:
0 = define variable(s) as local
Any other value = define variable(s) as global
This macro provides the ability to define variables. The corresponding "word" will be
added to the Word list. This word will be removed at reset, and will not be written to the
control file. A value of 0 will define the variable(s) as local. Any other value will define
the variable(s) as global. The syntax of the text value is identical to the Sinumeric 840D
DEF format.
See Notes about Siemens 840D Def Command in the Notes about Special Topics
section, in the CGTech Help Library for complete syntax information.
NOTE: Using double quotes, as described for the 840D, may cause a problem when
loading the some controls.
For example:
OV= 1 OT=REAL PPP[15]
In the above example, PPP would be defined as a variable name, and it would be defined
as a single dimension array variable with an array size of 15.
The primary purpose of this macro is to define global system array variable in the start of
processing event, and thereby define the variable in the control. It is common to set
variables during the start of processing event. If the variable is not defined, it will be
created. An array variable can not be created when set in this manner because of the
dimension of the array is not given. This macro allows array variable to be defined in the
start of processing event. Since all macros called in the start of processing event are
stored in the control file, this macro allows array variables to be defined in the control
file.
CGTechVarUpdateMacro
Function — VARIABLES
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text, Value
This is a replacement macro for the CGTechVarDefMacro in events. This macro will
work similarly to the DefMacro, except the variable must be pre-defined in the control.
As of this change, the CGTechVarDefMacro is not available to be added to the events.
You must pre-define the variables through the 'Control Variables…' window, and if you
want to have a value set at start of processing, you can use this new macro to do so.

ChangeSubsystemID
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
Changes the subsystem that the current controller is driving based on the input text value,
and updates all of its local axis locations. The difference between ChangeSubsystemID
and SetSubsystemID is that ChangeSubsystemID keeps the current "control" active and
just changes which subsystem is being driven. SetSubsystemID changes the active
"control" to be the one which drives the specified subsystem.

ChangeWorkCoord
Function — SHIFT OFFSETS
Status — SPECIAL
Valid Inputs — Value
Defines the current position as the specified XYZ value. This is an incremental shift from
the current working coordinate system. Any XYZ value not specified is assumed to be
zero.
All axis values are supported except for A2, B2, and C2. Only values specified on the
block will be adjusted. This macro sets Shift Offset 0. The axis values are specified with
the WorkCoord...Value macros. (Shift Offset 0, INCREMENTAL)
See "Notes about shift macros" in the Notes about Special Topics section in the CGTech
Help Library, for additional information.
ChangeWorkCoordZWTracking
Function — SHIFT OFFSETS
Status — SPECIAL
Valid Inputs — Value
When in absolute mode, it defines the current position to be the specified position. Only
those values specified will be adjusted. Z or W values honors ZW tracking. When in
incremental mode, the offset will be adjusted by the amount specified.
NOTE: The specified positions are entered using the
WorkCoord[x,y,z,a,b,c,u,v,w,a2,b2,c2]Value macros.

CheckForLooseMaterial
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On for every block after the macro is called
2 = performs a one-time check
Causes VERICUT to check for loose material that should be removed. This macro
triggers VERICUT to perform a check where the detached stock pieces should be
transferred, in the same manner as it is done in turning. If no stock component supporting
a loose piece is found, it is deleted and put into the "Unclamped Stock" component. A
value of 0 = Off, 1 = turns on the check on for every block after the macro is called, 2 =
performs a one-time check as described above. This macro only applies to milling mode.
It has no effect in turning mode.
NOTE: To enable the loose material check, Update While Simulating, in the Delete
Material window, must be toggled "On". If it is not, this macro will have no effect.
For information on the Delete Material window, see the VERICUT Help section, in the
CGTech Help Library.

CheckVolumeAboveDepthLimit
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
Value = the maximum allowable volume of material that can be removed by the
portion of the cutter above the Maximum Cut Depth
A positive value = enables this feature
A negative value or 0 = disables this feature
When this macro is called, a "special" volume removed by each cut is calculated by
VERICUT. This "special" volume is base on the material removed by the portion of the
cutter above the Maximum Cut Depth. When the "special" volume is greater than or
equal to the specified value, a Warning message is output to the Logger. Enter a positive
value, representing the maximum allowable volume in the Override Value field, to enable
this feature. Entering a negative value, or 0, in the Override Value field disables this
feature.
This feature only works for "standard" VERICUT (not FastMill). If this feature is enabled
when FastMill is active, VERICUT will internally turn off FastMill mode.
If OptiPath is turned on while this feature is enabled, the OptiPath results will be based
only on the material removed by the portion of the cutter below the Maximum Cut Depth.
Use of this macro requires the following:
1. Check Cutting Limits in the Project Tree, Setup Configure menu: Motion tab
must be toggled "on".
2. Maximum Cut Depth on the OptiPath window: Limits tab must be enabled.

CinciBlockInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Cincinnati specific macro that sets internal values used by CinciCondLeftParen,
CinciCondRightParen, CinciCondLeftBracket, and CinciCondRightBracket
conditionals (ref. Word Format window > Conditionals – listed alphabetically in the
VERICUT Help section, in the CGTech Help Library). This macro should be called along
with the standard BlockInit macro at the "Start of Block Processing" event.

CinciGotoLabelName
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text
value = label to branch to (search forward)
-value = label to branch to (search backward)
Branches to the label specified via Override Text value. If the specified label is preceded
by a "-", then this macro will search backwards from the current position for the specified
label (not including the "-"). Otherwise, it will search forward from the current position
for the specified label.
Also see: LabelMacro and GotoLabel
CinciRotateCenterCalc
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — None
Calculate the center of rotation based off of the specified center and the mode set by
CinciRotateXYZMode.

CinciRotateXYZMode
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
A Cincinnati (Acramatic 950) specific macro, that sets a parameter which indicates how
the rotation center positions should be interpreted.

Cinci_5axisToolLengthComp
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Try using standard RTCP with Contour off and With Motion on.
Valid Inputs — Value
0 = Off
1 = On
Turns On/Off a special Cincinnati form of 5-axis tool length compensation.

CircleArcAngle
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
Value = the arc angle specified as a full angle of rotation
Use to enable specifying a helical/circular motion by a full angle of rotation. For
example, the Heidenhain 530 control uses the "B5=" field to specify the arc angle as
shown below:
G01 Z9. F100
X30 Y30 F500
G2 I40 J20 K-8 B5=420
CircleARParameter
Function — CIRCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro supports the Siemens 840D AR word. It defines an angle of a circular motion
programmed in the block with circle end point or circle center point.
Examples:
G0 X67.5 Y80.211 (circle start point)
G3 X17.203 Y38.029 AR=140.134 (circle motion with end point defined)
G3 I-17.5 J-30.211 AR=140.134 (circle motion with center point defined)

CircleCenterReset
Function — CIRCLES
Status — ACTIVE
Valid Inputs — None
Resets the XYZ coordinates of the center of a circle.
NOTE: The CircleCenter[XYZ] values are assumed to be modal. This macro resets
these values.

CircleCenterX
CircleCenterY
CircleCenterZ
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the XYZ coordinates of the center of a circle, respectively. The Circles control
settings (ref. Control Settings window: Circles tab in the VERICUT Help section, in
the CGTech Help Library) determine how these values are interpreted.

CircleCenterZWTracking
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Identical to CircleCenterZ except provides additional calculations required by ZW
tracking machines.
CircleCurveFitQuadrants
Function — CURVE FIT
Status — ACTIVE
Valid Inputs — None
Specifies that circular records produced during curve fitting be broken at quadrant
boundaries.
NOTE: This macro should be used during the "Start of Processing" event. Default
when not used is OFF.

CircleDirectDrive
Function — CIRCLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Off (Default)
1 = On
Turns On and Off (default) the capability to drive the cutting motion of a circle by the
actual tessellated motions of the machine. A value of 1 turns on this feature, and a value
of 0 turns off this feature. If the circle motion for the machine does not match the circle
motion for the stock, this macro can be called with on OV=1 to directly pass the
tessellated motions to the cutting logic. If the tessellated motions equate to a circle, the
cutter logic will process the tessellated motions as 1 circular move. Otherwise, it will be
processed as a series of tessellated linear moves.
In the following instances, the circle motion for the machine may differ from the circle
motion for the stock:
• When distinguishing 0 degree vs 360 degree circles.
• When interpreting the direction of the circle in part coordinates.
• Using the LinkAxis macros where X drives Y and Y drives X, which then causes
the reversal of circle direction.
• Using the LinkFormula macro with circles.
Also see: "Notes about link macros" in the Notes about Special Topics section, in the
CGTech Help Library.

CircleIntermediatePoint
Function — CIRCLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
Text = axis point being specified (X, Y, or Z)
Value = corresponding axis value
This macro defines an intermediate point for a circle. The text value should be either X,
Y, or Z. This specifies which axis point is being specified. The numeric value should be
the corresponding axis value. The axis values are modal, and are initialized to zero at
reset and when Motion3DCircle is called.
NOTE: A new "3D_CIRCLES" value for the MOTION_TYPE state has now been
created. This can now be seen in the status window (motion type), and in the
Word/Address table (State/MOTION_TYPE menu).

CirclePresentAxis
Function — MAPPING
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
The macro turns on the feature of using the linear axes present in the circle motion block
to process the circle. This macro is typically called during the "Start of Processing" event,
and is intended for use by controls on NC machines that have colinear axes and perform
circular motions. A value of 0 turns off this feature (default), and any other value turns on
this feature. This feature, overrides the register mapping for the current block.
Examples:
G2Y1.1242X-25.7855I.1171J.7743 (circle motion performed by Y & X linear axes)
G2Y1.1242U-25.7855I.1171J.7743 (circle motion performed by Y & U linear axes)
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: AxisMappingXtoU, CyclePresentAxis, UvwAxis, PlaneAxisMapping, Register
Mapping, UvwAxis and XyzAxis.

CircleRadius
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the radius of a circle. A negative value specifies that an arc of at least 180 degrees
should be generated.
CircleRadiusLarge
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the radius of a circle such that an arc of at least 180 degrees will be generated. The
input value is sign independent.

ClampCompName
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Text = name of clamp component
Specifies the name of a clamp component. This macro is typically used to clamp parts
during pick-off spindle operations.
Also see: ClampOnOff

ClampOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
Specifies the state of the clamp specified with ClampCompName. A value of 0 is Off, a
value of 1 is On. This macro is typically used to clamp parts during pick-off spindle
operations.
In general, at the end of ProcessMotion, VERICUT checks to see if there was a change in
clamp state (On/Off). If there was, all stock components are examined. If the stock's
parent fixture is still "clamp on", VERICUT does nothing. If the stock's parent fixture is
"clamp off", VERICUT checks to see if there is any other fixture component whose
boundaries overlap the cut stock and whose state is "clamp on". If so, and the new fixture
component contains a stock component, then the cut stock will be transferred to the new
stock component. If there is nothing holding the stock anymore, it is dropped into the
chip pan ("Unclamped Stock" component).
If ClampOnOff changes from 0 to 1 for the Fixture specified by ClampCompName,
VERICUT checks the bounds of all "cut stock" models on the active subsystem. If any
are inside the bounds of the models in the Fixture Component, the Fixture "clamps" the
"cut stock". However, the "cut stock" does not transfer to the new Stock Component, yet.
If ClampOnOff state changes from 1 to 0 for the Fixture Component specified in
ClampCompName, the "cut stock" model is released from that Fixture. If the "cut stock"
is also clamped by another Fixture, then the cut stock is transferred to the Stock
Component attached to the clamped Fixture Component. If it is not clamped by any other
Fixture, it disappears, falls in the chip pan, flies through the window, etc. Actually it is
dropped into the "Unclamped Stock" component. This component is automatically
created.
If in turning mode and the "cut stock" is separated into two pieces, each piece is checked
for a clamped condition. If each piece is clamped by a different Fixture, then the stock is
separated into 2 "cut stock" models, one in the Stock component attached to each
clamping Fixture. Thus you end-up with a "cut stock" model in the original Stock
component, and a "cut stock" model in the another Stock component. If either piece is
"floating" in the air when separated, they drop into the chip pan (aka Unclamped Stock).
NOTE: Clamp macros do not change the component connections. They just move the
"cut stock".

CollisionCheckOnOff
Function — MISCELLANEOUS
Status — SPECIAL
Valid Inputs — Value
0 = Off
1 = On
This macro allows machine simulation collision checking to be temporarily suspended
and restarted. The CollisionCheckOnOff macro is ignored when Collision Detection
(ref. Machine Settings window: Collision Detect tab in the VERICUT Help section, in
the CGTech Help Library) is toggled "Off". Machine simulation collision checking is
turned "Off" when used with a value of "0", and "On" when used with a value of "1".

CollisionDiagonalSize
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Off
Any other value = distance representing "large" diagonal move (Default is 1 inch,
or 25 mm on at least 2 axes)
For performance reasons, a diagonal collision check logic has been added. This logic can
make collision checking for large diagonal moves much more efficient. In theory, it could
slow down some jobs. To disable this performance feature, call this macro with a value of
zero.
This macro can also be used to adjust what is a "large" diagonal move. The default is a
move of at least 1 inch or 25 mm on at least 2 axes.
CollisionOnCutPart
Function — MISCELLANEOUS
Status — NOT RECOMMENDED
Comment— It is not recommended that this feature be turned off.
Valid Inputs — Value
0 = turn collision checking Off
1 = turn collision checking On
Controls when collisions between machine components and the cut model are checked
for. By default, collisions are detected when collision checking is turned on between the
Stock and machine components. Collision checking can be turned off via calling this
macro with a value of "0", while "1" turns collision checking on again.

CollisionPreCheckOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
0 = Off (Default)
1 = On
The CollisionPreCheckOnOff macro enables you to run a quick collision check using
automatically created simplified primitives. If no potential collisions are found using the
simplified primitives, then collision checking is finished. In these situations, collision
checking can be completed considerably faster than running the collision check with the
original primitives.
If the pre-check using the simplified primitives finds potential collisions, then VERICUT
re-runs collision checking using the original primitives. In these situations, collision
checking will take slightly longer than just running the collision check using the original
primitives due to the two step process.
If you find that a particular job takes an extremely long time doing collision checking,
you could try turning the pre-check "On" and possibly reduce the time it takes to
complete collision checking by determining that there are no collisions using the
simplified primitives.

CollisionSpecialComp
Function — MISCELLANEOUS
Status — SPECIAL
Valid Inputs — Text, Value
Turns on/off special collision processing for the named component. This routine should
only turn on special processing if the component contains a large number of triangles and
if rotations are involved, and there are other components which typically come close to
this component, but stays outside of its bounding box.
NOTE: In general, this macro should not be called. It should only be called to
overcome a collision performance issue related to the scenario described above. This
macro was created for the very special case described. In these types of cases using this
macro could improve performance. In most cases, general use of this macro will cause
degradation in performance.

CompositeValue
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text, Value
Text = composite format: variables to which the individual components are
assigned
Value = the composite value
Use this macro to breakdown a composite value into its individual components, and store
each component in the variable specified. The text value contains the composite format
(for example: 2 3*.2), followed by a ':', followed by a series of variable names (up to 10)
indicating where to store the individual components. All arguments are separated by
spaces.
If the breakdown of the composite value does not result in an individual component for a
specific variable, then that variable will be set to zero as shown in EXAMPLE 2 below.
EXAMPLE 1:
Override Value = 1234567.89
Override Text = 2 3*.2 : VAR1 VAR2 VAR3 VAR4 (Note the space between the 2
and the 3)

2 3*.2 : VAR1 VAR2 VAR3 VAR4 is interpreted as:


Put the first 2 characters of the composite value (12) in VAR1.
Put the next 3 characters of the composite value (345) in VAR2.
Put all remaining characters up to the decimal point (67) in VAR3.
Put the characters after the decimal point, in this case up to 2 (89) in VAR4.

The variables would be set as follows:


VAR1 = 12
VAR2 = 345
VAR3 = 67
VAR4 = 89

EXAMPLE 2:
Override Value = 12.1
Override Text = 2 3*.2 : VAR1 VAR2 VAR3 VAR4

2 3*.2 : VAR1 VAR2 VAR3 VAR4 is interpreted as:


Put the first 2 characters of the composite value (12) in VAR1.
Put the next 3 characters of the composite value (none) in VAR2.
Put all remaining characters up to the decimal point (none) in VAR3.
Put the characters after the decimal point, in this case up to 2 (1) in VAR4.

The variables would be set as follows:


VAR1 = 12
VAR2 = 0
VAR3 = 0
VAR4 = 1

CompToCompOffset
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text Input format:
comp_name1 comp_name2 X_var_name Y_var_name Z_var_name INITIAL (or
CURRENT)
where
comp_name1 = the name of the first machine component
comp_name2 = the name of the second machine component
X_var_name = the name of the variable to receive the X component of the offsert
vector
Y_var_name = the name of the variable to receive the Y component of the offsert
vector
Z_var_name = the name of the variable to receive the Z component of the offsert
vector
INITIAL = calculate the offset vector at the machine's initial zero position.
CURRENT = calculate the offset vector at the current machine position at the
time this macro is executed
This macro is used to obtain an offset vector between any two components of the
machine. The vector can be obtained at either the initial zero position of the machine, or
at the position of the machine at the time when the macro is called.
The Override Text field is used to specify component names, assign variables to receive
the X,Y and Z components of the offset vector and the optional word INITIAL, or
CURRENT. When INITIAL is specified the offset vector is calculated for machine in
initial zero position. When the CURRENT option is specified, the offset vector is
calculated at the current position of the machine when the macro is executed.
An error message is issued if any of the specified components are not present in the
current machine structure. The variables are created at the time of macro call if they do
not already exist. The variable type for existing variables must be defined as NUMBER.
Array variables are not supported.

ComputerRoundoffAdjOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added V7.1.4
Valid Inputs — Value
0 = turn off round off adjustment.
1 = turn on round off adjustment. (Default)
Turns on/off the computer roundoff adjustment.
On a computer, 5.5 * 5.1 = 28.049999999999997. When it is really equal to 28.05. The
difference is so small that is usually doesn't matter unless you are doing something like
EQ or LT, or ROUND, or ...
With the computer roundoff adjustment turned "on", 28.049999999999997 will behave
the same as 28.05 for logicals like: EQ, LT, GT, LE, GE, NE and for functions like:
AbsCeil, Ceil, DFix, DFup, DRound, Floor, IntTrunc, IntTruncAdj, Round, and
Fractional. A value of 1, the default, turns on the adjustment. A value of 0 turns off the
adjustment.

ConditionalEndOfBlock
Function — BRANCHING
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — None
If the previous conditional was true, this macro will cause nothing further to be processed
on this block. If the previous condition was false, it resets the condition to true, and
continues processing the block.
For example:
!IFR<49.5;EB!IFR>50.5;EB!GON20!
EB would call the ConditionalEndOfBlock macro.

ConnectCompName
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Text = component name
Used with ConnectToCompName to dynamically connect two components within the
Component Tree. Use ConnectCompName to specify the component to be connected.
Everything under the component in the component tree goes with it.

ConnectToCompName
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Text = component name
Connects the component specified with the ConnectCompName macro to the component
specified by the ConnectToCompName macro. It can be any type of component.
Everything under the "ConnectCompName" component in the component tree comes
with it.
NOTE: Connect macros only move components around. They do not change the models
in the components.
Example:
To have "M10" connect a component named "Stock" to a "U" axis component, use
the Configuration menu > Word/Address function to define 2 groups as follows:
Word=M Range=10, Macroname=ConnectCompName, Override Text=Stock
Word=M Range=10, Macroname=ConnectToCompName, Override Text=U
For more information, see Word Address window, in the VERICUT Help section, in the
CGTech Help Library.

ConstantSurfaceSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Sets the Constant Surface Speed. If in Inch mode, the input is expected to be in Feet per
Minute, and will be converted into Inches per Minute (multiplied by 12). If in Metric
mode, the input is expected to be in Meters per Minute, and will be converted into
Millimeters per Minute (multiplied by 1000).

ConstantSurfaceSpeedMode
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
Sets the current mode to Constant Surface Speed.
ConversionFinish
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Default event macro for the "End of Processing" event. Typically, added event macros
should be placed before this macro.

ConversionInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Default event macro for the "Start of Processing" event. Typically, added event macros
should be placed after this macro.

ConvertArrayIndex
Function — EVENTS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
0 = do not apply the AXIS variable conversion
1 = apply the AXIS variable conversion to index (default)
This macro is used to enable/disable the conversion of the array index, specified as AXIS
variable, or the constant in the argument string specified with the SetDynamicVars
macro. If this macro is not used, or called with value of 1, all array references in
argument string are decoded when the AXIS variable/constant is used. If a value of 0 is
specified, the old parsing logic is used where the array element can only be referenced by
numerical index.
Also see: SetDynamicVars

CoolantFlood
Function — COOLANT
Status — ACTIVE
Valid Inputs — None
Sets the coolant type to "Flood" and outputs an APT "COOLNT/FLOOD" statement.
CoolantMist
Function — COOLANT
Status — ACTIVE
Valid Inputs — None
Sets the coolant type to "Mist" and outputs the APT "COOLNT/MIST" statement.

CoolantOff
Function — COOLANT
Status — ACTIVE
Valid Inputs — None
Turns off the coolant and outputs the APT "COOLNT/OFF"statement.

CoolantOn
Function — COOLANT
Status — ACTIVE
Valid Inputs — None
Turns on the coolant and outputs the APT "COOLNT/ON" statement.

CornerMode
Function — CHAMFER / ROUND
Status — ACTIVE
Valid Inputs — Value
0 = NONE
1 = CHAMFER
2 = RADIUS
3 = CHAMFER (Alternate meaning of CornerValue)
Use this macro to define the type of "auto-corner" to be generated, if any.
The auto-corner capability uses "look ahead" logic for both CHAMFER and RADIUS.
The resulting values are then passed on to cutter compensation logic. Corner RADIUS is
only supported in the XY, YZ, or ZX planes. If the specified corner can not be achieved,
a warning message is given and auto-cornering is ignored for that corner.
The size of the Chamfer or Corner Radius is specified with the CornerValue macro.
With Mode 1, CornerValue specifies the width of the chamfer in the direction of motion.
With Mode 3, CornerValue specifies the length of the chamfer.
For example (from WFL and Siemens 840D documentation), a chamfer specified with
CHR would use CornerMode OV=1. A chamfer specified with CHF would use
CornerMode OV= 3.
CornerValue
Function — CHAMFER / ROUND
Status — ACTIVE
Valid Inputs — Value
When in CHAMFER mode, this macro defines the length from the programmed corner to
the point at which the chamfer is to begin. In RADIUS mode, this defines the radius to be
used in the corner. The start and end points of the arc will be calculated such that the arc
is tangent to the cut coming into and out of the arc. In both cases, the original corner (as
defined in the tool path) must be defined with two line segments.

CoupleAxisOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Text = name of master component
CoupleAxisOff cancels the coupling affect for the specified master component. This
macro is passed the master component name as the text value. After turning the coupling
off, the subsystem that was in a wait state while its corresponding components were
being moved, should then call macro UpdateAxisValues.

CoupleAxisOn
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Text = "X1 X2" (where X1 is the name of the master component and X2 is the
name of the slave compoment)
CoupleAxisOn, CoupleAxisOff are used to control "coupling" of two motion axes,
where commands to drive one axis, drives both axes.
CoupleAxisOn is passed a value in the form: "X1 X2". The first argument in the name of
the master component, the second argument is the name of the slave component. After
this call is made, any time the master component moves the corresponding delta
movement will be applied to the slave. At this point, the feature is very limited. A master
can have only one slave. This feature is currently only implemented for linear motions.
Unpredictable results may occur if circle records are processed while in this mode.

CurveFitOnOff
Function — CURVE FIT
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
Curve fitting can be selectively turned on and off by embedded comments in the G-Code
file being processed. The embedded comments must contain the exact text "TURN
CURVE FIT ON" and "TURN CURVE FIT OFF".
This macro can also be used to toggle curve fitting on/off. A value of "1" turns curve
fitting ON and a value of "0" turns curve fitting Off.
To use this macro, the text of two unique comments must be defined as a control words.
The CurveFitOnOff macro with an override is associated with the ON and OFF
message. CurveFitOnOff is ignored when curve fitting is not active (ref. to NC
Program Curve Fitting Control window in the VERICUT Help section, in the CGTech
Help Library).

Cut3dcMode
Function — CUTTER COMPENSATION
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
1 = On
0 = Off
This macro is used to turn "on", and "off", 3D cutter compensation logic to support the
CUT3DC command in Siemens 840D controllers. The 3D cutter compensation mode is
activated by calling this macro with Override Value =1. The 3D CUTCOM state is modal
(it is NOT cancelled by the CutterCompOff macro) . It can only be cancelled by calling
this macro with an Override Value = 0.
As currently implemented, the 3D logic rides on top of of the 2D logic: to calculate
CUTCOM offsets, the motion plane is internally changed to the tool axis plane, in which
a left or right offset is performed. Circular motions work if the tool axis is perpendicular
to the circle plane, otherwise an error is output.

CutterComp3d
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
0 = 3D compensation where a vector defines the direction of the offset (Default)
1 = 3D compensation without a vector
Turns on 3-D Cutter Compensation. Use an Override Value of "0" to specify that a vector
is used to define the direction of the offset. This is the Default. Use an Override Value of
"1" to specify that a vector is not used to specify the direction of the offset.
Also see: Tool3dXOffset, Tool3dYOffset, Tool3dZOffset, Unitize3DVector,
CutterCompOff

CutterCompDoubleLong
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Increases the movement amount by twice the tool offset value. The offset will be applied
to each axis in which there is movement. (not modal)
Also see: ShortLongOffsetReset

CutterCompDoubleShort
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Decreases the movement amount by twice the tool offset value. The offset will be applied
to each axis in which there is movement. (not modal)
Also see: ShortLongOffsetReset

CutterCompLeft
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Sets the cutter compensation to be Left.
Also see: CutterCompRight and CutterCompOff
CutterCompLong
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Increases the movement amount by the tool offset value. The offset will be applied to
each axis in which there is movement. (not modal)
Also see: ShortLongOffsetReset

CutterCompNoIntersect
Function — CUTTER COMPENSATION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — None
This macro turns off the intersection logic between the current motion and the next
motion.
Typically within the cutter compensation logic, we apply the cutter compensation, and
then look for the intersection between the current compensated motion and the next
compensated motion. Looking ahead for an intersection allows us to stop short on an
inside wall. This macro turns off the intersection logic for the current motion. This macro
was originally implemented for the G46 feature on a Delta Tau control

CutterCompOff
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Turns off the cutter compensation.
Also see: CutterCompRight, CutterCompLeft and CutterComp3d

CutterCompOffHold
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
0 = process G40 command with or without motion on line.
1 = process G40 command with motion on line immediately or hold G40
command until line with motion is encountered.
CutterCompOffLookAheadX
CutterCompOffLookAheadY
CutterCompOffLookAheadZ
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
Specify where the next XYZ point is on the part (not the next GOTO point). These
macros are called while ramping off of cutter compensation. These values are used to
avoid gouging the part while ramping off. Look ahead cutter compensation will use these
values to determine if the previous compensated point needs to be adjusted.

CutterCompOffsetValue
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
value = index into Cutter Compensation table
Uses the passed in numeric value as an index into the Cutter Compensation table (see
the Tables for Processing G-Codes section, in the CGTech Help Library). The
corresponding value (singular) is used when processing CDC short/long commands (e.g.
G45-G48). For this macro to work, the G45-G48 word/value pairs must be found in the
control configuration ahead of the XYZ registers. For example, try defining these
word/addresses in the "States" supergroup.

CutterCompOnOffSwitches
Function — CUTTER COMPENSATION
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Text, Value
This macro is used to set the flags which determine how to process the turning on and
turning off of Cutter Compensation.
Text: Specifies which flag (scenario) to set. Valid Options are:
1= Turning on Cutter Compensation with motion within the plane
2 = Turning on Cutter Compensation with no motion
3 = Turning on Cutter Compensation with the only motion being outside of the
plane
11 = Turning off Cutter Compensation
Value: Specifies the option you want for a specific scenario as defined by the Text
argument. The valid options are specific to the specific scenario selected.
Valid Options are:
Text = 1 Value = 1 Ramp On
Value = 2 Immediate
Text = 2 Value = 1 Ramp On with Active Plane Motion
Value = 2 Immediate
Value = 3 Ramp on with Any Motion
Text = 3 Value = 1 Ramp On with Active Plane Motion
Value = 2 Immediate
Value = 3 Ramp On with Any Motion
Text = 11 Value = 1 Adjust the input coordinates to match the physical location
of the tool.
Value = 2 Do not Adjust the input coordinates to match the physical
location of the tool

CutterCompRight
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Sets the cutter compensation to be Right.
Also see: CutterCompLeft and CutterCompOff

CutterCompShort
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Decreases the movement amount by the tool offset value. The offset will be applied to
each axis in which there is movement. (not modal)
Also see: ShortLongOffsetReset

CutterCompSuspend
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Temporarily suspends radius compensation for one block. It must be called with Process
after Motion toggled "On" (ref. Add/Modify Word/Address window in the VERICUT
Help section, in the CGTech Help Library). This macro was implemented to support the
Heidenhain M98 open contours function, but might have other applications.
CutterCompToolNum
Function — CUTTER COMPENSATION
Status — OBSOLETE
Comment — Use ToolCutterComp
Valid Inputs — None
Uses the current tool number to index into the Cutter Compensation table (ref. Cutter
Compensation table in the Tables for Processing G-Codes section, in the CGTech Help
Library). The corresponding value is used as the compensation amount when CDC is
turned on.
NOTE: The current tool number refers to the tool number that is specified in the NC
program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the Tool Library
file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help Library)
which is a string.

CutterCompToolNumSubValue
Function — CUTTER COMPENSATION
Status — OBSOLETE
Comment — Use ToolCutterComp
Valid Inputs — Value
Uses the current tool number and the specified SubValue (SubRegister) to index into the
Cutter Compensation table (ref. Cutter Compensation table in the Tables for
Processing G-Codes section, in the CGTech Help Library). The corresponding value is
used as the compensation value when CDC is turned on.
NOTE: The current tool number refers to the tool number that is specified in the NC
program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the Tool Library
file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help Library)
which is a string.

CutterCompValue
Function — CUTTER COMPENSATION
Status — OBSOLETE
Comment — Use ToolCutterComp
Valid Inputs — Value
Uses the passed in numeric value as an index into the Cutter Compensation table (ref.
Cutter Compensation table in the Tables for Processing G-Codes section, in the
CGTech Help Library). The corresponding value (singular) is used when in cutter
compensation mode (e.g. G41, G42).
CutterCompValueCombo
Function — CUTTER COMPENSATION
Status — ALTERNATE
Comments — Added V7.1.3
Originally intended for just the NUM controller
Valid Inputs — Value
Uses the numeric value that is passed in as an index into the Cutter Compensation table
(ref. Cutter Compensation Table in the Tables for Processing G-Codes section, in the
CGTech Help Library). The values for SubRegister 1 and 2 will be added together and
the total will be used when in cutter compensation mode (e.g. G51, G42).
NOTE: This macro only references the Cutter Compensation table, and does not
reference the TLS file. Therefore, this macro, although new, is seen as OBSOLETE
except for the NUM control.

CutterCompValueDirect
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
Value = cutter compensation value
Sets the cutter compensation value to the input value. The specified value is used as the
compensation amount when CDC is turned on.

CutWire
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — None
Cut/remove the EDM wire. This will output a "LOADTL/0" statement.

CycleAxis
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
X = X axis
Y = Y axis
Z = Z axis
U = U axis
V = V axis
W = W axis
This macro tells the cycle logic which axis to use when in a specific motion plane.
Use X, or U, when in the YZ plane.
Use Y, or V, when in the ZX plane.
Use Z, or W, when in the XY plane.
Other macros which sets these same flags include:
Cycle commands (CyclesDrill, ...) - initializes flags to use X and Y
XAxisMotion (resets Z flag if depth is being set)
YAxisMotion (resets Z flag if depth is being set)
ZAxisMotion (resets Z flag if depth is being set)
PolarXValue (resets Z flag if depth is being set)
PolarYValue (resets Z flag if depth is being set)
PolarZValue (resets Z flag if depth is being set)
UAxisMotion (cycles on and present axis on for X flag, also resets Z flag)
VAxisMotion (cycles on and present axis on for Y flag, also resets Z flag)
WAxisMotion
CycleRapidLevelZeroTracking
CycleBoreShiftFlags
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
The boring cycles support 5 areas in which a shift may occur.
These are:
Value 1 Value 2 Value 3 Value 4 Value 5

Prior to After After moving to After moving After moving


beginning the moving to the "bottom" back to the R back to the
drill cycle the R plane position plane retract position

This macro is passed 5 values (each representing one of the possible shift areas as
indicated above), separated by blank spaces, in the Override Text field. These 5 values
specify whether a shift should occur, and the direction of the shift.
0 = No Shift
1 = Shift Positive Direction
-1 = Shift Negative Direction
For a simple boring cycle, the Override Text value might look like: 0 0 -1 0 1
For a back boring cycle, the Override Text value might look like: -1 1 -1 0 1
This macro is only applicable to the CyclesBore, CyclesBoreDag, and CyclesBoreOrient
macros.
CycleBoreShiftValue
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Value = length of the shift
This macro is passed a positive value corresponding to the length of the shift that should
be applied during boring cycles. This shift will occur along the tools X axis (as defined in
Tool Manager prior to any orientation matrix).
This macro is only applicable to the CyclesBore, CyclesBoreDag, and CyclesBoreOrient
macros.

CycleBoreSpindleOnOffFlags
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
This command specifies the spindle condition in 10 different positions. The positions are:
either side of the shifts defined in the CycleBoreShiftFlags macro.
For a simple boring cycle, the Override Text value might look like: 1 1 1 1 0 0 0 0 0 1
NOTE: This command will turn on and off the spindle that has been set with the
SpindleCompName macro.
This macro is only applicable to the CyclesBore, CyclesBoreDag, and CyclesBoreOrient
macros.

CycleClearanceDistance
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Value = clearance distance
Sets the cycle clearance distance. This overrides the default control setting.

CycleDepth
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the Cycle Depth value.
CycleDepthInv
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
If the Cycle Depth is to be interpreted as an absolute value, the Cycle Depth value is set
to the input value. If the Cycle Depth is to be interpreted as an incremental value, the
Cycle Depth value is set to the negated input value.

CycleDepthType
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = Absolute value
2 = Incremental value
3 = G-Code dependent
Specifies how the Cycle Depth is to be interpreted.

CycleDwellTime
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the dwell time for a cycle. Dwell time is measure in revolutions or seconds
(dependent on the feed mode).

CycleIgnore
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets a flag which causes the cycle to not be executed on the current block.

CycleIncDepthType
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = Relative to the Rapid Level
2 = Relative to the Initial Level
3 = Relative to the Part Surface
Sets how an incremental Cycle Depth value is to be interpreted.
CycleFeedCheckOnOff
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Value
0 = turn error message Off
1 = turn error message On (Default)
Internally VERICUT converts the cycle parameters into distance to "RAPID TO" and
distance to "FEED TO", measured from the part surface, and measured along the Tool's Z
axis. If the "FEED TO" value is larger then the "RAPID TO" value, and this is not a back
boring operation, then VERICUT reports an error. This macro is used to turn this error
message on and off.
A value of zero turns the error message "off", and a value of 1 turns the error message
"on". The default is on.
NOTE: This error should only be turned off in very rare situations.

CycleIncRapidType
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = Relative to the Rapid Level
2 = Relative to the Initial Level
3 = Relative to the Part Surface
Sets how an incremental Cycle Rapid value is to be interpreted.

CycleInitialOnMotion
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = FALSE (Default)
1 = TRUE
Specifies whether the cycle "Initial Point" should be initialized on each motion.
CycleMillCenterAbscissa
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Center abscissa (the component of the point along the horizontal axis) for milled threads
in the active motion plane.

CycleMillCenterOrdinate
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Center ordinate (the component of the point along the vertical axis) for milled threads in
the active motion plane.

CycleMillPocketAngle
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the rotation angle in degrees with respect to the positive X-axis for a rectangular
pocket.
CycleMillPocketBottomAllowance
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the amount of bottom stock to remain after roughing motions. The remaining bottom
stock is removed during finishing motions.
Also see: CycleMillPocketSideAllowance

CycleMillPocketBottomZ
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the depth for the pocket specified by a Z-axis position.
CycleMillPocketBoundarySub
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Sets the subroutine number used to define the pocket's boundary. The macro
CycleMillPocketType must be used with an Override Value of 2 when a subroutine
defines the pocket boundary.

CycleMillPocketCenterX
CycleMillPocketCenterY
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the center (or drill hole) location for a rectangular or circular milled pocket.
NOTE: Controls that use the current tool location for the pockets center do not need to
reference these macros.

CycleMillPocketCornerRadius
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the corner radius for a rectangular pocket and the major radius for a circular pocket.
Default is tool radius.

CycleMillPocketCutDirection
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Sets the cut direction for conventional or climb milling. Also sets cut direction for
circular pockets to CLW or CCLW. An Override Value of 0, or 2, selects a
conventional, or CLW, direction. An Override Value of 1, or 3, selects a climb, or
CCLW, direction. Some controls use the sign of the stepover to define the cutting
direction. For these controls, use an Override Text of SIGN to set the direction as CLW
when the value is positive and CCLW when the value is negative.
CycleMillPocketCutType
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = a lacing pattern (climb and conventional)
1 = single direction conventional cuts with retracts between cuts
2 = a lacing pattern with finish cuts
3 = an inside-out pattern
4 = finish bottom and sides (no roughing).
Sets the type of motions for the pocket.
NOTE: Use macro SiemensCycleMillPocketCutType for Siemens controls.

CycleMillPocketDepth
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the relative depth for the pocket from top of the stock to bottom of the pocket.

CycleMillPocketFinishFeed
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the cutting feedrate for finishing pocket motions. Default is 1/2 of the roughing
feedrate.

CycleMillPocketFinishStepover
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the X or Y in-feed between finishing pocket cuts.

CycleMillPocketInsideRadius
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets an inside radius for circular pockets when a pre-drilled hole at the pocket center is
used. Default is zero.
CycleMillPocketLength
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the length along the X-axis for a rectangular milled pocket.

CycleMillPocketMaxCutDepth
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the maximum in-feed depth for each pocket level until final pocket depth is reached.

CycleMillPocketPlungeFeed
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the in-feed feedrate along the Z-axis for plunging into the material.

CycleMillPocketRefPlane
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the absolute Z-axis position for the top of the pocket stock.

CycleMillPocketRetractPlane
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the absolute Z-axis position where cycle motions will start and end.

CycleMillPocketRoughFeed
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the cutting feedrate for roughing pocket motions. Defaults to last feedrate in effect
when cycle is called.
CycleMillPocketSafeDistance
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the distance above the pocket stock to the retract plane.

CycleMillPocketSideAllowance
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the amount of side stock to remain after roughing motions. The remaining side stock
is removed during finishing motions.
Also see: CycleMillPocketBottomAllowance

CycleMillPocketSpeed
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the spindle speed used with the pocket cutting motions.

CycleMillPocketStepover
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Sets the X or Y in-feed between roughing pocket cuts. When used with an Override Text
value of PERCENT, the value passed is defined as a percent of the tool diameter and the
step-over is calculated as a percentage of the current tool diameter. Use an Override
Text value of X, or Y, with the HAAS control to define the cut stroking direction.

CycleMillPocketType
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
0 = rectangular,
1 = circular
2 = boundary is defined in a subroutine.
3 = circular with support for cutter compensation.
Selects the type of pocket and processes the cutting motions.
The CycleMillPocketType macro must be called after all other pocket parameter macros
have been called. The HAAS control uses a subroutine to define the pocket boundary.
Use an Override Value of 2 for the HAAS control.
Use an Override Value of 3 for controls where the circular pocket cycle does not
automatically compensate for the cutter radius value, the final diameter is adjusted by the
active Cutter Compensation value.
Use an Override Text value of "AS_COMMANDED" to execute the pockets from a
"CALL CYCL" command. The default for the CycleMillPocketType macro is to execute
the pocket when this macro is processed. When the override is present, the cycles are
later executed AS_COMMANDED.
See "Notes about simulating Heidenhain SL pocket cycles" in the Notes about Special
Topics section, in the VERICUT Help Library, for additional information.

CycleMillPocketWidth
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the width along the Y-axis for a rectangular milled pocket.

CycleMillThread
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
0 = Female Thread (hole/inside)
1 = Male Thread (post/outside)
Activates thread milling cycle. Must be called after all parameters are set or with the after
motion option.

CycleMillThreadDir
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
2 = Clockwise (Default)
3 = Counterclockwise
Direction for milled threads. Value is 2 for CW or 3 for CCLW (defaults to 2 if not
specified).
CycleMillThreadFeed
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Feedrate for milled threads.

CycleMillThreadID
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Nominal inside diameter of the thread. (See Siemens 840D CYCLE90 documentation)

CycleMillThreadOD
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Nominal outside diameter of the thread. (See Siemens 840D CYCLE90 documentation)

CycleMillThreadPitch
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Sets milled thread pitch.

CycleMillThreadToolTeeth
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Sets milled thread count of teeth on tool. Some tools cut several threads per revolution.
This count allows cycle to adjust the depth accordingly.
CycleMotionPlaneCheckOnOff
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
This macro turns on and off the error checking of the tool axis being along the Z-axis of
the local plane when a cycle is executed.
NOTE: Not all controls require this. Therefore, this error checking must be turned on.
By default, it is off.

CyclePresentAxis
Function — MAPPING
Status — ACTIVE
Valid Inputs — Value
0 = Off
Any other value = On
The CyclePresentAxis macro is similar to the CirclePresentAxis macro. This macro sets
a flag which specifies whether or not to use the axis present on the cycle command as the
motion axis.
If set to 0 (the default), the current register mapping will be used (with the exception of
ZW tracking). The tracking, whether the U or V axis is present for the cycle, is initialized
to not-present during reset and whenever a cycle command is specified. If set to anything
other then 0, the axis present on the cycle command will be used for initial point, part
surface calculations, square off, and pecking motions.
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: AxisMappingXtoU, CirclePresentAxis, PlaneAxisMapping, Register Mapping,
UvwAxis and XyzAxis.

CycleRapidLevelInitial
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Similar to CycleRapidLevelValue, except that the value is specified by the current X, Y,
or Z axis value, depending on the current plane.
CycleRapidLevelInv
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Similar to CycleRapidLevelValue, except that the value is negated if the rapid value is to
be interpreted as incremental.

CycleRapidLevelKeep
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
This macro is called to apply the cycle rapid level instated via the CycleRapidLevelValue
macro to cycles executed on command. This macro must be called during initialization
("Start of Processing" event).

CycleRapidLevelValue
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the R point level.

CycleRapidLevelValueMult
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Similar to CycleRapidLevelValue, except that the incoming value will be multiplied by
the X/Y/Z multiplier, depending on the current G17, 18, 19 state.

CycleRapidLevelZeroTracking
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Similar to CycleRapidLevelValue, except that it applies to zero-tracking machines.
CycleRapidType
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = Absolute value
2 = Incremental value
3 = G-Code dependent
Specifies how the Cycle Rapid value is to be interpreted.

CycleRetractInitial
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the retract level position based of the current X, Y, or Z position (depending on the
current plane).

CycleRetraction
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Set the Cycle Retract value. This is typically used when the retract level is an incremental
distance from the clearance plane.

CycleRetractSpecifiedpoint
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the retract level position to be the specified value, independent of the current plane.

CycleRetractSpecifiedZT
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Similar to CycleRetractSpecifiedpoint, except that it applies to zero-tracking machines.
CyclesBore
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the drill cycle type to Bore.
Also see: CycleBoreShiftFlags, CycleBoreShiftValue, and CycleBoreSpindleOnOffFlags
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesBoreDrag
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the drill cycle type to Bore Drag.
Also see: CycleBoreShiftFlags, CycleBoreShiftValue, and CycleBoreSpindleOnOffFlags
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesBoreOrient
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the drill cycle type to Bore Orient.
Also see: CycleBoreShiftFlags, CycleBoreShiftValue, and CycleBoreSpindleOnOffFlags
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesCancel
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Use this macro to cancel the cycle mode.
CyclesDeep
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the drill cycle type to Deep. A deep (or peck) drill cycle moves at
feed the step distance (CycleStepValue) then retracts the step up distance
(CycleStepUpValue). This is repeated until the hole depth is reached. If no step up
distance is specified, the retract goes to the Rapid Level.
Also see: CycleStepValue and CycleStepUpValue
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesDrill
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the drill cycle type to Drill.
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesExecute
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Executes a single cycle (MAHO) based on cycle parameters that were set by data in
preceding blocks. Requires the Cycle Execute=As Commanded cycle setting (ref.
Control Settings window: Cycles tab in the VERICUT Help section, in the CGTech
Help Library).
NOTE: If a value of 1 is passed to the macro, it will interpret the non-plane axis as
modal. This means, if you are in the XY plane, and Z is not specified on the current
block, then it will use the Z value from the last time CyclesExecute was called.

CyclesExecuteModal
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Toggles the Cycle Execute control setting (ref. Control Settings window: Cycles tab in
the VERICUT Help section, in the CGTech Help Library.) and allows the square-off
motions to adjust the cycle part surface correctly before positioning to the X-Y cycle
point. When called with an Override Value of "0" and "Process After Motion" toggled
"Off" (ref. Add/Modify Word/Address window in the VERICUT Help section, in the
CGTech Help Library), the system uses square-off motions to move to the cycle position.
After the cycle is executed the Cycle Execute control setting should be reset by calling
CyclesExecuteModal a second time with an Override Value of "1" and "Process After
Motion" toggled "On" (ref. Add/Modify Word/Address window in the VERICUT Help
section, in the CGTech Help Library).
NOTE: If X, Y or Z movement is not part of the block, the system automatically
executes the CyclesExecute macro instead.

CyclesExecuteOnMotionOnOff
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = "As Commanded" mode
1 = "On Motion" mode
Toggles the Cycle Execute control setting (ref. Control Settings window: Cycles tab in
the VERICUT Help section, in the CGTech Help Library) between "As Commanded" and
"On Motion".
When called with an value of "0" the system is set to "As Commanded" mode, and when
called with a value of "1" the system is set to "On Motion" mode. This macro allows the
Cycle Execute mode to be changed for all future blocks until changed again or the job is
reset.
NOTE: The CyclesExecuteModal macro also toggles the Cycle Execute control
setting, but was designed for use with a single block.

CyclesFace
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the drill cycle type to Face.
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesMill
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the cycle type to Mill.
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesTap
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this macro to set the cycle type to Tap.
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CycleStepMode
Function — DRILL CYCLE
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = Calculate drilling steps from the current Rapid Level
1 = Calculate drilling steps from the current Part Surface Level
Use to specify how the CycleStepValue parameter is to be interpreted. An Override
Value of "0" causes VERICUT to calculate drilling steps from the current Rapid Level.
An Override Value of "1" causes VERICUT to calculate drilling steps from the current
Part Surface Level.

CycleStepUpMode
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = Chip Removal mode (default)
1 = Chip Breaking mode
Use to specify how the CycleStepUpValue parameter is to be interpreted. Using an
Override Value of "0" specifies that the CycleStepUpValue parameter is in Chip
Removal mode.Chip Removal mode (corresponds to Fanuc G83): after each drilling
(pecking) step retracts are made all the way to the rapid-to plane, followed by a rapid
repositioning to the step-up level over the current bottom. Using an Override Value of
"1" specifies that the CycleStepUpValue parameter is in Chip Breaking mode. Chip
Breaking (corresponds to Fanuc G73): after each drilling (pecking) step retracts are
made by the step-up level over the current bottom.
CycleStepUpValue
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Use this macro to specify the cycle step up value. The cycle step up value defines the step
up distance used when in drill cycle "Deep" (aka. peck drilling) mode.
Also see: CyclesDeep and CycleStepValue
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CycleStepValue
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Use this macro to specify the cycle step down value. The cycle step up value defines the
step down distance used when in drill cycle "Deep" (aka. peck drilling) mode.
Also see: CyclesDeep and CycleStepUpValue
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CyclesThru
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — None
Use this acro to set the drill cycle type toThru.
See "Notes about Drill Cycles" and "Notes about Drill Cycle Logic" in the Notes about
Special Topics section, in the CGTech Help Library, for additional information.

CycleSubroutineOff
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Turns Off the calling of the specified subroutine on every motion. The name of the
subroutine may either be numeric or text, based on the Type of Subroutine Names
control setting (ref. Control Settings window: Subroutines tab in the VERICUT Help
section, in the CGTech Help Library).
CycleSubroutineOn
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Turns On the calling of the specified subroutine on every motion. The name of the
subroutine may either be numeric or text, based on the Type of Subroutine Names
control setting (ref. Control Settings window: Subroutines tab in the VERICUT Help
section, in the CGTech Help Library).

CycleSubroutineOnNoMotion
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Same as CycleSubroutineOn, except doesn't automatically turn motion on for the current
block.

CycleTurnAdjustEndPoint
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
0 = Off
1 = On
This macro turns OFF (0) or ON (1) the adjust-end-point internal flag. When ON, a check
is performed to determine if the tool position is lower than profile end (rough boring) or
higher than profile end (rough turning). If either case is true, then the profile end is
adjusted to be at the same level as the tool position. This is normally an internal NC
control variable. Therefore, to simulate, call once during the "Start of Processing" event.

CycleTurnAllowanceX
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Specifies the offset along the X axis after roughing for finish allowance stock. Sets the
finish allowance for threading. This macro is also used for roughing canned cycles.
NOTE: The offset represented by CycleTurnAllowanceX is a "radius" value.
CycleTurnAllowanceZ
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the offset along the Z axis after roughing for finish allowance stock. Sets the
finish allowance for threading. This macro is also used for roughing canned cycles.
NOTE: The offset represented by CycleTurnAllowanceX is a "radius" value.

CycleTurnCutDepth
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the cut depth for each roughing pass. This macro is also used with grooving
cycles to specify the cut peck depth.

CycleTurnDiameter
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — None
Macro CycleTurnDiameter sets the turning cycle type to diameter. The current position
is used as the diameter start point. When X and/or Z words are included on the block they
define the endpoint of the canned diameter. When U and/or W words are included on the
block, the associated U-W values are interpreted as signed incremental values from the
start point to the end point. The XaxisIncreMotion and ZaxisIncreMotion macros must be
called when U and W are used to define the canned diameter endpoint.
The CycleTurnDiameter macro is modal until canceled by one of the following macros:
MotionRapid, MotionLinear, MotionCW, MotionCCW, MotionNurbs, MotionPoly, or
Motion3DCircle.
The G90, canned diameter cycle remains active allowing additional blocks of the G90,
cycle to be simulated until canceled by another G-code.
Requires a G90, word address to call the CycleTurnDiameter macro. The associated
CycleTurn* macros DO NOT have to be called for each block.
For example:
G90 X2.5Z-2R0.1
X2.4
X2.3
X2.2
X2.1
X2.0
G00X3.0Z1.0
CycleTurnEndSeq
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the sequence number of the last motion block used to define the work shape
profile being cut by the turning cycle.

CycleTurnFeed
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the feedrate to be apply to the expanded motions of a "roughing" turning cycle.
A "Finish" turning cycle uses the speeds and feeds that are included on the motions
blocks defining the cycle's profile.

CycleTurnFinalX
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Used to define a final X axis position after the cycle is executed. (Not required by most
controls)

CycleTurnFinalZ
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Used to define a final Z axis position after the cycle is executed. (Not required by most
controls)

CycleTurnFinish
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = use Tool Nose Compensation
Selects a single pass along the turning cycle profile to finish the profile. It is normally
called after a rough cut cycle to avoid programming the profile twice. "Tool Nose
Compensation" is used if Override Value = 1.
CycleTurnGroove
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Selects O.D./I.D. grooving cycles or a cut-off cycle.

CycleTurnGrooveAngle
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the amount of slope for a grooving cycle with an angled bottom.

CycleTurnGrooveDepth
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Defines the bottom of the groove. (Either an X value for I.D./O.D. grooves or a Z value
for facing grooves). This is not the cut or peck distance defined by CycleTurnCutDepth.

CycleTurnGrooveEnd
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Defines the bottom of the groove. (Either an Z value for I.D./O.D. grooves or an X value
for facing grooves).

CycleTurnGrooveEscape
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Allows a small side movement at the bottom of a grooving plunge before the retract
motion. Note that the manual cautions this can only be used when the stock geometry
allows it.

CycleTurnGrooveFace
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Selects face cut-off, face grooving, and deep hole drilling.
CycleTurnGrooveRelief
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Retract distance after each cutting peck motion during groove cycles. Some NC controls
define this value as a controller word. It can be set as an Override Value in VERICUT
(during "Start of Processing" event).

CycleTurnGrooveStep
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Groove step-over distance between plunge motions when width of groove exceeds the
tool width. Note that this normally a different word for I.D./O.D. grooves and facing
grooves.

CycleTurnLoopCount
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
The loop cycle repeats a sequence of cut motions while feeding into the stock until the
loop count is completed. Use this macro to set the number of times the motions are offset
and repeated. The total stock in the along the X and Z axis for closed loop rough cutting
are defined using the CycleTurnStockX and CycleTurnStockZ macros.

CycleTurnRetractX
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
This macro uses an Override Value to set the delta retract move in the X direction for the
expanded cycle. This is normally an internal NC control variable. Therefore, to simulate,
call once during the "Start of Processing" event.

CycleTurnRetractZ
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
This macro uses an Override Value to set the delta retract move in the Z direction for the
expanded cycle. This is normally an internal NC control variable. Therefore, to simulate,
call once during the "Start of Processing" event.
CycleTurnReturnOnOff
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = do not return to the start point
1 = return to the start point (default)
An Override Value of "0" indicates that no return to the start point will take place after
the completion of a turning cycle. An Override Value of "1" (default) indicates that a
return to the start point after the completion of a turning cycle will take place.

CycleTurnRoughCut
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = use Tool Nose Compensation
Selects a turning cycle for roughing using a cutting pattern parallel to the turning axis.
"Tool Nose Compensation" is used if Override Value = 1.

CycleTurnRoughFace
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = use Tool Nose Compensation
Selects a turning cycle for roughing using a cutting pattern normal to the turning axis.
This is commonly called traverse cutting or facing. "Tool Nose Compensation" is used if
Override Value = 1.

CycleTurnRoughLoop
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
1 = use Tool Nose Compensation
Selects a turning cycle that offsets and repeats the turning profile a given distance and
number of times. This type of machining is often called closed loop roughing. "Tool
Nose Compensation" is used if Override Value = 1.
CycleTurnSpeed
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the spindle speed to be applied to the expanded motions of a "roughing" turning
cycle. A "Finish" turning cycle uses the speeds and feeds that are included on the motions
blocks defining the cycle's profile.

CycleTurnStartBlank
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Specifies the first block sequence number for the motions defining the stock geometry.

CycleTurnStartSeq
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
Specifies the first block sequence number for the program of finishing the work shape.
NOTES:
1. Scanning must be set when the turning cycles reference sequence numbers. (Ref.
G-Code Settings window: Settings tab: Scan Toolpath Files in the VERICUT
Help section, in the CGTech Help Library.)
2. The NUM control should use the NumSequence macro for the start and end
sequence numbers. This allows the format N1 G64 N2 N3 ... Where N2 defines
the start and N3 defines the end sequence number.
3. The Okuma control should use the OkumaCondNWord conditional (ref. Word
Format window > Conditionals – listed alphabetically in the VERICUT Help
section, in the CGTech Help Library) with defined words: N, N_GOTO_LABEL,
N_GOTO_SEQ and N_LABEL.

CycleTurnStockX
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Allows an additional offset in the X direction for clean-up stock machined by the
roughing cycle after the roughing passes. It can also be used to define the total stock
being removed by a CycleTurnRoughLoop cycle.
CycleTurnStockZ
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Allows an additional offset in the Z direction for clean-up stock machined by the
roughing cycle after the roughing passes. It can also be used to define the total stock
being removed by a CycleTurnRoughLoop cycle.

CycleTurnTaper
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Value
Specifies the distance of taper in X-axis direction for a diameter canned cycle (signed
value, radius).

CycleTurnThread
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
No value = execute all threading passes with retracts and returns to threading start
point.
1 = execute only the final thread pass with retract and return to the threading start
point
2 = execute only the final thread pass and suppress retract and return to the
threading start point
4 = same as 1 except the thread cycle parameters via the associated CycleTurn*
macros stay modal
Sets the turning cycle type to threading. The current position is used as the threading start
point. When X and/or Z words are included on the block they define the endpoint of the
thread. When U and/or W words are included on the block, the associated U-W values
are interpreted as signed incremental values from the start point to the end point. The
XaxisIncreMotion and ZaxisIncreMotion macros must be called when U and W are used
to define the thread endpoint.
Right-hand or left-hand threads are programmed by specifying the direction of spindle
rotation via the ActiveSpindleDir macro, typically via M03/M04.
The CycleTurnThread macro and the associated CycleTurn* macros are non-modal
except as noted below.
The CycleTurnThread macro is modal with value = 2, or 4, until canceled by one of the
following macros: MotionRapid, MotionLinear, MotionCW, MotionCCW, MotionNurbs,
MotionPoly, or Motion3DCircle
No value = execute all threading passes with retracts and returns to threading start point.
Sometimes called a multiple pass box threading cycle.
For example: (Fanuc, fan15t.ctl)
G0 X0.95 Z0.2 S700 M3
G76 X0.6874 Z-0.275 K0.0313 D0.01 F0.05
G0 X6. Z7.55
Value = 1, execute only the final thread pass with retract and return to the threading start
point. Sometimes called a single box threading cycle.
Requires a G92 word address to call the CycleTurnThread macro.
For example: (Fanuc, fan15t.ctl)
G0Z10.X22.M8
Z3.
G92X24.5Z-24.F2. (I word for tapered thread)
G0Z10.M9
Value = 2, execute only the final thread pass and suppress retract and return to the
threading start point. Sometimes called a single block thread motion. Similar to a single
block G01 linear motion, but with controlled feed/lead/pitch to create a thread.
Requires a G32 or G33 word address to call the CycleTurnThread macro.
The associated CycleTurn* macros must be called again for each thread cycle block.
For example: (Siemens, sin840d.ctl)
X-20.872 F3.
G33 Z-3.12 K.25
G0 X-20.456
...
G1 X-20.456 Z-2.7963 F3.
G33 X-20.8642 Z-2.8491 K.25
Z-3.0773 K.25
G0 X-20.456
Value = 4, same as value = 1, except the thread cycle parameters via the associated
CycleTurn* macros stay modal. This override causes the G92, or G33, threading cycle
to remain active allowing additional blocks of the G92, or G33, cycle to be simulated
until canceled by another G-code.
Requires a G92, or G33, word address to call the CycleTurnThread macro.
The associated CycleTurn* macros DO NOT have to be called for each block.
For example:
G0Z10.X22.M8
Z3.
G92X24.5Z-24.F2.
X25.
X25.2
...
X26.
G0Z10.M9
Also see: "Notes about simulating lathe threading" in the Notes about Special Topics
section, in the CGTech Help Library.

CycleTurnThreadAngleTaper
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the taper applied to threads.

CycleTurnThreadFinish
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the quantity of finish passes. If not specified, default is to make one pass.

CycleTurnThreadFirstCut
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Depth of first threading cut (radius value).

CycleTurnThreadHeight
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Thread height (radius value).
CycleTurnThreadLead
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
When used on a threading block the feed value defines the thread lead distance.

CycleTurnThreadMinCut
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Minimum depth of cut. A modal value used to limit the number of passes specified at
startup or in the threading block. Default is 10% of the thread height.

CycleTurnThreadOff
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Text
The macro enables you to define a set of word/value pairs in the OVERRIDE TEXT field
which are used to signify when the turning cycle modal is turned off. For example, the
word/value pairs entered in the OVERRIDE TEXT field might be as follows: "G00, G01,
G02, G03". This provides full control for cancelling turning cycle modals.

CycleTurnThreadStartAngle
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
Value = the thread starting orientation
This macro sets the thread starting orientation (0 to 359.999 degrees) for multiple threads
in a general thread turning cycle.

CycleTurnThreadTaper
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the distance of taper in X-axis direction (signed value, radius).
CycleUvDepth
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = interpret value as motion (Default)
1 = interpret value as a depth
Similar to CycleXyzDepth. This macro, if passed a value of 1, allows UAxisMotion
and VAxisMotion to interpret its value as a depth value, rather than a motion value. The
default is 0 (UAxisMotion and VAxisMotion values are normally interpret as motion).

CycleXyzDepth
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = No
1 = Yes
Specifies whether or not X, Y, or Z is used to specify cycle depth.

CycleZeroTrackingAdjOnOff
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = Do not adjust
1 = Adjust for Zero tracking
Sets an on/off flag specifying whether the cycle part surface calculation should be
adjusted based on ZW Zero tracking. This was specifically implemented for Siemens
840D version of ZW Zero tracking cycles.

CylindricalDiameter
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
This macro sets the diameter that will be used while Cylindrical Interpolation is On. This
parameter is required. Various controls will specify various values (radius, diameter,
conversion factor, or nothing). Whatever is specified, it needs to be converted to a
diameter, and then passed to this macro via the "Override Value" field.
CylindricalInterpolation
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
0 = Off
Any other value = On
This macro is used to turn Cylindrical Interpolation On and Off. When On, the
INTERPOLATION STATE is set to CYLINDRICAL. Cylindrical Interpolation is used
to cut a 2D planar shape along the outside of a cylinder at a constant depth using a rotary
and a linear axis. The programmed input may be two linear or one linear and one rotary
axis. In this mode, both linear and circular moves are supported. Cutter Compensation is
also supported. A value of 0 turns this mode off, any other value turns this mode on.
Typically the VERICUT control must be configured to call standard macros at the correct
time with the correct values when Cylindrical Interpolation is On.
NOTES:
1. It is critical to also set the proper motion plane. Typically, the motion plane will
be either XY or YZ.
2. The "interpolation" state (None, Polar, or Cylindrical) is supported as a
conditional state, and can be displayed in the Status window.

CylindricalLinearAxis
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
1 = X-axis
2 = Y-axis (Default)
3 = Z-axis
This macro specifies the "virtual" linear axis which will be "wrapped" around the
cylinder while cylindrical interpolation is On. Valid values are 1, 2, and 3. These values
correspond to X, Y, and Z. The default is 2. If used, this macro should be called during
the "Start of Processing" event. This macro is used in conjunction with
CylindricalRotationalAxis which specifies the rotary axis that will be actually making the
"virtual" linear axis motions. Typically, this macro will never need to be called.
CylindricalRotationalAxis
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
4 = A-axis
5 = B-axis
6 = C-axis (Default)
10 = A2-axis
11 = B2-axis
12 = C2-axis
This macro specifies the rotary axis that will be actually making the "virtual" linear axis
motions while Cylindrical Interpolation is On. Valid values are: 4, 5, 6, 10, 11, and 12.
These values correspond to the A, B, C, A2, B2, and C2 axis. The default is 6. If used,
this macro should be called during the "Start of Processing" event. This macro is used in
conjunction with CylindricalLinearAxis. Typically, this macro will not need to be called
unless there is a sub-spindle.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Debug
Function — MISCELLANEOUS
Status — RENAMED
Comment — Renamed to: DebugMacro

DebugComponentAxis
Function — MISCELLANEOUS
Status — SPECIAL
Comment — Added V6.2.2 - This macro is intended for internal CGTech use only.
Valid Inputs — Text
This macro prints the location of the specified component.

DebugMacro
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Debugging macro that prints the corresponding word, the string associated with the value,
and the value to the DEBUG destination (ref. Process Otions window: Messages tab:
Send Debug Messages in the VERICUT Help section in the CGTech Help Library).
DefaultWire
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — None
Sets the current tool number to be the default wire EDM tool number.

DefineCsys
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
This macro defines a coordinate system (CSYS). The text argument contains the name of
the CSYS followed by the name of the component to attach the coordinate system to,
followed by the 12 numeric values defining the matrix for the coordinate system. The
order of the values are: i j k x i j k y i j k z
Example:
Create the following lines in the mcd file:
(DEFINE_CSYS "csys1 Stock 1 0 0 -7.95 0 1 0 0 0 0 1 2.25"
(DEFINE_CSYS "csys2 Stock 1 0 0 -7.95 0 -1 0 0 0 0 -1 -.7"
Create the word "(DEFINE_CSYS" which expects an alpha-numeric argument.
When "(DEFINE_CSYS" is encountered, the DefineCsys macro is called. This example
results in two new coordinate systems, called csys1 and csy2, are created. Both are
attached to the Stock component, with values identical to position1 and position2 of the
standard VERICUT part.

DefineDashAsAlphaNumeric
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
1 = interpret dash as an alphanumeric character
Defines whether or not the dash character is to be interpreted as an alphanumeric
character. Default is no. A value of 1 causes a dash to be interpreted as an alphanumeric
character. If needed, this macro would typically get called during the "Reset" event.
Defining the dash character as an alphanumeric character will only effect words which
are defined to have an alphanumeric argument.
DfixPrecisionIndex
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
value = the required number of decimal places
Sets the precision accuracy requirement value for the DFix function. (See Functions –
listed alphabetically, in the Configuration menu section of VERICUT Help for
information on the DFix function.)
Example:
If value = 5, then numbers will be output to five decimal places as in .12345

DfupPrecisionIndex
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
Sets the precision accuracy requirement value for DFup function. (See Functions – listed
alphabetically, in the Configuration menu section of VERICUT Help for information on
the DFup function.)
Example:
If value = 5, then numbers will be output to five decimal places as in .12345

DisableBaseWorkOffsets
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — none
This macro is used to disable the current Base Work Offset values. The offset values in
the Base Work Offset table are not changed and can be re-activated using the
SetBaseWorkOffset macro, or the SiemensSystemFramesRestore macro if simulating a
Siemens 840D control.

Also see: CancelWorkOffsets and CancelAllWorkOffsets


DisableShiftOffsets
Function — SHIFT OFFSETS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Text,Value
Text:
ALL
Value:
1 = Shift 1 Offset
2 = Shift 2 Offset
3 = Shift 3 Offset
Use this macro to disable the application of the shift offset specified by the Override
Value. Use the Override Text Value "ALL" to disable the application of all shift offset
values.
Example:

X Y Z
Enabled Disabled Enabled Disabled Enabled Disabled
Work Offset: 54 1 1 2 2 3 3
Shift2 Offset: 4 0 5 0 6 0
Total: 5 1 7 2 9 3
Adjusted Total: 5 1 7 2 9 3

Also see: EnableShiftOffsets

DisableWorkOffsets
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — none
This macro is used to disable the current Work Offset values. The offset values in the
Work Offset table are not changed and can be re-activated using the WorkCoord macro,
or the SiemensSystemFramesRestore macro if simulating a Siemens 840D control. The
Base Work Offset is not canceled when this macro is applied.
Also see: CancelWorkOffsets and CancelAllWorkOffsets
DisableWorkShiftOffsets
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
When this macro is called, it will disable the application of current Work and Shift1
Offset values.
Example:

X Y Z
Enabled Disabled Enabled Disabled Enabled Disabled
Work Offset: 54 1 0 2 0 3 0
Shift1 Offset: 4 0 5 0 6 0
Total: 5 0 7 0 9 0
Adjusted Total: 5 0 7 0 9 0

Also see: EnableWorkShiftOffsets.

DoLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — None
This command is used with macros WhileLoop and EndLoop to process a "while/do"
loop of the form:
WHILE (expression) DO1
.
.
WHILE (expression) DO2
.
.
END2
END1
The value associated with the DO word is used to match the corresponding END word.
The following macros would be called:
WHILE ..... call the WhileLoop macro
DO ..... call the DoLoop macro
END ..... call the EndLoop macro
These macros can also be used to process loops in the following format:
WHILE (expression)
.
.
WHILE (expression)
.
.
END
END
In this case, we do can not match the END value with the corresponding DO value.
Instead we match the END word with the last "unused" WHILE word. The following
macros would be called:
WHILE ..... call the WhileLoop macro
call the DoLoop macro with Override Value = 1
END ..... call the EndLoop macro with Override Value = -1
The key here is the minus 1 as the Override Value on the call to EndLoop.

DroundPrecisionIndex
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
value = the required number of decimal places
This macro is used to set the precision accuracy requirement value for the DRound
function. (See Functions – listed alphabetically, in the Configuration menu section of
VERICUT Help for information on the DRound function.)
Example:
If value = 5, then numbers will be output to five decimal places as in .12345

DuplicateLabelCheckOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Value
0 = duplicate label check is off. (Default)
1 = duplicate label check is on.
This macro sets a flag that indicates whether duplicate labels should be checked when
adding a new label. A value of "1" turns on the duplicate label check, and a value of "0"
turns it off. The default is "0" (off).
NOTES:
1. Labels are added when scanning the files. Therefore, this macro should be called
during the "Reset" event so that the flag can be set prior to scanning the files. An
error message will be produced if this flag is turned on and a duplicate is found.
2. Duplicate checks are not done on label "0". This is sometimes used as a return
from subroutine.

Dwell
Function — DWELL
Status — RENAMED
Comment — Renamed to: DwellMacro

DwellMacro
Function — DWELL
Status — ACTIVE
Valid Inputs — None
Causes a dwell to occur. Typically called by G04, this macro must be called after the
DwellTime macro. Dwell length is determined by the DwellTime variable value and the
current feed mode (IPM/MMPM, IPR/MMPR):

DwellRevolutions
Function — DWELL
Status — ACTIVE
Valid Inputs — None
Similar to DwellMacro, except the dwell time value is always interpreted as revolutions.

DwellSeconds
Function — DWELL
Status — ACTIVE
Valid Inputs — None
Similar to DwellMacro, except the dwell time value is always interpreted as seconds.
DwellTime
Function — DWELL
Status — ACTIVE
Valid Inputs — Value
Sets the dwell time variable. Typically called by the "X" word when a G04 is in the
block, the dwell time variable is interpreted differently depending upon the macro called
after DwellTime:
DwellMacro seconds in IPM/MMPM mode, revolutions in IPR/MMPR mode
DwellRevolutions always revolutions
DwellSeconds always seconds

DynamicToolTipAdjust
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V7.1.1
Valid Inputs — None
This macro is used with turning tools only, and is designed to automatically select the
correct insert for tools with multiple inserts (flash tools). This macro should be called
after the tool is loaded and a turning plane has been established so that the correct insert
can be identified and its gage offset applied.
See also: DynamicToolTipOnOff and TurnOnOffGageOffset

DynamicToolTipOnOff
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Off (Default)
1 = On
This macro turns on (value of 1) and off (value of zero) the feature of Dynamic Tool Tip.
The default is off.
The feature of Dynamic Tool Tip applies to only turning tools. The concept is that when
the tool rotates, you want to rotate about the center of the "Corner Radius", but you want
to drive the virtual tool tip (for example: the lower left position).
NOTES:
1. You must use RTCP or some similar functionality to cause the Gage Point and
Pivot Point offset to be rotated. With this feature turned on, the Driven Point
offset will not be rotated, which will have an end effect of Dynamically changing
the Tool Tip that is being driven (this is where the name comes from). See
diagram below.
2. The APT output and Tool Tip Location within the status window is still based on
the initial driven point.
3. As the tool rotates beyond a certain limit. The defined driven point offset will
need to change. For example from the 7 o'clock position to the 11 o'clock
position. Currently this must be done by defining a new driven point offset.

The following limitations apply:


1. The driven point offset must correspond to the distance from center of the "Corner
Radius" to the Driven Point.
2. The intent must be to rotate the tool about the center of the "Corner Radius".
3. This capability only applies to turning tools.
The implications of the above limitations include:
1. This feature will not work with groove tools.
2. This feature will probably not work with tools defined as profiles.
3. This feature will probably not work with tools defined with assembly offsets or
rotations on the cutter.

DynamicWorkOffsets
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
Controls when "dynamic work offsets" are applied (e.g. G54.2). When called with an
value of "1", work, shift, and Program Zero offsets are rotated based on the rotation that
is applied to the stock. A value of "0" will turn this feature off.
WARNING: If the offset is non-relational (not specified with From/To locations), then
the entire amount of the offset will be rotated. This behavior will only work if the offset
is being measured from the center of the rotary on the part side. This limitation does not
apply to relational offsets.

DynamicWorkOffsetsContour
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — Value
0 = non-contouring mode
1 = contouring mode (Default)
Controls the dynamic work offset mode: contouring vs. non-contouring. When passed a
value of "1", puts the dynamic work offsets in contouring mode. A value of "0", puts the
dynamic work offsets in non-contouring mode. The default is contouring.
NOTE: This command is dependent on dynamic work offsets being turned on using the
DynamicWorkOffsets macro.

DynamicWorkOffsetsLocalCoord
Function — SHIFT WORK PZ
Status — OBSOLETE
Valid Inputs — Value
0 = rotate based on actual rotation of the stock component (Default)
1 = rotate based on rotations specified within the local coordinate system
Controls the coordinate system in which work offsets are dynamically rotated. When
called with a value of "1", dynamic work offsets are rotated based on the rotations
specified within the local coordinate system. When passed a value of "0" (default),
dynamic work offsets are rotated based on the actual rotation of the stock component.
NOTES:
1. This command is dependent on dynamic work offsets being turned on using the
DynamicWorkOffsets macro.
2. This macro is now OBSOLETE and no longer has any effect. Previously this
macro was called to use the local coordinate system rather than the Stock
Coordinate system when calculating Dynamic Work Offsets. This calculation now
uses the Attach component, which allows for arbitrary rotations on the Fixture
and Stock component. In most cases, old jobs using this macro will continue to
work regardless of the argument that was being passed to this macro. In places
where a problem occurs, see RpcpOffset
DynamicWorkOffsetsTypes
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — Text, Value
Text
BASE = base offset
WORK = base and work offsets
WORK_ONLY = work offset only
SECONDARY = secondary work offset
SHIFT = shift offset
PZ = program zero
ALL = all offsets
Value
0 = Off
1 = On (Default)
Determines which work offsets should be dynamically rotated. When passed a value of
"1", turns on the capability for the given work offset. A value of "0" turns off the
capability for the given work offset.
The possible work offsets include: "BASE", "WORK" (Base and work),
"WORK_ONLY", "SECONDARY" (Secondary work offset), "SHIFT", "PZ" (Program
Zero), and "ALL".
The type of work offset should be specified in the OverrideText field. A separate call is
required for each setting.
NOTES:
1. This command is dependent on dynamic work offsets being turned on using the
DynamicWorkOffsets macro.
2. The default is "On" for all types.

DynamicWorkOffsetsWithMotion
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — Value
0 = offsets take effect immediately
1 = offsets take effect when the corresponding axis is specified (Default)
When passed an OverrideValue of "1", causes the offsets to only take effect when the
corresponding axis is specified. An Override Value of "0", causes the offsets to take
effect immediately. For the most part, this macro is only applicable when in non-
contouring mode. The default is 1.
NOTE: This command is dependent on dynamic work offsets being turned on using the
DynamicWorkOffsets macro.
Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

The following diagram illustrates the terms and values that are used by the Wire EDM
macros below.

The Upper and Lower Guides are defined by the 2 components of type Guide.
The Table Top is defined by the Stock origin.
A. The Upper Guide Height is the unsigned Z distance from the UV Plane to the
Upper Guide.
B. The XY to UV Plane Height is the unsigned Z distance from the UV plane to the
XY plane.
C. The XY Plane Height is the signed distance from the XY Plane to the Table Top.
D. The Lower Guide Height is the unsigned Z distance from the Table Top to the
Lower Guide.
Given that the XY Plane Height is typically zero, the above graph reduces to:

EDMCalcUpperGuideHeight
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — None
Causes the Upper Guide Height (A) to be recalculated based on:
• The Z distance between the Guide Components
• The XY to UV Plane distance
• The XY Plane Height
• The Lower Guide Height
Refer to the Wire EDM pictures above.
Also see: EDMLower2Reference, EDMReference2Upper, and EDMLowerGuideHeight

EDMCalcUpperGuideLocation
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — None
Calculates the new distance between the Guide components based on:
• The Upper Guide Height
• The XY to UV Plane distance
• The XY Plane Height
• The Lower Guide Height
The Z component axis value is then adjusted to achieve this distance. Typically this
macro would not be used in Wire EDM.

EDMGuide2Guide
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — None
The input value specifies the distance between the Guide Components. The Z component
axis value is adjusted to achieve this distance. This macro also updates the Upper Guide
Height accordingly.
Refer to EDMGuide2Guide in the Wire EDM pictures above.

EDMLower2Reference
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — Value
Use to set the XY Plane Height (C) to the specified value. The XY Plane Height is the
signed distance from the XY Plane to the Table Top. This value is typically zero.
Refer to EDMLower2Reference in theupper Wire EDM picture above.
EDMLowerGuideHeight
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — Value
Use to set the Lower Guide Height (D) to the specified value. The Lower Guide Height is
the unsigned Z distance from the Table Top to the Lower Guide. Typically, this macro
does not need to be called.
Refer to EDMLowerGuideHeight in the Wire EDM pictures above.

EDMReference2Upper
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — Value
Sets the XY to UV Plane Height (B) to the specified value. The XY to UV Plane Height
is the unsigned Z distance from the UV plane to the XY plane.
Refer to EDMReference2Upper in the Wire EDM pictures above.

EDMUpperGuideHeight
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — Value
Sets the Upper Guide Height (A) to the specified value. The Upper Guide Height is the
unsigned Z distance from the UV Plane to the Upper Guide.
Refer to EDMUpperGuideHeight in the Wire EDM pictures above.

EITapePolarAngle
Function — TAPE LAYING
Status — Active
Comment — Added V6.2
Valid Inputs — Value
This macro is specific to an Electroimpact (EI) tape laying machine. This macro defines
the polar angle position that the head should remain at when laying tape while the
mandrel is rotating. The default is zero degrees.
EITapeVirtualAxis
Function — TAPE LAYING
Status — OBSOLETE
Comment — Added V6.2
Valid Inputs — Text, Value
This macro is specific to an Electroimpact (EI) tape laying machine. This macro is either
OBSOLETE, or is expected to be OBSOLETE shortly.

EIVirtualSpinOffsetY
Function — TAPE LAYING
Status — OBSOLETE
Comment — Added V6.2.2
Valid Inputs — Value
This macro is specific to an Electroimpact (EI) tape laying machine. This macro specifies
the Y offset from the rotisserie axis to the center of the part. This virtual center point is
only used in calculations when in spinning mode. This macro is mutually exclusive with
EITapeVirtualAxis. See also EIVirtualSpinOffsetZ

EIVirtualSpinOffsetZ
Function — TAPE LAYING
Status — OBSOLETE
Comment — Added V6.2.2
Valid Inputs — Value
This macro is specific to an Electroimpact (EI) tape laying machine. This macro specifies
the Z offset from the rotisserie axis to the center of the part. This virtual center point is
only used in calculations when in spinning mode. This macro is mutually exclusive with
EITapeVirtualAxis. See also EIVirtualSpinOffsetY.

EIVirtualSpinPoint
Function — TAPE LAYING
Status — Active
Comment — Added V6.2.2
Valid Inputs — None
This macro is specific to an Electroimpact (EI) tape laying machine. This macro adds the
point specified by EIVirtualSpinXYZ to the current poly line. This poly line is then used
to determine the spinning axis offset for an EI machine in spinning mode. These values
are modal.
EIVirtualSpinXYZ
Function — TAPE LAYING
Status — Active
Comment — Added V6.2.2
Valid Inputs — Text, Value
This macro is specific to an Electroimpact (EI) tape laying machine. This macro defines
the X, Y, or Z coordinate value that is used in creating a poly line. The value passed is the
coordinate value. The Text value should be either "X", "Y", or "Z". After the X, Y, and Z
values have been specified, the macro EIVirtualSpinPoint should then be called to add
the point to the poly line. This poly line is then used to determine the spinning axis offset
for an EI machine in spinning mode. These values are modal.

EI_BarrelAxis
Function — TAPE LAYING
Status — ACTIVE
Comments — Added V6.2.2
Valid Inputs — Text
Text = Name of the Rotary component which defines the barrel axis
This macro is specific to an EI tape laying machine. It is passed the name of the rotary
component which defines the barrel axis. Based on the Angle and RPM settings in the
NC Programs window (VERICUT Composites Simulation only), it will:
1. Rotate the barrel axis to the angle specified in the NC Programs window
2. Set the Rotary type based on the Speed (Closest Distance, CW, CCW)
3. Set the Speed of this axis.

EI_MandrelMode
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Value
This macro turns on/off the mandrel mode for the EI Tape machine (Ijk2AbcType = 19).
The default is mandrel off. A value of 1 turns it on, anything else turns it off. The
mandrel mode determines if the XYZ ABC input should be adjusted by the angle of the
rotiserrie (A2 Rotary)
EI_RetractRadius
Function — TAPE LAYING
Status — OBSOLETE
Comment — This macro is now obsolete. It has been replaced with EI_SafeRetract
Valid Inputs — Text, Value
This macro is specific to an Electroimpact (EI) tape laying machine. It causes a rapid
retract to the specified radius. Although intended to mimic the EI machine, at this point it
is just our internal logic. The steps are:
1. Retract in Y and Z along the Tool's axis.
2. Rotate the A angle to match your current position, and rotate the B angle to zero.
If "START" is passed as the Override Text value, it was will cause the transition logic
to occur with the next motion. All transition movements are done at rapid. The steps of
the transition logic are:
1. Moves along the imaginary cylinder to the retract position of the new point. This
is a rapid motion which drives the XYZ and A axes.
2. Rotate the rotaries into position.
3. Move to the specified start position.
NOTE: The reposition logic is extremely important in the overall time to lay the tape.

EI_SafeMove
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.1.2
Valid Inputs — Value
Value = "safe radius"
This macro is specific to an Electroimpact (EI) tape laying machine. This macro mimics
the EI G110 subroutine. This macro is passed in the "safe radius" value, and then
executes the following sequence of actions:
First, the point where the ray extending from the virtual axis, passing through the
current position, and then intersects the safe radius is determined. Then the roller is
moved to this point, changing only the Y and Z values as it moves. We will call this
point "Safe Point 1".
Next, the point where the ray extending from the virtual axis, passing through the
destination point, and then intersects the safe radius is determined. We will call this
point "Safe Point 2".
Finally the motion is generated to move the roller from Safe Point 1 to Safe Point 2.
During this motion, all 6 axes are tessellated. The motion is calculated such that the
roller will remain on the cylinder defined by the safe radius for the entire move.
If the machine is in spinning mode, it will then move Y and Z to the final destination
point.
The above moves are done independent of the mandrel. In the simulation, the mandrel
will be seen as motionless during these moves.

EI_SafeRetract
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.1.2
Valid Inputs — Value
Value = "safe radius"
This macro is specific to an Electroimpact (EI) tape laying machine. This macro is passed
in the "safe radius" value, and then executes the following sequence of actions:
First, the point where the ray extending from the virtual axis, passes through the
current position, and then intersects the safe radius is determined.
Then the roller is moved to this point, changing only the Y and Z values as it moves.

EI_SpinningMode
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = stop mandrel spinning
1 = start mandrel spinning
This macro is specific to an Electroimpact (EI) tape laying machine. A value of zero
causes the mandrel to stop spinning, and a value of 1 causes the mandrel to start spinning.

ElseBlock
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
1 = ELSE
Use to define an "ELSE" or "ELSE_IF" condition within an "IF" block of code. For an
"ELSE_IF" condition, specify the expression that is to be evaluated to determine if the
block is to be executed. For an "ELSE" statement, specify a value of 1.
Also see: IfBlock, EndIfBlock
EnableShiftOffsets
Function — SHIFT OFFSETS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Text, Value
Text:
ALL
Value:
1 = Shift 1 Offset
2 = Shift 2 Offset
3 = Shift 3 Offset
Use this macro to enable the application of the shift offset specified by the Override
Value. Use the Override Text Value "ALL" to enable the application all shift offset
values.
Example:
X Y Z
Enabled Disabled Enabled Disabled Enabled Disabled
Work Offset: 54 1 1 2 2 3 3
Shift2 Offset: 4 0 5 0 6 0
Total: 5 1 7 2 9 3
Adjusted Total: 5 1 7 2 9 3

Also see: DisableShiftOffsets

EnableWorkShiftOffsets
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — Value
When this macro is called, it will enable the application of the current Work and Shift1
Offset values.
Example:

X Y Z
Enabled Disabled Enabled Disabled Enabled Disabled
Work Offset: 54 1 0 2 0 3 0
Shift1 Offset: 4 0 5 0 6 0
Total: 5 0 7 0 9 0
Adjusted Total: 5 0 7 0 9 0

Also see: DisableWorkShiftOffsets


EndIfBlock
Function — BRANCHING
Status — ACTIVE
Valid Inputs — None
Use to define the end of an "IF" block of code.
Also see: IfBlock, ElseBlock

EndLabelLoop
Function — BRANCHING
Status — SPECIAL
Valid Inputs — Text
Used to define a label name that marks the end of a label loop. Action is only taken if the
code is currently processing a label loop. If additional loops are to be executed, control
branches to the start of the loop. Otherwise control branches to the line following the
REPEAT command. Currently, this is only implemented with the Sin840D REPEAT
command. This command would typically get called during the "Start of Processing"
event.
See "Notes about the Siemens 840 CASE and REPEAT commands" in the Notes
about Special Topics section, in the CGTech Help Library, for additional information.

EndLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Override Value
This macro marks the end of a WHILE/DO loop. The value passed to this macro is used
to match it with the value on the corresponding DO loop. If the value is -1, the EndLoop
will be associated with the last unused WHILE/DO loop.
This macro will cause execution to return to the beginning of the WHILE/DO loop. It
also marks the location to jump past when the WHILE/DO loop is complete. See DoLoop
for a more complete description.
EndProgram
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
During the scan pass, this macro marks the current location as the end of the current
program. During the run pass, this macro will cause processing to stop, will set a flag
indicating that the end of program has been reached, and will output the APT "FINI"
statement.
EndProgramRewind
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
During the scan pass, this macro marks the current location as the end of the current
program. During the run pass, this macro will output an APT "REWIND" statement and
call the EndProgram macro.

EndProgramRewindSpecial
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
This macro is identical to EndProgramRewind except it allows you to branch beyond the
end of the program.

EndSub
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
During the scan pass, the macro will cause the current location to be marked as the end of
the subroutine. This will prevent any branching from within this subroutine to branch
beyond this point. During the run pass, this macro will cause a return from the current
subroutine.
NOTE: If you do not want to mark the current location as the end of the subroutine,
make sure the "Process during Scan" is not toggled "On" ( ref. Add/Modify
Word/Address window in the VERICUT Help section, in the CGTech Help Library).
See SubroutineSequenceEnd as an alternative way to mark the end of a subroutine.

Enhanced5AxisLogicOnOff
Function — MISCELLANEOUS
Status — SPECIAL
Comment — Use only if there is a problem.
Valid Inputs — Value
0 = Off
1 = On (Default)
This macro turns On / Off the enhanced 5 axis logic that was added to V5.4.4. The
default is On. A value of 1 turns it on, and a value of 0 turns it off. This logic should
only be turned off if the new logic is causing a problem, or if the new logic is causing a
significant slow down in performance.
ErrorMacro
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Use to create an error message using the input text string value supplied via the Override
Text field.
See Add/Modify Word/Address window in the VERICUT Help section, in the CGTech
Help Library) for information on using "expressions" in the Override Text field.

ExitLoop
Function — BRANCHING
Status — ACTIVE
Comment — Added V7.0.3
Valid Inputs — None
This macro will cause the execution of a program to exit out of a WHILE, DO, or FOR
loop
Example:
L1 =1
WHILE L1 < 50 DO
L1 = L1 + 1
IF L1 = 10 THEN
EXIT
ENDI
ENDW
When the EXIT is executed, the processing will exit out of the WHILE loop, and the next
line to be executed will be the line following the ENDW.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

FadalLcode
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Value
If less than 100, the value sets the loop count. If the value is an even multiple of 100, it
defines the beginning of a subroutine. Otherwise it is a call to a subroutine, with the last 2
digits being the loop count.
FadalWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
For Fadal, E54 is the same as E1. Therefore if the value is greater than 53, 53 is
subtracted from the value.

FanucDprint
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is used to format, and output, NC program variables similar to Fanuc DPRNT
command. The only input data for this macro is the text following the DPRNT command.
The variables and their format are specified in DPRNT statement. See Fanuc 15i
programming manual page 659 – 663 for details. The Fanuc system variable #7000 (bit
7) can be used to control the current format design (see Fanuc manual for details). The
formatted string is output to an external file opened using command POPEN.
Also see: FanucPopen and FanucPclose

FanucPclose
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is designed to support Fanuc PCLOS command. This macro closes the
external text file opened using macro FanucPopen. This macro should be called after
processing the last DPRNT command, or before the end of the NC program. Macros
FanucPopen and FanucPclose should always be used in pairs.
Also see: FanucPopen and FanucDprint

FanucPopen
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text, Value
Text = output file name
0 (or no value) = the existing file is appended. (default)
1 = the existing file is overwritten.
This macro is designed to support the Fanuc POPEN command. This macro opens an
external text file for the output provided by the Fanuc DPRNT command. The Override
Text field is used to specify the name of the output file. If the file name is specified
without a path, it will be located in the VERICUT Working Directory.
If an Override Value of 1 is used, the formatted string output by FanucDprint overwrites
contents of an existing file. If an Override Value of 0 is used, or no Override Value is
entered, the formatted string output by FanucDprint is appended to an existing file’s
contents. If a file with the specified filename does not exist, the Override Value makes no
difference.
This macro must be used before any DPRNT command is processed. Note that only one
external file can be opened at any time. The file should be closed, using macro
FanucPclose, after the last DPRNT command, or before the end of the NC program.
Macros FanucPopen and FanucPclose should always be used in pairs.
Also see: FanucPclose and FanucDprint

FanucRotationPlaneLocal2
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Added V6.0
Valid Inputs — Value
This macro is implemented to support the Fanuc G68 with IJK vectors. This macro
calculates a rotation matrix based on the following:
1. Rotation about an axis. The axis specified with calls to Ivector, Jvector, and
Kvector.
2. The center of rotation specified with RotationPlaneXPoint, RotationPlaneYPoint,
and RotationPlaneZPoint.
3. The angle specified with RotationPlaneAngle1.
The specified rotation is based on the current coordinate system. The current XYZ
position is automatically recalculated based on the new coordinate system. This macro
uses the standard rotation plane capabilities within VERICUT, and therefore can be
cancelled in the standard way (RotationPlaneCancel2).

FanucToolLengthComp
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Use TurnOnOffGageOffset
Valid Inputs — Value
Implements a Fanuc-style G43/G44 tool length compensation. This macro would
typically get called with the G43/G44 word/addresses. For G44, an Override Value of -1
should be passed. This macro applies the previously set compensation amount to the axis
specified on the block.
FanucToolLengthComp does not consider the current tool axis orientation
ToolLengthCompPos and ToolLengthCompNeg. It applies the MCH axis specified in the
block.
When X and/or Y are also specified in a G43 block with Z, FanucToolLengthComp
does not apply to the Z-axis, but to the first axis specified in the block.

FanucToolLengthCompAxisOn
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Try using standard RTCP with Contour off and With Motion on, and
new Gage Offset logic.
Valid Inputs — Text, Value
This macro turns on special Fanuc G43.1 handling, and initializes the corresponding
offset. ToolLengthCompOff will cancel the offset, and take you out of the special G43.1
mode.

FastenerDrill
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — None
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then performs a stack analysis at the contact location to
determine the stack thickness. Finally, based on the stack thickness at the contact point
and the hole diameter specified using the FastenerSetDiameter macro it drills a hole at the
contact location.
NOTE: For best performance, when drilling and inserting a fastener in a location at the
same time, use the FastenerDrillAndInsert, FastenerDrillAndInsertFastenerIDNum or
FastenerDrillAndInsertFastenerIDText macros, rather than calling the FastenerDrill
macro and then the FastenerInsert macro separately. Using the FastenerDrill and
FastenerInsert macros separately causes the location to be re-calculated for each macro.
FastenerDrillAndInsert
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — None
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then performs a stack analysis at the contact location to
determine the stack thickness.
Then, based on the stack thickness at the contact point and the hole diameter specified
using the FastenerSetDiameter macro it drills a hole at the contact location.
Finally, based on the stack thickness at the contact point and the hole diameter, it finds a
fastener with a matching diameter and a min/max grip length appropriate for the stack
thickness and inserts it in the hole at the contact location.

FastenerDrillAndInsertFastenerIDNum
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
value = a fastener's numeric ID
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then performs a stack analysis at the contact location to
determine the stack thickness.
Then, based on the stack thickness at the contact point and the hole diameter specified
using the FastenerSetDiameter macro it drills a hole at the contact location.
Finally, it inserts the specified fastener in the hole at the contact location.

FastenerDrillAndInsertFastenerIDText
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Text
text = a fastener's ID string
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then performs a stack analysis at the contact location to
determine the stack thickness.
Then, based on the stack thickness at the contact point and the hole diameter specified
using the FastenerSetDiameter macro it drills a hole at the contact location.
Finally, it inserts the specified fastener in the hole at the contact location.

FastenerInsert
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — None
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then performs a stack analysis at the contact location to
determine the stack thickness. Based on the stack thickness and the hole diameter at the
contact location, it finds a fastener with a matching diameter and a min/max grip length
appropriate for the stack thickness and inserts it in the hole at the contact location.
NOTE: For best performance, when drilling and inserting a fastener in a location at the
same time, use the FastenerDrillAndInsert, FastenerDrillAndInsertFastenerIDNum or
FastenerDrillAndInsertFastenerIDText macros, rather than calling the FastenerDrill
macro and then the FastenerInsert macro separately. Using the FastenerDrill and
FastenerInsert macros separately causes the location to re-calculated for each macro.

FastenerInsertFastenerIDNum
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
value = a fastener's numeric ID
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then inserts the specified fastener at the contact
location.
NOTE: For best performance, when drilling and inserting a fastener in a location at the
same time, use the FastenerDrillAndInsert, FastenerDrillAndInsertFastenerIDNum or
FastenerDrillAndInsertFastenerIDText macros, rather than calling the FastenerDrill
macro and then the FastenerInsertastenerIDNum macro separately. Using the
FastenerDrill and FastenerInsertIDNum macros separately causes the location to re-
calculated for each macro.
FastenerInsertFastenerIDText
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Text
text = fastener ID string
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component, and then inserts the specified fastener at the contact
location.
NOTE: For best performance, when drilling and inserting a fastener in a location at the
same time, use the FastenerDrillAndInsert, FastenerDrillAndInsertFastenerIDNum or
FastenerDrillAndInsertFastenerIDText macros, rather than calling the FastenerDrill
macro and then the FastenerInsertFastenerIDText macro separately. Using the
FastenerDrill and FastenerInsertFastenerIDText macros separately causes the location
to re-calculated for each macro.

FastenerRemove
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — None
This macro projects along the Z-axis of the active tool component to the location where it
contacts the skin component and then removes the fastener at the contact location.

FastenerSetCounterSink
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
0 = non-countersink
1 = countersink
Sets the countersink flag for the current fastener.
FastenerSetDiameter
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
value - hole diameter
Sets the hole diameter for the current drill location.

FastenerSetLocationIDNum
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
value = numeric location ID
Sets the integer location ID for current location.

FastenerSetLocationIDText
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Text
text = location ID string
Sets the text location ID for current location.

FastenerSetMaterial
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Text
text – a space separated string of materials (e.g. "titanium composite" or "{#1}
{#2}" for materials specified using variables)
Sets the stack material at the current location.
FastenerSetStackCount
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
value = total number of layers
Sets the number of layers at the current location (including the skin layer).

FastenerSetThickness
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Text
text = a space separated string of thickness (e.g. "1.3 2.4" or "{#1} {#2}" for
thicknesses specified using variables)
Sets the stack thickness at the current location.

FastenerSetType
Function — FASTENER
Status — ACTIVE
Comments — Added V7.1.4
Use for VERICUT Drilling & Fastening (VDAF) Only
Valid Inputs — Value
0 = a temporary fastener
1 = a permanent fastener.
Sets the fastener type to be used at the current location.

FeedInvTime
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Sets the feedrate based on the input value (InverseTime). The Feedrate will be calculated
based on the formula:
Feedrate = Distance * InverseTime.
FeedInvTimeModalMultiplier
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Use to specify a multiplier that is to be applied to the value specified with the
FeedInvTime macro. (Default = 1.0). This macro is identical to FeedInvTimeMultiplier
except the value being set is modal. If a value other than 1.0 is set for both the modal and
non-modal versions of this macro, the non-modal version will take precedence.

FeedInvTimeMultiplier
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Use to specify a multiplier that is to be applied to the value specified with the
FeedInvTime macro. (Default=1.0)

FeedInvTimeSec
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Similar to FeedInvTime, except that the units are in 1/seconds rather than 1/minutes.
FeedModeMinute
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
Sets the feed mode to Feed per Minute. This macro only sets the feed mode. Use
FeedPerMinute to set the feedrate "value".

FeedModeRevolution
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
Sets the feed mode to Feed per Revolution. This macro only sets the feed mode. Use
FeedPerRev to set the feedrate "value".
FeedModeTime
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
This macro sets the feed mode to Inverse Time. The Feedrate will be calculated based on
the formula:
Feedrate = Distance * InverseTime.

FeedPerMinute
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Sets the feedrate based on the input value. The units will be either IPM or MMPM. This
macro only sets the feedrate "value". Use FeedModeMinute to set the feed mode.

FeedPerMinuteType
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
0 = Treat the feedrate as a real units per minute feedrate. (Default)
1 = This calculation treats all rotary tables as if they are linear, and calculates the
time for the motion accordingly.
2 = Special Case – Originally written for the 840D control. See details below.
3 = Special Case – Originally written for the 840D control. See details below.
4= The time will be calculated using 2 different algorithms and the largest of the
two calculated times will be used. See details below.
5 = This calculation treats a rotary table move as if linear, with a special
multiplier set using the macro RotaryFeedFactor. See details below.
5-axis motions often have special calculations for feed. This macro allows you to select
which calculation type to use. This calculation type will only be used when interpolating
(non-rapid mode), and the feed mode is set to units per minute. Type 0 is the default. This
value is modal.
0 = Treat the feedrate as a real units per minute feedrate. The actual distance being
travelled will be used for the time calculation.
1 = This calculation treats all rotary tables as if they are linear, and calculates the time
for the motion accordingly. For example: on the block G91 X100 A90 F50, the time
to execute the block would be sqrt((100*100) + (90*90))/50. Stated another way:
• If only linear axis moves, treat the feedrate as inches/mm per minute
• If only a single rotary moves, tread the feedrate as degrees per minute
• If linear and rotary axis moves, or if multiple rotaries move, treat all axis as if
they were linear.
2 = Special Case – Originally written for the 840D control.
• If only linear axis moves, treat the feedrate as inches/mm per minute.
• If only rotaries axis move, treat the feedrate as degrees per minute. The rotary
moving the longest distance will determine the time for the block.
• If both rotary and linear axis move, ignore the rotary motion in the time
calculation. The rotary axes will then move at a proportional rate so that they
finish the motion at the same time as the linear axes.
3 = Special Case – Originally written for the 840D control.
• If only linear motions exist, treat the feedrate as a normal inches/mm per
minute.
• If rotaries exist, treat the feedrate as degrees per minute, and ignore any linear
motion on the block as far as feedrate and time calculations.
• Calculations are based on the largest rotary delta.
4 = The time will be calculated using 2 different algorithms
• The time based on the distance the tool tip travels and the specified feedrate.
• The time based on the rotary "distance", where "distance" is calculated as
square root of the sum of the squares of each rotary delta, and the rotary feed
rate (see RotaryFeedRate macro).
The largest of the two calculated times will be used.
NOTE: This type is currently invalid when there is a unit conversion between
the MCD file and the global units.
5 = Special Case – Originally written for an Okuma control
• Similar to the case 1 (SIN840C): This calculation treats a rotary table move as
if linear, with the special multiplier set by the macro RotaryFeedFactor.
• The multiplier is set in mm-per-degree units. For example, if a rotary delta is
90 degrees, and the multiplier is (500/360) mm/degree, and the current linear
unit is INCH, then the corresponding ‘linear’ delta for this rotary is
90*(500/360)/25.4 inches.
• For the time calculation, the total distance is divided by the feedrate, where
the total distance is the square root of the sum of squares of all linear deltas.

FeedPerRev
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Sets the feedrate based on the input value. The units will be either IPR or MMPR. This
macro only sets the feedrate "value". Use FeedModeRevolution to set the feed mode.
FeedRate
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text, Value
Sets the feedrate based on the input value. It will use the previously set feedrate mode to
output the corresponding units.

FeedTime
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
Sets the feedrate based on the input value (Time). The feedrate will be calculated based
on the formula: Feedrate = Distance /Time
This macro is very similar in functionality to FeedInvTime. This macro is also used to set
the Word that should be used when outputting the feedrate (actually the Time) in
OptiPath. For example if the T word is used to specify the Time, then OptiPath will then
use the T word to specify the time. The T word will also be used to define the output
format of the data. For example: 3.4.
See also: FeedModeTime and FeedInvTimeModalMultiplier
NOTE: It is important to use this multiplier rather then just an override value to convert
from seconds to minutes so that it can be properly reversed when formatting the OptiPath
data.

FeedTimeMin
Function — FEEDS & SPEEDS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
Sets the minimum Time that can be specified in OptiPath when using Time for feedrate.
See also: FeedTime

Fidia_ConvInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Initializes the Fidia specific rotation axis and center to 0.0.
Fidia_Rotate
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Also see: Fidia_Rotate2
Valid Inputs — None
Turns on the Fidia specific rotation using the values set with the Fidia_Rotate[XYZ]Axis
and Fidia_Rotate[XYZ]Point commands.

Fidia_Rotate2
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
This macro is identical to the Fida_Rotate command except it also converts the current
position into the new coordinate system.

Fidia_RotateCancel
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — None
Cancels the rotation plane put into affect via the Fidia_Rotate or Fidia_Rotate2 macros.

Fidia_RotateCancel2
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — None
Calls RotationPlaneRestoreAxis, and then cancels the rotation plane put into affect via
the Fidia_Rotate or Fidia_Rotate2 macros.

Fidia_RotateXAxis
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Sets the Fidia specific rotation value for the X-axis.
Fidia_RotateXPoint
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Sets the X coordinate of a Fidia specific point of rotation.

Fidia_RotateYAxis
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Sets the Fidia specific rotation value for the Y-axis.

Fidia_RotateYPoint
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Sets the Y coordinate of a Fidia specific point of rotation.

Fidia_RotateZAxis
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Sets the Fidia specific rotation value for the Z-axis.

Fidia_RotateZPoint
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Sets the Z coordinate of a Fidia specific point of rotation.
ForEndLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Use to mark the end of a "FOR" loop. Used with ForLoop.
Also see: ForToValue

ForLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — None
Use this macro to define a "FOR" loop. This macro expects a variable assignment to
follow. This variable will be used and compared against the "TO" value (specified with
ForToValue) to determine whether to continue in the loop. When the value of the
variable is no longer less than or equal to the "TO" value, control will jump to the block
after the "ENDFOR" block (specified with ForEndLoop).
This command is used to process a "For" loop of the following form:
TEETH=2
FOR TOOTH = 1 TO TEETH
.
.
.
ENDFOR
The following Word Formats should be defined:
TEETH and TOOTH should be defined as words of Type = "Special", Sub Type =
"Variable Name".
FOR and ENDFOR should be defined as words of Type = "Macro", Sub Type =
"None".
TO should be defined as a word of Type = "Macro", Sub Type = "Numeric".
Entries should be defined for FOR, TO and ENDFOR in the Word/Address table as
illustrated in the following picture:
ForToValue
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Use to set the "TO" value which is used with ForLoop.
Also see: ForEndLoop

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

G65ResetVarsOnLoop
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Value
1 = turns On resetting
Any other value = turn Off resetting
Defines whether the local variables should be reset when looping on a G65 call. The
default is yes. A value of 1 turns on the resetting. Any other value turns off the resetting.
This macro would typically be called during "Start of Processing".

GageOffsetAttributes
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
0=FALSE
1=TRUE
Defines attributes associated with the GageOffsetDrivenPoint macro. The Gage Offset is
the offset from the Gage Point to the active Driven Point of the current tool. The
GageOffsetDrivenPoint macro is called to calculate the Gage Offset using the specified
Driven Point. The GageOffsetAttributes macro is used to set attributes on how to
process this command under special circumstances. The Override Text argument is used
to set eleven attributes, where 1 represents TRUE and 0 represents FALSE. The default
attributes are: 1 and 7 being TRUE, and the remaining attributes being FALSE
(10000010000).
The attributes are (from left to right):
1. Set the gage offset to zero if the Driven Point ID is zero.
Default = TRUE
2. Set the gage offset to zero and produce an error if the Driven Point ID does not
match the active Tool ID.
Default = FALSE
3. Ignore the Driven Point ID. Use the first driven point if it exists.
Default = FALSE
4. If there is no Driven Point ID for the current tool, then set the gage offset to zero.
Default = FALSE. The default will be to set the gage offset to the tool's Gage
Point offset.
5. If a Driven Point ID exists for the current tool, but there is no matching Driven
Point ID, then set the gage offset to zero.
Default = FALSE
6. Produce an error message if no Driven Point ID's exists for the current tool.
Default = FALSE
7. Produce an error message if a Driven Point ID exists for the current tool, but no
matching Driven Point ID's exist.
Default = TRUE
8. Produce a warning message if a matching Driven Point ID does not exist.
Default= FALSE
9. Produce a warning message if a Driven Point ID exists for the current tool, but no
matching Driven Point ID's exist.
Default FALSE
10. If the specified Driven Point ID does not exist, use the first driven point if it
exists.
Default=FALSE
11. Set the gage offset to zero and produce an error if the Driven Point ID does not
match the active tool number.
NOTES:
1. This is only applicable when a numeric tool number (or pocket number)
has been specified.
2. The Tool number corresponds to the value passed to the ToolCode macro
(numeric). The Tool ID is the TLS ID for the current tool (alphanumeric).
These two values may, or may not, match depending on if a tool list is
being used, or if some other macro is being called to set the active tool.
Default= FALSE
EXAMPLES:
In the following examples, assume the T word sets the Tool ID, M6 loads the tool,
and the H word calls the GageOffsetDrivenPoint macro.

Example 1:
T1M6
G43H0 * Driven Point ID is zero
If ATTRIBUTE 1 is TRUE, set the offset to (0,0,0) otherwise see example 2.

Example 2:
T1M6
G43H2 * Driven Point ID does not match Tool ID
If ATTRIBUTE 2 is TRUE, set the offset to (0,0,0) and produce an error
message, otherwise see example 3.

Example 2b:
T1M6
G43H2 * Driven Point ID does not match Tool number
If ATTRIBUTE 11 is TRUE, set the offset to (0,0,0) and produce an error
message, otherwise see example 3.

Example 3:
T1M6
G43H4
If ATTRIBUTE 3 is TRUE,
Use the first Driven Point (if it exist), and the Gage Point. Ignore all other
attributes.
Else ATTRIBUTE 3 is FALSE
If a Driven Point exists for this tool and the specified Driven Point does not
exist.

If ATTRIBUTE 7 is TRUE
Produce an error message.
If ATTRIBUTE 9 is TRUE
Produce a warning message.
If ATTRIBUTE 5 is TRUE
Set the Gage Offset to (0,0,0) and ignore ATTRIBUTE 10.
If ATTRIBUTE 10 is TRUE
Use the First Driven Point.
If no Driven Points exist.
If ATTRIBUTE 6 is TRUE
Produce an error message.
If ATTRIBUTE 8 is TRUE
Produce a warning message.
If ATTRIBUTE 4 is TRUE
Set the Gage Offset to (0,0,0).
NOTE: Unless otherwise specified, the Gage Offset is the offset from the Gage
Point to the Driven Point of the current tool. If the Driven Point is not found,
unless otherwise specified, the Gage Offset will be set to the Gage Point.

GageOffsetDrivenPoint
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Sets the gage offset amount for the current tool loaded in the active tool. The amount of
offset is the difference between the Gage Point and the Driven Point saved with the tool
in the tool library. Each tool in the tool library can have multiple Driven Point records,
each with a unique ID. The ID is input as a text string, but is typically a numeric value.
The numeric argument passed to this macro will be used to match the Driven Point ID in
the tool library.
For example, if H calls GageOffsetDrivenPoint with an argument of 15, then the value
of Driven Point ID "15" is used in the calculation of the gage offset amount.
Gage OffsetDriven Point does not use the Gage Offset Table (see the Tables for
Processing G-Codes section, in the CGTech Help Library), it only uses the calculated
gage offset amount from the tool library file. If the Driven Point ID can not be found, the
Driven Point location is assumed to be at the tool's origin. Hence the gage offset amount
is equal to the tool's Gage Point value. If the numeric argument is zero (for example,
"H0" in the NC program), the gage offset amount is set to zero.
See "Notes about Gage Offset and Cutter Compensation" in the Notes about Special
Topics section, in the CGTech Help Library, for additional information.
NOTE: GageOffsetDrivenPoint works with alpha-numeric Tool ID's and numeric
Driven Point ID's.
GageOffsetFirstDrivenPoint
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Use GageOffsetDrivenPoint and GageOffsetAttributes
Added V6.0
Valid Inputs — Text, Value
Sets the gage offset amount for the current tool loaded in the active tool. The amount of
offset is the difference between the Gage Point and the first Driven Point saved with the
tool in the tool library. Typically, no arguments are passed to this macro.
For example, if H calls GageOffsetFirstDrivenPoint, then the first Driven Point for the
tool is used in the calculation of the gage offset amount. If "MATCHING" is passed as
the Override Text argument, then the above will be done only if the current tool id
matches the numeric argument passed.
GageOffsetFirstDrivenPoint does not use the Gage Offset Table (see the Tables for
Processing G-Codes section, in the CGTech Help Library), it only uses the calculated
gage offset amount from the tool library file. If the Driven Point ID can not be found, the
Driven Point location is assumed to be at the tool's origin. Hence the gage offset amount
is equal to the tool's Gage Point value. If the numeric argument is zero (for example,
"H0" in the NC program), the gage offset amount is set to zero.
See "Notes about Gage Offset and Cutter Compensation" in the Notes about Special
Topics section, in the CGTech Help Library, for additional information.
NOTE: GageOffsetFirstDrivenPoint works with alpha-numeric Tool ID's and
numeric Driven Point ID's.

GangToolChange
Function — TOOLING
Status — ACTIVE
Comment — Added V6.0.2
Valid Inputs — Text, Value
When the Tool component with the corresponding Tool Index value is found in the NC
machine configuration, this macro will call the following macros: TurretRetract,
TurretActivateTool, TurretLoadTool. These macros are not called if the specified Tool
component is already active, or the Tool component with the corresponding Tool Index
value is not found. Typically the Tool component must match both the Tool Index, and
the current subsystem. If a value of TOOL_INDEX_ONLY is passed, then the
comparison will be made strictly on the Tool Index.
NOTES:
1. This is almost identical to TurrentToolChange except the TurretIndex macro is
not called, and the new TOOL_INDEX_ONLY feature has been added.
2. When using GangToolChange, you do not need a Turret Rotations table (ref.
Turret Rotations table in the Tables For Processing G-Codes section, in the
CGTech Help Library).
3. This macro should not be used for turrets where a rotation is needed to index the
turret into proper location.
4. The use of this macro requires that a "Turret" type component be included in the
machine configuration.

GearModeOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
1 = On
Any other value = Off
This macro is used to turn On/Off a special "gear face hobbing" motion in VERICUT.
An Override Value of "1" turns gear face hobbing mode "On". Any other Override Value
turns gear face hobbing mode "Off".

GetBlockString
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = name of the NC variable to store the NC block string
This macro is used to store an NC block string in a specified text variable. Enter the name
of the NC variable that is to be used to store the NC block string in the Override Text
field. The NC variable content is refreshed when a new NC block string is read and
processed. The variable can be used to transfer NC block strings to the Post Processor.
See also: SetPostSubTextParameter

GetCommentString
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = name of the NC variable to store the comment string
This macro is used to store a comment string in a specified text variable. Enter the name
of the NC variable that is to be used to store the comment string in the Override Text
field. The NC variable content is refreshed when a new comment string is read in and
processed. The variable can be used to transfer comment strings to the Post Processor.
See also: SetPostSubTextParameter

GetCurrentDate
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Creates a control variable specified by the Override Text string and saves the computer
system's date into it. The date is saved as an integer value in "yyyymmdd" format. If the
specified variable exists, its value is updated.

GlobalVariables
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
This macro defines the ranges for global variables.
NOTE: This macro only applies to positive integer variables.
The format for the TEXT value is:
-30, 50-70, 90, 300-400, 500-
The above line would define the following variables as global:
- All variables 30 and below.
- 50 through 70
- 90
- 300 through 400
- All variables 500 and above
NOTE: This macro now makes the SetMaxSubsystemVar and SetMinSubsystemVar
macros obsolete.

GLSameAngle360OnOff
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
1 = turn this special case logic on
This macro turns "On" and "Off" a special case logic associated with rotary movement.
This macro should be called during the "Start of Processing" Event with a value = 1 to
turn this special case logic on. In general, this macro should never be called unless you
are certain that your machine is configured as defined below.
If a rotary is defined as an absolute 360 table, and the absolute rotary direction is set to
either positive is CCW or positive is CW, and the angle was specified on the block and
the angle is equal to the previously set angle, and the angle is not equal to zero, then a
360 degree move will be executed.
NOTE: This macro does not handle B-0 the same as B0. If you are using B-0, it is
recommended that you substitute B0.

GLSetCurrentZeroTrackingPos
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the PPX, PPY, PPZ, and PPW system variables based on the current position.

GLType2Begin
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
Marks the beginning of a G&L Type 2 command.

GLType2CLS
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
G&L Type 2 Call subroutine macro. This macro expects at least 1 argument. The first
argument must be the subroutine name.

GLType2DFS
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
G&L Type 2 Define subroutine macro. G&L subroutines can be defined inline, but are
not executed until called.
GLType2End
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
G&L Type 2 End subroutine macro. A number of event can cause the end of a Type 2
command. In order to correctly process a G&L Type 2 file, the Begin/End must be kept
in sync.

GLType2FXZ
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
G&L Type 2 Fixture Offset Zero macro. Expects 1 or 2 arguments. If 1, the specified
fixture offset will be reset. If 2, the specified range of fixture offsets will be reset.

GLType2FXZArg
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
G&L Type 2 FXZ arguments macro. Specifies the arguments for the GLType2FXZ
macro.

GLType2PDO
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
G&L Type 2 Probe Offset macro. Arguments are expected in Type I format.

GLType2PdoId
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
Typically called via a PDO record, for example (PDO,P1 X.105 Z.105), this macro loads
probe offset values for a specific probe number (probe "1" in this example) into a Probe
Offset table (ref. Probe Offset table in the Tables for Processing G-Codes section, in
the CGTech Help Library). The values are accessed when the probe is used. Plus and
minus signs determine the direction for probe travel.
GLType2PGM
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
G&L Type 2 Program name macro. This macro requires the program name to be
specified as the first argument.

GLType2PRB
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
This macro is specific to G&L, and is used to implement support for the G&L Type 2
PRB command (Probe Datum Offset Activate).
The VERICUT CTL file should be configured to have the "PRB" word (Type: Type II,
Sub Type: T) call the "GLType2PRB" macro.
With reference to the G&L manual:
PRB (PRB, Pn)
REQUIRED: (PRB, P offset number)
FUNCTION: Activate a probe datum offset (similar to activating a D code).
NOTE: Probe datum offsets will not modify the machine’s actual position in the part
coordinate system, but are used to modify the probe value returned from the probe to
reflect true size and/or location.
EXAMPLE:
N100 (PRB, P123) !Activate Probe Datum Offset 123
In the example above, P123 is passed as the first Type 2 argument to this macro. This
first argument is expected to be a ‘P’ followed by an offset number (for this
GLType2PRB macro, the ‘P’ is optional). The offset number is used as an index into the
"Probe Offset" Tool Table, where the first 6 values found will be stored in variables:
10101, 10102, 10103, 10104, 10105, and 10106. These variables can then be used in a
probing subroutine to determine the actual location of the surface being probed.
For details, see the Probe Offset table in the Tables for Processing G-Codes section, in
the CGTech Help Library.

GLType2RPT
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
G&L Type 2 Repeat macro. This macro requires the repeat count to be specified as the
first argument.
GLType2RTA
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value

G&L Type 2 Return Arguments macro. This causes a return from subroutine and the
passing back of specified values to the calling routine. The values that are to be returned
are specified as arguments to this macro.

GLType2UPD
Function — TYPE2
Status — ACTIVE
Valid Inputs — Value
G&L Type 2 Update Probe Display macro. This routine is passed a series of arguments
that are messages to be display to the console.

GotoJump
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Jumps to the specified sequence number. Searching begins at the beginning of the current
program/subroutine.
Also see: GotoJumpForwardBackward and GotoJumpForwardBackwardStart

GotoJumpForwardBackward
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Similar to GotoJump except it uses the sign of the value to determine the direction in
which to search. A positive value looks in the forward direction, a negative value looks
backwards. Searching begins from the current position. If within a subroutine, the
forward and backwards search is limited to the subroutine.
Also see: GotoJump and GotoJumpForwardBackwardStart

GotoJumpForwardBackwardStart
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Similar to GotoJumpForwardBackward except when the backward search does not find
the jump sequence number, it then searches forward starting at the beginning of the
program/subroutine. Similarly, when forward search does not find the jump sequence
number, it then searches forward starting at the beginning of the program/subroutine.
Also see: GotoJumpForwardBackward and GotoJump

GotoLabel
Function — BRANCHING
Status — ACTIVE
Valid Inputs — None
Branches to the label previously specified via calling the LabelName macro. This macro
searches for the first occurrence of the label within the file. Searching begins at the top of
the file.
Also see: LabelMacro and CinciGotoLabelName

GotoLabelForwardBackward
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
This macro causes the program to jump to the specified label by searching either forward
or backward from the current location. Jumps are only supported within the current
subroutine (or mainline program if you are not in a subroutine). A value that is greater or
equal to zero will cause a forward search, and a negative value will cause a backward
search. The label to jump to should be specified with a call to LabelName or
LabelNameValue, which must occur prior to calling this macro. If a condition exists on
the current block, the jump will only occur if the condition is true.
Also see: GotoJumpForwardBackward for similar capabilities for sequence jumping.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Hcode_Tool
Function — TOOLING
Status — ALTERNATE
Comment — Use ToolCode, ToolChange, and GageOffsetDrivenPoint
Valid Inputs — Text, Value
Calls ToolLengthCompValue, ToolCode, and ToolChange.
NOTE: This macro is no longer needed and may be deleted in the future.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

HeidCmdAdd
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Adds the values of the second and third arguments, and stores the result in the variable
specified by the first argument. Value arguments are set using ValueArgument and
variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D01 Q7 P01 Q1 P02 5
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=7, VALUE=7
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P02, TEXTSTR=5, VALUE=5
Debug: MACRO:HeidCmdAdd, WORD:D, TEXTSTR=01, VALUE=1

HeidCmdAssign
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Store the value specified by the second argument in the variable specified by the first
argument. Value arguments are set using ValueArgument and variable arguments are set
using VariableArgument.
Example: (using debug output from the G-Code Log File)
D00Q1P01+60
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=1, VALUE=1
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=+60, VALUE=60
Debug: MACRO:HeidCmdAssign, WORD:D, TEXTSTR=00, VALUE=0

HeidCmdCos
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Takes the cosine of the value of the second argument (in degrees) and stores the result in
the variable specified by the first argument. Value arguments are set using
ValueArgument and variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D07 Q15 P01 Q13
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=15, VALUE=15
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q13, VALUE=30
Debug: MACRO:HeidCmdCos, WORD:D, TEXTSTR=07, VALUE=7

HeidCmdDivide
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Divides the value of the second argument by the value if the third argument, and stores
the result in the variable specified by the first argument. Value arguments are set using
ValueArgument and variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D04 Q12 P01 Q1 P02 12
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=12, VALUE=12
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P02, TEXTSTR=12, VALUE=12
Debug: MACRO:HeidCmdDivide, WORD:D, TEXTSTR=04, VALUE=4

HeidCmdHypot
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Takes the square root of the sum of the squares of the values of the second and third
arguments, and stores the result in the variable specified by the first argument. Value
arguments are set using ValueArgument and variable arguments are set using
VariableArgument.
Example: (using debug output from the G-Code Log File)
D08 Q16 P01 3 P02 4
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=16, VALUE=16
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=3, VALUE=3
Debug: MACRO:ValueArgument, WORD:P02, TEXTSTR=4, VALUE=4
Debug: MACRO:HeidCmdHypot, WORD:D, TEXTSTR=08, VALUE=8
HeidCmdIfEqual
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Compares the values of the first two arguments and sets the "if condition" to TRUE if
they are equal, and FALSE if they are not equal. Value arguments are set using
ValueArgument.
Example: (using debug output from the G-Code Log File)
D09 P01 Q1 P01 Q6 P03 100
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q6, VALUE=55
Debug: MACRO:LabelNameValue, WORD:P03, TEXTSTR=100, VALUE=100
Debug: MACRO:HeidCmdIfEqual, WORD:D, TEXTSTR=09, VALUE=9
Debug: Start of After Motion macros.
Debug: MACRO:GotoLabel, WORD:P03, TEXTSTR=100, VALUE=100
NOTE: The various GOTO/JUMP macros are only executed when the "if condition" is
TRUE.

HeidCmdIfGreater
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Compares the values of the first two arguments and sets the "if condition" to TRUE if the
value of the first argument is greater than the value of the second, otherwise the "if
condition" is set to FALSE. Value arguments are set using ValueArgument.
Example: (using debug output from the G-Code Log File)
D11 P01 Q1 P01 Q6 P03 100
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q6, VALUE=55
Debug: MACRO:LabelNameValue, WORD:P03, TEXTSTR=100, VALUE=100
Debug: MACRO:HeidCmdIfGreater, WORD:D, TEXTSTR=11, VALUE=11
Debug: Start of After Motion macros.
Debug: MACRO:GotoLabel, WORD:P03, TEXTSTR=100, VALUE=100
NOTE: The various GOTO/JUMP macro are only executed when the "if condition" is
TRUE.
HeidCmdIfLess
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Compares the values of the first two arguments and sets the "if condition" to TRUE if the
value of the first argument is less than the value of the second, otherwise the "if
condition" is set to FALSE. Value arguments are set using ValueArgument and variable
arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D12 P01 Q1 P01 Q2 P03 300
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q2, VALUE=60
Debug: MACRO:LabelNameValue, WORD:P03, TEXTSTR=300, VALUE=300
Debug: MACRO:HeidCmdIfLess, WORD:D, TEXTSTR=12, VALUE=12
Debug: Start of After Motion macros.
Debug: MACRO:GotoLabel, WORD:P03, TEXTSTR=300, VALUE=300
NOTE: The various GOTO/JUMP macro are only executed when the "if condition" is
TRUE.

HeidCmdIfNotEqual
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Compares the values of the first two arguments and sets the "if condition" to TRUE if
they are not equal, and FALSE if they are equal. Value arguments are set using
ValueArgument.
Example: (using debug output from the G-Code Log File)
D10 P01 Q1 P01 Q2 P03 300
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q2, VALUE=60
Debug: MACRO:LabelNameValue, WORD:P03, TEXTSTR=300, VALUE=300
Debug: MACRO:HeidCmdIfNotEqual, WORD:D, TEXTSTR=10, VALUE=10
Debug: Start of After Motion macros.
Debug: MACRO:GotoLabel, WORD:P03, TEXTSTR=300, VALUE=300
NOTE: The various GOTO/JUMP macros are only executed when the "if condition" is
TRUE.
HeidCmdMultiply
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Multiplies the values of the second and third arguments, and store the result in the
variable specified by the first argument. Value arguments are set using ValueArgument
and variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D03 Q11 P01 Q1 P02 -5
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=11, VALUE=11
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P02, TEXTSTR=-5, VALUE=-5
Debug: MACRO:HeidCmdMultiply, WORD:D, TEXTSTR=03, VALUE=3

HeidCmdSin
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Takes the sine of the value of the second argument (in degrees) and stores the result in
the variable specified by the first argument. Value arguments are set using
ValueArgument and variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D06 Q14 P01 Q13
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=14, VALUE=14
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q13, VALUE=30
Debug: MACRO:HeidCmdSin, WORD:D, TEXTSTR=06, VALUE=6

HeidCmdSquareRoot
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Takes the square root of the value of the second argument and stores the result in the
variable specified by the first argument. Value arguments are set using ValueArgument
and variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D05 Q13 P01 900
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=13, VALUE=13
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=900, VALUE=900
Debug: MACRO:HeidCmdSquareRoot, WORD:D, TEXTSTR=05, VALUE=5

HeidCmdSubtract
Function — HEID CMD
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — None
Subtracts the values of the third argument from the second argument, and stores the result
in the variable specified by the first argument. Value arguments are set using
ValueArgument and variable arguments are set using VariableArgument.
Example: (using debug output from the G-Code Log File)
D02 Q10 P01 Q1 P02 +5
Debug: MACRO:VariableArgument, WORD:Q, TEXTSTR=10, VALUE=10
Debug: MACRO:ValueArgument, WORD:P01, TEXTSTR=Q1, VALUE=60
Debug: MACRO:ValueArgument, WORD:P02, TEXTSTR=+5, VALUE=5
Debug: MACRO:HeidCmdSubtract, WORD:D, TEXTSTR=02, VALUE=2

HeidCycleMillThread
Function — THREAD MILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Female Thread (hole/inside)
1 = Male Thread (post/outside)
Use to activate a Heidenhain thread milling cycle. Must be called after all parameters are
set or with the after motion option.

HeidDefinePoint
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro stores an X, Y, or Z value in the system array of points at the specific location
defined by the HeidPointIndex macro. The macro can be used to process a Heidenhain
G78 P… point definition command and should be applied with X, Y, and Z word to store
point coordinates.
Also see: HeidPointIndex
NOTES:
1. This macro is only applicable to the new drill cycle method. See "Notes about
New Drill Cycle Logic" in the Notes about Special Topics section, in the CGTech
Help Library, for additional information.
2. Polar point definition, and parameterized point, are not supported in current logic.

HeidGotoPointSeq
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is used to process a sequence of P words in a motion block where the usual
point definition "X… Y… Z…" has been replaced by P words representing a reference to
points in an array of points. In this case it is possible to process several points in one
block. The Heidenhain Mill Plus control supports up to 4 points in a block. The order of
the motions to specific points is defined by P word values (from 1 to 4), and an optional
value following "=" is used to specify a reference to the array of points. This macro
builds a sequence of points that will used by motion executing logic in VERICUT. All
points referenced in the block should have previously been defined (by G78 command),
otherwise a zero position is applied.
Also see: HeidDefinePoint and SetMultiPointCount
NOTES:
1. This macro is only applicable to the new drill cycle method. See "Notes about
New Drill Cycle Logic" in the Notes about Special Topics section, in the CGTech
Help Library, for additional information.
2. Polar point definition, and parameterized point, are not supported in current logic.

HeidIso_Polar
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
0 = turn off the polar state
1 = set the current state to be polar
If passed a value of 1, it will set the current state to be polar. If passed a value of 0, it will
turn off the polar state. In polar mode, you are given a pole, an angle, and a radius.
Also see: HeidIso_PolarAngle, HeidIso_PolarRadius, and the Heid_CircleCenter...
macros.
HeidIso_PolarAngle
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Use to define the Heidenhain polar angle. The incoming value will be interpreted as
incremental or absolute based on the current incremental/absolute state. The resulting
value is modal.
Also see: HeidIso_Polar, Heid_PolarMotionLinear, Heid_PolarMotionCW,
Heid_PolarMotionCCW, and Heid_PolarAngle

HeidIso_PolarRadius
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Defines the Heidenhain polar radius. The incoming value will be interpreted as
incremental or absolute based on the current incremental/absolute state. The resulting
value is modal.
Also see: HeidIso_Polar, Heid_PolarMotionLinear, Heid_PolarMotionCW,
Heid_PolarMotionCCW, and Heid_PolarRadius

HeidIso_SubDefCallEnd
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
This macro is used to define a subroutine, mark the end of a subroutine, and to call a
subroutine for a Heidenhain ISO control. On a Heidenhain ISO control, %ABC1 will
define the start of subroutine "ABC1", mark the end of subroutine "ABC1", or call
subroutine "ABC1". The context in which it is used determines its function.
The concept is: A program or subroutine always begins and ends with a %xxx. Any
%yyy within %xxx must be a call to a subroutine.
NOTES: In order for the above macro to work, the following must be true:
1. Any program or subroutine which is defined by this macro must also be ended by
this macro.
2. Any program or subroutine which is ended by this macro must also have been
defined by this macro.
3. If a program or subroutine is called by this macro, it must also be defined by this
macro.
HeidMPlusIfCheck
Function — BRANCHING
Status — ALTERNATE
Comment — Added V6.1.2
Use IfCheck.
Valid Inputs — Value
This macro is identical to the IfCheck macro except the condition is true if the value
(associated with the conditional expression) is greater then zero. The IfCheck macro is
FALSE if (when cast to an integer) the value is zero, otherwise it is TRUE.
Typically, the "IF" statement is followed by a logical expression. Logical expressions are
equated to either zero or one. Languages support, however, the syntax of: if (value)
Typically, the results of programming in this manner is unknown.
Also see: IfCheck and NumIfCheck

HeidMPlus_SubroutineSequence
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
If this is the first sequence number for the current subroutine, then the
SubroutineSequence macro will be called. Otherwise, the Sequence macro will be called.

HeidPointIndex
Function — VARIABLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is used to process a G78 P… point definition for a Heidenhain Mill Plus
control. The macro should be applied for P words whose value specify the point location
in system array of points. To store the points VERICUT uses variable $HMP_POINTS
which is an array of numbers, size 3 X 255. This array should be defined at the "Start of
Processing" event using the CGTechVarDefMacro.
Also see: HeidDefinePoint
NOTES:
1. This macro is only applicable to the new drill cycle method. See "Notes about
New Drill Cycle Logic" in the Notes about Special Topics section, in the CGTech
Help Library, for additional information.
2. Polar point definition, and parameterized point, are not supported in current logic.
HeidReturnFromSubCall
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro will cause a return from subroutine if the subroutine was called with
Heid_CallLbl.
NOTE: Heid_CallLbl actually calls the current subroutine and then branches to the
specified label. This macro uses this logic to distinquish between if a "PGM" is being
called or a "LBL" is being called.

Heid_BlockInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Heidenhain specific, block initialization macro. This macro is identical to BlockInit,
except that the circle IJK parameters are modal. If it is used, this macro should replace
the standard BlockInit macro and be called at the "Start of Block Processing" event.

Heid_CallLbl
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
Either calls the current subroutine and branches to the specified label or jumps to the start
of a repeat section, depending on the status of the Heid_RepeatCount macro. Heidenhain
repeat sections are similar to subroutines but do not include an end (LBL 0) block.
When the Heid_RepeatCount macro has been called, the section of code is repeated until
the repeat count is completed. Repeat sections may be nested to a maximum depth of
eight.
When the Heid_RepeatCount macro has not been called, the current subroutine will be
called, and then the GotoLabel macro will be called.
Enter the number of the Label in the Override Value field.
NOTE: This macro should be executed after motion allowing the repeat count to call
the Heid_RepeatCount macro first.
Heid_CallSubName
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Either calls a machine code subroutine or jumps to the start of a repeat section, depending
on the status of the Heid_RepeatCount macro. Heidenhain repeat sections are similar to
subroutines but do not include an end (LBL 0) block.
When the Heid_RepeatCount macro has been called, the section of code is repeated until
the repeat count is completed. Repeat sections may be nested to a maximum depth of
eight.
When the Heid_RepeatCount macro has not been called, a machine code subroutine call
is made. If code is currently processing the specified subroutine, then an EndSub will be
executed. Otherwise, a CallSubName will be executed.
Enter name of subroutine in the Override Text field or number of subroutine in the
Override Value field.
NOTE: This macro should be executed after motion allowing the repeat count to call
the Heid_RepeatCount macro first.

Heid_CallTextSubName
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Calls external subroutines using Heid_CallSubName. The subroutine must be defined on
the Advanced Control Options window: Subroutines tab (ref. Advanced Control
Options window: Subroutines tab in the VERICUT Help section, in the CGTech Help
Library).

Heid_CircleCenterIncX
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the X coordinate of the center of a circle. The incremental coordinates are relative to
the last programmed tool position. The Circles... modals determine how these values are
interpreted.
Heid_CircleCenterIncY
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the Y coordinate of the center of a circle. The incremental coordinates are relative to
the last programmed tool position. The Circles... modals determine how these values are
interpreted.

Heid_CircleCenterIncZ
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the Z coordinate of the center of a circle. The incremental coordinates are relative to
the last programmed tool position. The Circles... modals determine how these values are
interpreted.

Heid_CircleCenterX
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the X coordinate of the center of a circle. The Circles... modals determine how these
values are interpreted. These macros are also used to define the polar pole or base
position used in Heidenhain polar motion commands.

Heid_CircleCenterY
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the Y coordinate of the center of a circle. The Circles... modals determine how these
values are interpreted. These macros are also used to define the polar pole or base
position used in Heidenhain polar motion commands.

Heid_CircleCenterZ
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets the Z coordinate of the center of a circle. The Circles... modals determine how these
values are interpreted. These macros are also used to define the polar pole or base
position used in Heidenhain polar motion commands.
Heid_CutterCompOnOff
Function — CUTTER COMPENSATION
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
0 = Turn Off permanently (default)
1 = Turn On
2 = Turn Off for a single block
This Heidenhain specific macro, turns On/Off the checking of Heidenhain small contour
steps. By default, it is set to "Turn Off permanently". If it is used, the control should call
the macro at the "Start of Block Processing" event with value 1.
In the Word/Address list, this macro should be called with value 0, to turn flag off, and
"Process After Motion" box checked, since it is a cutter compensation macro which
deals with motion look ahead; and therefore the block calling this macro will perform its
motion on the next motion block. It will set the flag back to 1 automatically after the
motion.

Heid_EndSub
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — None
Similar to EndSub, except a return from the main does not cause an error message.

Heid_Feedrate
Function — FEEDS & SPEEDS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — None
This macro will detect the active units and adjust the feedrate accordingly. If units is
determined to be "INCH", VERICUT will divide the programmed feedrate by ten when
simulating and multiply the OptiPath output by ten.

Heid_FeedrateFormat
Function — OPTIPATH
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
1 = ON
2 = OFF
This macro provides the ability to not include R and M codes in the command line for the
initial tool in OptiPath output as required by certain Heidenhain conversational controls.
Examples:
Value = 1, "L F1200"
Value = 2, "L R F1200 M"

Heid_GetPocketContours
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Starts the processing of the contour subroutine(s) to capture the contour geometry. This
macro is used for simulating Heidenhain CYCL DEF 22, 23, 24, and 25
pocketing/contouring with motions calculated by the DLL from ModuleWorks.
See "Notes about simulating Heidenhain SL pocket cycles" in the Notes on Special
Topics section, in the CGTech Help Library, for additional information.
NOTE: If "single step" is being used, you will have to step through all the contour
subroutines until the next program line will be processed.

Heid_GotoLabel
Function — BRANCHING
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
Branches to the label previously specified via calling the LabelName macro. If the branch
point label is not found, this macro makes a Heid_CallSubName to the label.
This macro must be called with Process after Motion toggled "On" (ref. Add/Modify
Word/Address window in the VERICUT Help section, in the CGTech Help Library).

Heid_InitializePocketContours
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — None
Initializes the geometry list and should be called when the first contour subroutine is
referenced. This macro is used for simulating Heidenhain CYCL DEF 22, 23, 24, and 25
pocketing/contouring with motions calculated by the DLL from ModuleWorks.
See "Notes about simulating Heidenhain SL pocket cycles" in the Notes on Special
Topics section, in the CGTech Help Library, for additional information.
Heid_JumpDecrement
Function — BRANCHING
Status — OBSOLETE
Comment — use the Word Format window Special Sub Type "Heidenhain IF"
Valid Inputs — Value
If the G29 condition is true, this macro decrement the variable specified by
Heid_JumpDecrementVar by the amount specified by Heid_JumpDecrement.
Example:
Using the Heidenhain MillPlus G29 Conditional Jump macro
NAME "G29" {
TYPE MACRO_CALL
INCH "DECIMAL"
METRIC "DECIMAL"
}
WORD_VALUE "N=" {
COND_AND "G" "22" {
MACRO "SubroutineName"
}
COND_AND "I" "-1"
COND_AND "G29" {
MACRO "GotoJumpForwardBackward" {
OVERRIDE_EXP "$ * -1"
}
MACRO "Heid_JumpDecrement" {
AFTER_MOTION Yes
}
}
COND_AND "I"
COND_AND "G29" {
MACRO "GotoJumpForwardBackward"
MACRO "Heid_JumpDecrement" {
AFTER_MOTION Yes
}
}
}
WORD_VALUE "G29" {
MACRO "IfCheck"
MACRO "Heid_JumpDecrementVar"
}
WORD_VALUE "K" {
COND_AND "G" "81-86" {
MACRO "CycleStepValue"
}
COND_AND "G29" {
MACRO "Heid_JumpDecrementValue"
}
MACRO "CircleCenterZ"
}

Heid_JumpDecrementValue
Function — BRANCHING
Status — OBSOLETE
Comment — use the Word Format window Special Sub Type "Heidenhain IF"
Valid Inputs — Value
This macro saves the amount that the variable set in Heid_JumpDecrementVar should be
decremented by if the jump occurs. See Heid_JumpDecrement for an example.

Heid_JumpDecrementVar
Function — BRANCHING
Status — OBSOLETE
Comment — use the Word Format window Special Sub Type "Heidenhain IF"
Valid Inputs — Text
This macro is passed the expression associated with a Heid MillPlus G29 Conditional
Jump command. This expression begins with 'E' followed by the variable number that is
to be used to evaluate the expression. This macro saves this variable number so that it can
be used by the Heid_JumpDecrement macro. See Heid_JumpDecrement for an example.

Heid_LabelMacro
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Identifies the current line with the given Label (see LabelMacro). In addition, this
Heidenhain version checks for a label being used as the start of a subroutine and calls
SubroutineSequence when appropriate. Note that "LBL 0" must call Heid_EndSub with
the scan pass checked.

Heid_MotionCCW
Function — MOTION
Status — ALTERNATE
Comment — Use MotionCCW
Valid Inputs — Text, Value

Sets the motion type to CCW. Similar to MotionCCW except with an additional check to
force a 360 degree circle when explicit end points are not specified.
Heid_MotionCW
Function — MOTION
Status — ALTERNATE
Comment — Use MotionCW
Valid Inputs — Text, Value
Sets the motion type to CW. Similar to MotionCW except with an additional check to
force a 360 degree circle when explicit end points are not specified.

Heid_MotionLinear
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to MotionLinear, except this macro will also reset the circle parameters.

Heid_PilotContourDef
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Word, Value
This macro is specific to a Heidenhain Pilot control. It will read in contour information
from the FERIGTEIL section of the program during the scan pass.
Lines supported include:
N G0 X Z
N G1 X Z B
N G22 X Z K I II KI B R
N G23 XZ K B H U A P R
N G25 H I K R P

Heid_PilotCycleTurnFinish
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — None
This macro is specific to a Heidenhain Pilot control. It is used to select a single pass
along the Heidenhain Pilot 4290 turning cycle profile to finish the profile. It is normally
called after a rough cut cycle to avoid programming the profile twice.
Heid_PilotCycleTurnRoughCut
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — None
This macro is specific to a Heidenhain Pilot control. It is used to select the Heidenhain
Pilot 4290 turning roughing cut cycle.

Heid_PilotEndContour
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
This macro is specific to a Heidenhain Pilot control. It is used to specify the sequence
number of the last motion block used to define the work shape profile being cut by the
Heidenhain Pilot 4290 turning cycle.

Heid_PilotHoleRef
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
This macro is specific to a Heidenhain Pilot control. This macro is called when a hole is
being referenced. It support holes defined in the MANTEL or MANTEL Y sections.
The input Value corresponds to the N sequence number being referenced.

Heid_PilotLimitInXDirection
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
This macro is specific to a Heidenhain Pilot control. It is used to specify the Heidenhain
Pilot 4290 turning cycle contour limit in the X direction.
Heid_PilotLimitInZDirection
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
This macro is specific to a Heidenhain Pilot control. It is used to specify the
Heidenhain Pilot 4290 turning cycle contour limit in the Z direction.

Heid_PilotPrintContourDef
Function — MISC
Status — ACTIVE
Comment — Temporary Debug macro for the Pilot control
Valid Inputs — none

Heid_PilotPrintSurfaceDef
Function — MISC
Status — ACTIVE
Comment — Temporary Debug macro for the Pilot control
Valid Inputs — none

Heid_PilotPrintSurfaceYDef
Function — MISC
Status — ACTIVE
Comment — Temporary Debug macro for the Pilot control
Valid Inputs — none

Heid_PilotRecessing
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — None
This macro is specific to a Heidenhain Pilot control. It is used to initiate the Heidenhain
Pilot 4290 recess (grooving) cycle. This macro must be done after motion.
Heid_PilotRecessingAction
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = roughing and finishing (default)
1 = only roughing (not supported yet)
2 = only finishing (not supported yet)
This macro is specific to a Heidenhain Pilot control. I is used to specify the Heidenhain
Pilot 4290 recess (grooving) cycle action.

Heid_PilotStartContour
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
This macro is specific to a Heidenhain Pilot control. It is use to specify the sequence
number of the first motion block used to define the work shape profile being cut by the
Heidenhain Pilot 4290 turning cycle.

Heid_PilotSurfaceDef
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Word, Value
This macro is specific to a Heidenhain Pilot control. It will read in the information from
the MANTEL section of the program during the scan pass.
Lines supported include:
MANTEL X
N G308 P
N G309
N G310 B P WA
N G411 Z C K W Q
Heid_PilotSurfaceYDef
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Word, Value
This macro is specific to a Heidenhain Pilot control. It will read in the information from
the MANTEL section of the program during the scan pass.
Lines supported include:
MANTEL X C B I K H
N G308 P
N G309
N G386 Z K B X
N G380 Z Y B P W R

Heid_PocketSub
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Adds a contour subroutine label to the geometry list. It should be called for each element
in a "contour subroutine" list. The TNC430 allows up to 12 contours for each pocket.
This macro is used for simulating Heidenhain CYCL DEF 22, 23, 24, and 25
pocketing/contouring with motions calculated by the DLL from ModuleWorks.
See "Notes about simulating Heidenhain SL pocket cycles" in the Notes about Special
Topics section, in the CGTech Help Library, for additional information.

Heid_PolarAngle
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Sets the polar angle used in the Heid_PolarMotionLinear macro.

Heid_PolarIncAngle
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Sets the incremental polar angle in the Heid_PolarMotionCW and
Heid_PolarMotionCCW macros.
Heid_PolarIncRadius
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Adjusts the polar radius (see Heid_PolarRadius) by the incremental IPR value passed.

Heid_PolarMotionCCW
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Text, Value
Processes a circular polar counter-clockwise command (with optional helix) using the
Heid_PolarIncAngle to specify the arc's included angle and
Heid_CircleCenterX, Heid_CircleCenterY, Heid_CircleCenterZ as the center.

Heid_PolarMotionCW
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Text, Value
Processes a circular polar clockwise command (with optional helix) using the
Heid_PolarIncAngle to specify the arc's included angle and
Heid_CircleCenterX, Heid_CircleCenterY, Heid_CircleCenterZ as the center.

Heid_PolarMotionLinear
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Text, Value
Calculates linear XY, ZX, or ZY motion using Heid_PolarRadius as the radius,
Heid_PolarAngle as the angle, and Heid_CircleCenterX, Heid_CircleCenterY,
Heid_CircleCenterZ as the center.

Heid_PolarRadius
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Sets the polar radius used in the Heid_PolarMotionLinear macro.
Heid_ProcessRNDorCHF
Function — CHAMFER / ROUND
Status — ACTIVE
Valid Inputs — Text
Processes a corner round, or chamfer, using data stored by Heid_XAxisMotion and
Heid_YAxisMotion macros. The multiple block format used by Heidenhain requires this
type of look-ahead processing.

Heid_RepeatCount
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Sets the REP count for repeating Heidenhain machine code sections. See description for
Heid_CallSubName.

Heid_SpindleFormat
Function — OPTIPATH
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
1 = ON
2 = OFF
This macro provides the ability to include the Tool Number in a TOOL CALL commands
in OptiPath output as required by certain Heidenhain conversational controls.
Examples:
Value = 1, "TOOL CALL xx S1000", where xx is the Tool Number of the tool
loaded in the spindle.
Value = 2, "TOOL CALL S1000"

Heid_XAxisIncreMotion
Function — MOTION
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Text, Value
Similar to XAxisIncreMotion with an additional look-ahead check being made for RND,
CHF, G24, or G25 on the next program block. When RND, CHF, G24, or G25 is detected
on the next block, the actual motion is deferred until the next block is processed and the
corner round or chamfer can be calculated.
Also see: Heid_ProcessRNDorCHF
Heid_XAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to XAxisMotion with an additional look-ahead check being made for RND, CHF,
G24 or G25 on the next program block. When RND, CHF, G24, or G25 is detected on
the next block, the actual motion is deferred until the next block is processed and the
corner round or chamfer can be calculated.
Also see: Heid_ProcessRNDorCHF

Heid_YAxisIncreMotion
Function — MOTION
Comment — Added V7.0.2
Status — ACTIVE
Valid Inputs — Text, Value
Similar to YAxisIncreMotion with an additional look-ahead check being made for RND,
CHF, G24, or G25 on the next program block. When RND, CHF, G24, or G25 is detected
on the next block, the actual motion is deferred until the next block is processed and the
corner round or chamfer can be calculated.
Also see: Heid_ProcessRNDorCHF

Heid_YAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to YAxisMotion with an additional look-ahead check being made for RND, CHF,
G24, or G25 on the next program block. When RND, CHF, G24, G25 is detected on the
next block, the actual motion is deferred until the next block is processed and the corner
round or chamfer can be calculated.
Also see: Heid_ProcessRNDorCHF

HelicalFullLoops
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Specifies the number of full loops should be processed for a given helical motion. Using
this value, the start and end angle, and the helical offset, the pitch is then calculated. The
default for this value is 0.0 (generally the pitch if specified, and the number of loops is
calculated).
Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Icode
Function — CIRCLES
Status — ALTERNATE
Comment — Use Conditionals to call macros directly
Valid Inputs — Text, Value
Depending on the motion type (circular or non-circular), either sets the X coordinate of a
circle, or establishes a 3D offset. The interpretation of the center point is dependent on
the Circles control settings (ref. Control Settings window: Circles tab in the VERICUT
Help section, in the CGTech Help Library).
Also see: Jcode and Kcode

IfBlock
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Defines the beginning of an "IF" block of code. It evaluates whether the specified
expression is TRUE or FALSE to determine whether or not to execute the block of code.
The end of the "IF" block of code is specified with EndIfBlock. The "IF" block of code
can also contain any number of "ELSE", or "ELSE_IF", statements specified using
ElseBlock.
This command is used to process an "If" block of the form:
IF (expression)
.
.
.
ELSEIF (expression)
.
.
.
ELSE
.
.
.
ENDFOR
The following Word Formats should be defined:
IF and ELSEIF should be defined as a words of Type = "Macro", Sub Type =
"Numeric".
ELSE and ENDIF should be defined as words of Type = "Macro", Sub Type =
"None".
( ) represent words of type left and right precedence.
Entries should be defined for IF, ELSEIF, ELSE and ENDIF in the Word/Address
table as illustrated in the following picture:

NOTE: Similar to IfCheck except that it allows the execution of multiple blocks when
the "If" condition is TRUE.

IfCheck
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Sets an internal variable indicating whether the corresponding "IF" statement was TRUE
or FALSE. This variable is reset at the beginning of the next block.
This command is used to process an "If" check of the form:
If (expression) GOTO 30
.
.
.
GOTO 40
N30
.
.
.
GOTO 40
N40

The following Word Formats should be defined:


IF and GOTO should be defined as a word of Type = "Macro", Sub Type = "Numeric".
() represent words of type left and right precedence.
Entries should be defined for IF and GOTO in the Word/Address table as illustrated
below:

The IfCheck macro flag is used to determine if the following Macros/functions should be
executed:
MACROS
AlarmSignal
CinciGotoLabelName
ConditionalEndOfBlock
Heid_CallLbl
HeidGotoLabel
HeidJumpDecrement
OkumaGotoLabel
OkumaGotoJump
StopUnconditional
GotoJump
GotoJumpForwardBackward
GotoJumpForwardBackwardStart
GotoLabel
GotoLabelForwardBackward
FUNCTIONS
comment (internal function)
var_assignment (internal function)
In general, IfCheck controls GOTO's and variable assignments.
NOTE: Similar to IfBlock except that it only applies to the current block when the "IF"
condition is TRUE.
IfCheckAllMacros
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
If this macro is passed a value of 1, it causes the IfCheck macro to be applied to all
macros called after the IfCheck on the current block. Typically, this macro would be
called during the "Start of Processing" event.
NOTE: The IfCheck also applies to whether comments are passed on, and if variable
assignments are executed. This is independent of IfCheckAllMacros.
Also see: ResetIfCheck, NumIfCheck, and HeidMPlusIfCheck

IgnoreMacro
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Ignores the word/value that called it (causes no action). During the creation of a report,
the macro will create an unsupported word/value entry.

Ijk2AbcIgnoreLimits
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
0 = Off (Default)
1 = Ignore Travel Limits
Any other value = Off
This macro turns off travel limit checking when converting IJK value to ABC values and
outputs the converted solution even if the motion will create an error for exceeding the
travel limits. It will still print an error to show that the machine has exceeded its travel
limits and halt the simulation.

Ijk2AbcOffsetAdjust
Function — MACRO_WORK_OFFSETS
Status — ACTIVE
Comments — Added V7.0.4
Valid Inputs — Value
0 = no adjustments are made to calculated rotary axis angles (Default)
1 = calculated angles are adjusted by the current offset values
This macro is used to modify calculated rotary axis values when an input tool axis vector
(IJK components) is converted to a rotary axis ABC position. If the Override Value is set
to 1, then the calculated angles are adjusted by the current offset values. This behavior is
specific for 840D control. The default is Override Value set to 0 where no adjustments
are made to calculated rotary axis angles.

Ijk2AbcType
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
1 = Specific: Forest Line 5ax mill with A/B head rotation and ATEK
control.
2 = Semi Generic: A-B
3 = Specific: 5-axis tripod-type mill with A/B head rotation and Sinumerik
840D control
4 = Generic: B-C with rotaries set to linear.
5 = Generic: A-C with a 50 degree nutator.
6 = Specific: Maka CR27TM 5ax mill with A/B rotation and BWO 900C
control.
7 = Generic: A-C.
8 = Generic: B-C, also supports any angle nutator.
9 = Generic: B-C, also supports any angle nutator.
10 = Generic: A-C, also supports any angle nutator.
11 = Generic: B-A.
12 = Generic: A-B.
13 = Generic: A-C with A,B,C input.
14 = Generic: C-B, also supports any angle nutator.
15 = Specific: Old ElectroImpact Tape laying machine
16 = Specific: Old Test Tape laying machine
17 = Specific: 5-axis tripod type mill with a B/A head rotation
18 = Specific: Tricept machine.
19 = Specific: ElectroImpact Tape laying machine
20 = Specific: Tricept machine with no travel limit checks.
21 = Generic: A
22 = Generic: B
23 = Generic: C
24 = Specific: 6-axis tripod type mill with a C/B/A head rotation and a right
angle head.
25 = Generic: B-A, also support nutator at any angle
26 = Generic: B-C machine with two nutator angles
28 = Specific: Tricept (A24 rotated 90).
29 = Specific: Tricept (A24 rotated 90) - no Travel Limit checks in determining
best angle.
30 = Specific: Tape with a generic VCP posted output.
31 = Specific: For robots with 5 or 6 rotary axis. Current logic automatically
resolves the inverse kinematics of most robots built by KUKA,
Kawasaki, Fanuc and ABB. This is the only indicator that the
machine kinematics is a robot.
NOTE: This macro should be called in the Reset event.
32 =Specific: Supports a Brown fastener machine where the Y-axis is not
supported directly and the Z-axis is virtual.
99 = Universal (Default)
Typically called during the "Start of Processing" event, this macro controls the type of
conversion required to convert tool vector information (IJK rotary motion data) into ABC
rotations. The tool vector information is typically set with [IJK]Vector macros.
Conversion type is specified via Override Value.
There are two classes of conversion routines, "Generic" and "Specific". Specific
conversion types are meant for a very specific machine/control configuration. Generic
conversion types are for any machine/control configurations that follow simple rules.
Generic conversion types:
• Assume that the Rotaries are set to "Absolute" and the direction set to "Shortest
Distance".
• When converting from IJK to ABC, typically there are 2 solutions. The Generic
routines will choose the solution which requires the smallest total rotary travel.
• Assume that the control will be configured to handle any RTCP/RPCP issues.
• Assume that the only rotation applied to components will be on nutator
components.
• Are based on the order that the rotaries appear starting at the Tool, and ending
with the Stock. This means that an A on C head machine can use the same
Generic conversion type as an A head/C table machine, or a C on A table
machine. These 3 machine configurations would all be described as "A-C".
NOTE: Changes to existing conversion types will only be made for conversion types
listed as "Specific", and will only be made as problems arise for specific machine/control
configurations.
Valid Override Values (conversion types):
1 = Specific: Forest Line 5ax mill with A/B head rotation and ATEK control.
In this case, the macro also rotates the work and shift offsets based on the rotation
that is applied to the stock. An assumption is made that the entire amount of the
dynamic and work offsets should be rotated by the amount the part is rotated.
This logic will not work when the machine is not built about zero, and only part
of the work offset is to be rotated.
NOTES:
1. Rotary control settings should be set to "Absolute" with the direction set
to "Shortest Distance".
2. This option uses a rotation plane to adjust the coordinate system for any
rotation of the B axis (part side rotary). This option can not be used with
RPCP or Rotation Planes.
2 = Semi Generic A-B.
For example :Droop & Rein 5ax mill with A/B table rotation and Makro 80
control. Similar case 1 above, except both A/B rotaries are on the "tool side" of
the machine. This means that a rotation plane is not used to adjust for part side
rotary, and therefore this option does not have the restriction on RPCP or Rotation
Planes.
3 = Specific: 5-axis tripod-type mill with A/B head rotation and Sinumerik 840D
control.
A highly customized machine where as the spindle/tool assembly
rotates, it moves off center relative to the cylinder which surrounds it.
To simulate this, "virtual" U and V axes were included in the machine
definition. When offsets are applied to U and V, counter offsetsare
applied to X and Y. This macro option was designed to be driven via
Z1,A1,Z2,A2,Z3,A3 NC codes, the tool is actually driven with A, B,
C.
Also see: TripodArmLength and TripodRodLength.
4 = Generic B-C with rotaries set to linear.
For example: Droop & Rein 5ax mill with B/C head rotation and Sin840D
control.
5 = Generic A-C with a 50 degree nutator.
For example: Dorries Scharmann AMC 5-axis mill with A/C head rotation
and Heid ATEK HSPlus control. Converts PQR Vector programming to A, C
head rotations.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
6 = Specific: Maka CR27TM 5ax mill with A/B rotation and BWO 900C control.
5-axis orthogonal to 50.02 degree nutator conversion. Converts virtual A, B
angles into real A, B angles.
Also see: IjkAAxisMotion and IjkBAxisMotion.
7 = Generic A-C.
Supports both linear and absolute rotary tables.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
8 = Generic B-C, also supports any angle nutator.
This option looks at the X rotation of the B axis to determine the nutator
angle. Although the angle may vary, the basic machine configuration must
remain fairly constant in order for this logic to work.
Supports both linear and absolute rotary tables. This was initially
implemented for the DMU50.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
9 = Generic B-C, also supports any angle nutator.
This is an updated version of 8, described above. Typically this conversion
type should be used rather than 8.
10 = Generic A-C, also supports any angle nutator.
Supports both linear and absolute rotary tables.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
11 = Generic B-A.
Supports both linear and absolute rotary tables.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
12 = Generic A-B.
Supports both linear and absolute rotary tables. Includes special case for
(0, 1, 0) vector where the B remains unchanged, and only the A rotates.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
13 = Generic A-C with A,B,C input.
The input A, B, C angles are converted into an IJK tool vector, and then
conversion type 10 is used.
14 = Generic C-B, also supports any angle nutator.
Supports both linear and absolute rotary tables. Includes special case for
(0, 1, 0) vector where the B remains unchanged, and the C axis rotates.
Adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. G-Code Settings window: Travel Limits tab, or
Machine Settings window: Travel Limits tab, in the VERICUT Help
section, in the CGTech Help Library).
15 = Specific: Old ElectoImpact Tape laying machine
16 = Specific: Old Test Tape laying machine
17 = Specific: 5-axis tripod type mill with a B/A head rotation
18 = Specific: Tricept machine.
19 = Specific: ElectroImpact Tape laying machine
20 = Specific: Tricept machine with no travel limit checks.
21 = Generic: A
22 = Generic: B
23 = Generic: C
24 = Specific: 6-axis tripod type mill with a C/B/A head rotation and a right angle
head.
25 = Generic: B-A, also support nutator at any angle
26 = Generic: B-C machine with two nutator angles
28 = Specific: Tricept – Similar to option 18 except Component A24 rotated 90
degrees
29 = Specific: Tricept – Similar to option 20 except Component A24 rotated 90
degrees
30 = Specific: Tape with a generic VCP posted output. This machine contains 4
channels, and a Rotisserie.
99 = Universal (Default)
The "universal" Ijk2AbcType method for converting tool vector information (IJK
rotary motion data) into ABC rotations is intended as a replacement for methods
5, 8, 9, 10, 12, 14, 18, 20, 21, 22, 23, 25 and 26 which are now considered
“obsolete”.
The new universal logic is based on a machine configuration where 2 rotary
components represent 2 degrees of freedom. When the rotation axes of the rotary
components are orthogonal (axes are independent) the conversion is satisfied for
any IJK values.
If the rotation axes are not orthogonal, then only a subset of all IJK values can be
satisfied. Although the angle may vary, it must remain constant after the machine
is build in order for this logic to work. In other words, if a dormant rotary
component is present between the 2 active rotary components, it must remain
unchanged during processing. This restriction can be changed in future if needed.
The universal method supports both linear, and absolute, rotary axis motion (ref.
Control Settings window: Rotary tab in the Configuration menu section of
VERICUT Help, in the CGTech Help Library), and reversal of the rotary
component's motion direction (ref. Reverse Direction on the Configure
Component window, Component Type: All Motion Axes, in the Project Tree
section of VERICUT Help, in the CGTech Help Library).
It adheres to "travel limits" unless Ignore is toggled "On" for a component on the
Travel Limits tab for either the G-Code Settings window, or the Machine Settings
window (ref. Collision and Travel Limits window: Travel Limits tab in the
Project Tree section, or Machine Settings window: Travel Limits tab, in the
Configuration menu section, of VERICUT Help, in the CGTech Help Library).
This method should be used instead of methods 5, 8, 9, 10, 12, 14, 18, 20, 21, 22,
23, 25 and 26 described above.

IjkAAxisMotion
IjkBAxisMotion
IjkCAxisMotion
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
These macros are specific to the Maka CR27TM 5-axis mill with A/B rotation and BWO
900C control, and are to be used with Ijk2AbcType, Override Value = 6. For this control,
A should call IjkCAxisMotion, and B should call IjkAAxisMotion. These macros work
will convert the CA orthogonal values into IJK, and then into CA with a 50 degree
nutator head. If 0.0 is passed to IjkAAxisMotion, then the C-axis will be driven to the
last specified value passed to IjkCAxisMotion.

IJKVector
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro is used to specify the IJK vector of the tool. It will set the I value on the first
call on the block, the J value on the second call on a block, and the K value on the third
call on a block.
See also: IVector, JVector, KVector.
IJKVector2
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro is used to specify the motion vector. It will set the I value on the first call on
the block, the J value on the second call on a block, and the K value on the third call on a
block.

InActivateAxis
Function — ACTIVATION
Status — ACTIVE
Valid Inputs — Text, Value
text value
All = all axes are inactivated
numeric value
1 = X axis
2 = Y axis
3 = Z axis
4 = A axis
5 = B axis
6 = C axis
7 = U axis
8 = V axis
9 = W axis
10 = A2 axis
11 = B2 axis
12 = C2 axis
Marks this axis as inactive for this subsystem. Used with ActivateAxis on synchronized
turning tool paths to avoid conflict with Stock/SubStock rotaries. Is passed the numeric
value of the axis to inactivate (1-12) or a text value of "All". Each axis is associated with
a numeric value as follows:
NOTE: Since the Spindle and Sub-spindle axis are common to both subsystem 1 and 2,
initially, their corresponding Axis is marked as "inactive". This way, the subsystems do
not conflict with each other.
IncrementalDimensionMode
Function — MOTION
Status — ACTIVE
Comments — Added V7.0.4
Valid Inputs — Text
Use to specify how the IncrementalDimension function (Word Type) should behave
under special circumstances. This will be controlled with a series of bit switches. These
switches will be specified as a series of 0's and 1's in the Text field.
NOTE: Currently, there is only 1 switch.
First switch: When in Absolute mode, and when associated with the "X" word, should
the input value be adjusted based on the XAxisMultiplier value.
0 = Increment the X Axis by (value * XAxisMultiplier).
1 = Increment the X Axis value by the specified amount.
EXAMPLE:
Assume the XAxisMultiplier is currently set to .5, and the X axis is sitting at 100.
X=IC(2) Would normally drive the X axis to 101. If the above macro is called with a
Text Override value of 1, then the X axis would be driven to 102.

IncrementalShift
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — None
Shifts the work coordinate system by the specified axis values. The values will be
interpreted as incremental. Only values specified on the block will be adjusted. (Shift
Offset 0, INCREMENTAL)
See "Notes about Shift Macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

IncrementalShiftRotationDynamic
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — None
This macro was implemented to support incremental shift offsets while in Heidenhain
DEF 19 mode. The macro, however, is not specific to Heidenhain, and therefore it is not
being marked as a Heidenhain macro. The basic concept is that the offset is currently
being defined within the current "working plane". This "working plane" is a combination
of the rotation plane and the orientation of the stock. The offset specified (with the
WorkCoord...Value macros) will be multiplied by the current rotation plane, and then if
dynamic work offsets are turned on, it will be un-rotated by the current rotation of the
stock. The result is an un-rotated offset that will be added to the existing shift offset. This
shift offset would be applied as: (Shift Offset 0, INCREMENTAL)
See Also: AbsoluteShiftRotationDynamic
See "Notes about Shift Macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
NOTE: This macro will only work with X, Y, Z.

IncrementalShiftRotationDynamicIndex
Function — SHIFT OFFSETS
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value (0, 1, or 2)
Value represents the shift index to be used.
This macro is designed for the Siemens 840D control to process TR (trans) values in
$P_PFRAME. The basic concept is that the offset is currently being defined within the
current "working plane". This "working plane" is a combination of the rotation plane and
the orientation of the stock. The offset specified (with the WorkCoord...Value macros)
will be multiplied by the current rotation plane, and then if dynamic work offsets are
turned on, it will be un-rotated by the current rotation of the stock. The result is an un-
rotated offset that will be added to the existing shift offset. This shift offset would be
applied as: (Shift Offset 0, INCREMENTAL).
The Override Value is used to specify the shift index to be used and can be an integer
value from 0 to 2.
See Also: AbsoluteShiftRotationDynamicIndex
See "Notes about Shift Macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

IndexCallMainSub
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Calls the appropriate subroutine for the head/subsystem currently being processed. A
typical example of use would call this subroutine the first two times "M30" is processed.
The default sub names called are "1001" for the primary subsystem, and "2001" for the
secondary subsystem, but can be overridden via the "IndexChannel..." macros.
IndexChannel1Subroutine
IndexChannel2Subroutine
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Value
Sets the subroutine numbers to call for the primary and secondary subsystems,
respectively, when IndexCallMainSub is called. (Defaults: primary subsystem
subroutine=1001, secondary subsystem subroutine=2001)

Input
Function — MISCELLANEOUS
Status — RENAMED
Comment — Renamed to: InputMacro

InputMacro
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Stops the processing of the tool path file, and waits for user input.

InverseWordValue
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
This macro enables you to define one word that will be in the format: Value/Word rather
than the standard Word/Value. This macro was specifically created for the 840D control
which defines its labels as: "LABEL:". This macro must be called during the "Reset"
event, with an Override Text value of the word that will be in this inverse format. The
specified word must be defined in the WORD table, must have the Type = "Macro", and
must have the Sub Type = "Alpha-Numeric". If this macro is called multiple times, only
the last occurrence will be used.
IVector
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
Use with macros JVector and KVector to read the IJK vector values for a rotary motion
in IJK format.
Also see: Ijk2AbcType
IVector2
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
Use with macros JVector2 and KVector2 to enable reading a secondary set of IJK
vectors. The IJK vector values are modal. Currently this is only used with
Ijk2AbcType=30 to specify the steering direction.
Also see: Ijk2AbcType

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Jcode
Function — CIRCLES
Status — ALTERNATE
Comment — Use Conditionals to call macros directly.
Valid Inputs — Text, Value
Depending on the motion type (circular or non-circular), either sets the Y coordinate of a
circle, or establishes a 3D offset. The interpretation of the center point is dependent on
the Circles control settings (ref. Control Settings window: Circles tab in the VERICUT
Help section, in the CGTech Help Library).
Also see: Icode and Kcode

JVector
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
Use with macros IVector and KVector to read the IJK vector values for a rotary motion in
IJK format.
Also see: Ijk2AbcType

JVector2
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
Use with macros IVector2 and KVector2 to enable reading a secondary set of IJK
vectors. The IJK vector values are modal. Currently this is only used with
Ijk2AbcType=30 to specify the steering direction.
Also see: Ijk2AbcType

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Kcode
Function — CIRCLES
Status — ALTERNATE
Comment — Use Conditionals to call macros directly.
Valid Inputs — Text, Value
Depending on the motion type (circular or non-circular), either sets the Z coordinate of a
circle, or establishes a 3D offset. The interpretation of the center point is dependent on
the Circles control settings (ref. Control Settings window: Circles tab in the VERICUT
Help section, in the CGTech Help Library).
Also see: Icode and Jcode

KnifeOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = Off
1 = On
This macro is used to turn On/Off an Ultrasonic Knife for simulation in VERICUT
Composite Simulation. An Override Value of "0" indicates that the knife is "Off" and that
any contact with the laminate will result in an error. An Override Value of "1" indicates
that the knife is turned "On" and ready to cut laminate.

KtBlockInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
This is a special block initialization macro to be used with K&T controls. It should be
called during the "Start of Block Processing" event, and after the default BlockInit
macro.
KtType2CLS
Function — TYPE2
Status — ACTIVE
Valid Inputs — Text, Value
K&T Type 2 call subroutine macro where the subroutine call record does not have to
specify loop count (defaults to 1). The second argument optionally specifies the loop
count when it is a single value. Otherwise the second argument does not apply to loop
count. The loop count can also be set via variable 0 within the CLS command.

KVector
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
Use with macros IVector and JVector to read the IJK vector values for a rotary motion in
IJK format.
Also see: Ijk2AbcType

KVector2
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
Use with macros IVector2 and JVector2 to enable reading a secondary set of IJK vectors.
The IJK vector values are modal. Currently this is only used with Ijk2AbcType=30 to
specify the steering direction.
Also see: Ijk2AbcType

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Label
Function — BRANCHING
Status — RENAMED
Comment — Renamed to: LabelMacro

LabelMacro
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text
Identifies the current line with the given Label.
LabelName
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text
Uses the Override Text value to set the name of the label which will be used by the
GotoLabel macro.
Also see: LabelMacro and CinciGotoLabelName

LabelNameValue
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Uses the Override Value to set the name of the label which will be used by the
GotoLabel macro. Only integer values are supported

LinkAxisId
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Use to specify the Axis number, representing the "driving axis", when using "link"
capabilities defined with SetAxisCompLink. Valid values are 1-12, which correspond to
the X, Y, Z, A, B, C, U, V, W, A2, B2, C2 axes. This value is modal.
Also see: "Notes about Link Macros" in the Notes about Special Topics section, in the
CGTech Help Library.

LinkCompName
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
Use to specify the name of the component representing the "driven (or linked)"
component, when using "link" capabilities defined with SetAxisCompLink. This value is
modal.
Also see: "Notes about Link Macros" in the Notes about Special Topics section, in the
CGTech Help Library.
LinkFormula
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
Specifies the formula which is to be used by SetAxisCompLink. The formula should be
specified as an Override Text value, and in the same syntax which is used for normal
Override Values. If no formula is desired, an Override Text value of "NONE" should
be specified. This value is modal.
Also see: "Notes about Link Macros" in the Notes about Special Topics section, in the
CGTech Help Library.

LinkOffset
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Offset will be applied to the linked axis (default – same as existing logic)
1 = Offset will not be applied to the linked axis, plus special rotary logic to work
with link axis
2 = Offset will be applied to linked axis, plus special rotary logic to work with
link
axis
3 = Offset will be applied to linked axis based on the formula, plus special rotary
logic to work with link axis
This macro defines how offsets applied to the driving axis (See LinkAxisId), are applied
to the linked component (See LinkCompName), when using the link capabilities (See
SetAxisCompLink)
Also see: "Notes about link macros" in the Notes about Special Topics section, in the
CGTech Help Library.

LoadNextTool
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, None
Loads the next tool listed in the Tool List. Tools are retrieved from the list in sequential
order. For example, the first tool change loads the first tool in the list for the active
subsystem, the second tool change loads the second tool in the list, and so on. This macro
is useful to automate tool change activity in VERICUT for manual tool change machines;
typically called via the "M 0" group.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

LoadStocks
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Performs a "load stocks" operation where VERICUT loads new stock models for Stock
components having models defined, but a cut stock model does not exist. Same action as
Project menu > Setup Models > Load Stocks via the VERICUT user interface (ref.
Load Stocks in the VERICUT Help section, in the CGTech Help Library).

LockAxisOnOff
Function — MISCELLANEOUS
Status — NOT RECOMMEDED
Comment — Added V7.0.1
Valid Inputs — Text, Value
Text:
The name of the machine axis to be locked ("A", "B", "C", "X", "Y", "Z",
"U", "V", "W", "A2", "B2", or "C2")
Value:
0 = Unlock the machine axis
1 = Lock the machine axis – Allow motion, but produce an error
2 = Lock the machine axis – Do not allow motion, and don’t produce an error
This macro is used to lock, or unlock, a single machine axis. This macro can be called as
many times as necessary to lock, or unlock, additional machine axes.
NOTE: This macro is now listed as "NOT RECOMMEDED". The axis was being
mapped to a component by finding the first component in the component tree with this
register type. If there were multiple "C Rotary" components, there would be no way to
pick the non-first one. For this reason, the preferred macro to be used is:
LockComponentOnOff.
LockComponentOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1.2
Valid Inputs — Text, Value
Text:
The name of the component to be locked.
Value:
0 = Unlock the machine axis
1 = Lock the component – Allow motion, but produce an error.
2 = Lock the component – Do not allow motion, and don’t produce an error
This macro is used to lock, or unlock, a single motion component. This macro can be
called as many times as necessary to lock, or unlock, additional components.

LoopCount
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Sets the loop count. The loop count is used for the number of times a subroutine is to be
executed, and is also used for the number of times the motion in the current block should
be repeated. (non-modal)

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

MacroNotFoundMsgOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Off (Default)
1 = On
Turns "On" and "Off" the printing of the warning message that a macro was not called for
a given word/value. 0 is "Off". 1 is "On". Default is "Off". Typically this macro would be
called during the "Reset" event.
MacroVar
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Value
Fanuc (or Fanuc like) specific macro that sets a block variable based on the current word.
These block variables are non-modal, and are used as subroutine parameters with the
following macros: CallNCMacro, CallNCMacroMotion, and CallNCMacroBlock.
Within the subroutine, specific variables are set based on the following table
"A", 1,
"B", 2,
"C", 3,
"D", 7,
"E", 8,
"F", 9,
"H", 11,
"I", 4,
"J", 5,
"K", 6,
"M", 13,
"Q", 17,
"R", 18,
"S", 19,
"T", 20,
"U", 21,
"V", 22
"W", 23,
"X", 24,
"Y", 25,
"Z", 26,
Alternately, if multiple IJKs exist on the block, specific variables will be based on the
following table
"A", 1,
"B", 2,
"C", 3,
"I", 4,
"J", 5,
"K", 6,
"I", 7,
"J", 8,
"K", 9,
"I", 10,
"J", 11,
"K", 12,
"I", 13,
"J", 14,
"K", 15,
"I", 16,
"J", 17,
"K", 18,
"I", 19,
"J", 20,
"K", 21,
"I", 22,
"J", 23,
"K", 24,
"I", 25,
"J", 26,
"K", 27,
"I", 28,
"J", 29,
"K", 30,
"I", 31,
"J", 32,
"K", 33,

MahoSequence
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text, Value
Similar to Sequence, except that it also uses the sequence number to recognize the
beginning of a new subroutine. Numbers 9000 or above are reserved for program and
subroutine names(numbers).
During the Scan pass, if the number is above or equal to 9000, this routine will act like
SubroutineSequence, which defines this as a beginning of a new subroutine. If the
number is below 9000, this routine will act like Sequence, which updates the sequence
table and sets the current sequence number.
During the Run pass, if the value is above or equal to 9000, and this subroutine is not
being "called", then the EndSub macro will be called. If this occurs while in the main
program, the main program will remain active, and this command will be ignored.
NOTE: The base NC program filename must match the Subroutine name/number
exactly. See the example below.

Filename:
4924851 TEST
Contents:
%PM
N4924851 (TEST SUBROUTINE)
N1 G0 X-390 Y175 Z325 A0 B0
N2 T86 M66 (5.0 X .100UL 60-150 GRIT CUP WHEEL ACT L)
N400 S3200 M13
The above example will result in an error message being output because the filename
"4924851 TEST" does not match the subroutine name/number "4924851" exactly. If you
change the filename to "4924851", or "4924851.mcd", or "4924851.nc" the base
file/subroutine combination will process correctly.
This macro is MAHO/PHILLIPS specific.

MahoVertical2Rest
Function — MOTION
Status — ALTERNATE
Comment — Drive axis directly.
Valid Inputs — Value
Rotates Maho's vertical spindle to the 180 position.

MahoVertical2Work
Function — MOTION
Status — ALTERNATE
Comment — Drive axis directly.
Valid Inputs — Value
Rotates Maho's vertical spindle to the 0 position.

MatchParensInComment
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
0 = a comment defined by parentheses will close on first ')' (default)
1 = a comment will not be closed unless all opening parentheses “(“ are matched
by closing parentheses “)”
This macro is used to specify how VERICUT should determine when the end of a
comment is reached. It should be called at the start of processing.
If "(" is defined as a "Begin Comment" word in the Word Format window: the comment
will end on the first ")" if the Override Value = 0, or the matching ")" if the Override
Value = 1; however the comment will always end on End of Block.
EXAMPLE 1
"N0004 (THIS COMMENT (1.000) HAS MATCHED PARENTHESES)"
the comment will end on the first ")" if the Override Value = 0),
"N0004 (THIS COMMENT (1.000)”
or by the second ")" if the Override Value = 1.
"N0004 (THIS COMMENT (1.000) HAS MATCHED PARENTHESES)"
EXAMPLE 2
"N0004 (THIS (COMMENT (1.000) HAS UNMATCHED PARENTHESES) SO WHAT
HAPPENS?"
the comment will end on the first ")" if the Override Value = 0,
"N0004 (THIS (COMMENT (1.000)"
End of Block if the Override Value =1.
"N0004 (THIS (COMMENT (1.000) HAS UNMATCHED PARENTHESES) SO
WHAT"
If "(" is defined as a "Multiline Comment" word in the Word Format window, the End of
Block is irrelevant.
EXAMPLE 3
"N0004 (THIS (COMMENT (1.000) HAS UNMATCHED PARENTHESES) SO WHAT
HAPPENS?)"
the comment will end on the first ")" if the Override Value = 0,
"N0004 (THIS (COMMENT (1.000)"
or on the matching ")" if the Override Value = 1.
"N0004 (THIS (COMMENT (1.000) HAS UNMATCHED PARENTHESES) SO
WHAT HAPPENS?)"

MaxTableRPM
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value

Sets the max table RPM's to be the specified value. This is used in turning when
calculating the current RPM while in constant surface speed mode.
MaxTesselationAngle
Function — MOTION
Status — SPECIAL
Valid Inputs — Value
This value is used with the Rotary Motion Tolerance (Properties window: Tolerance
tab) to define the number of intermediate points.The default value for the max
tessselation angle is 5.
NOTE: The Rotary Motion Tolerance is designed to keep the tool tip within tolerance
when breaking up a rotary move. The MaxTesselationAngle is a better setting to use
with collision detection. The number of intermediate points will be based on the
maximum of these two calculation methods.

MazakMillingInterpolationOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
This macro turns OFF a special milling mode for a Mazak controller.
See also MazakMillingInterpolationOn.

MazakMillingInterpolationOn
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
This macro turns ON a special milling mode for a Mazak controller. When turned on, X
values are multiplied by 2.
NOTE: This only applies to calls to the XAxisMotion macro.
See also MazakMillingInterpolationOff.

MazakPartLoader
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — Use VC_LoadFix, VC_UnloadFix, and the MoveCutStock... macros
Valid Inputs — None
On the first call, it calls PartTransformation with a value of 1 and loads the first fixture
within VERICUT. On the third call, it calls PartTransformation with a value of 2 and
loads the second fixture within VERICUT.
NOTE: The MazakPartLoader macro is obsolete and no longer supported. If called,
the following message: "The macro, MazakPartLoader, is no longer supported" is
output.
MazakSpindleRotation
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
In milling mode, the B axis will be rotated to the specified value. In turning mode, the B
axis will be rotated to the 0 position.

McallSubroutineOn
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text, Value
This macro is used to save the subroutine name and retain the parameters upon returning
from the subroutine. McallSubroutineOn should be called when a Siemens 840D
MCALL subroutine name command is encountered. It should be followed by a call to the
Siemens840DProcCall macro. An MCALL command on a block by itself should call the
CycleSubroutineOff macro.
How it works:
MCALL subroutine name passes the subroutine name and parameters to the
callSubroutineOn macro which saves the subroutine name and parameters so that they
are available upon returning from the subroutine. Siemens840DProcCall macro invokes
the call to the subroutine. When an MCALL command is the only thing on a block, the
CycleSubroutineOff macro is called to cancel the above actions.
EXAMPLE:
X50 Y0 Z55
MCALL CYCLSUB(60,50,2,35)
Y30
MCALL
In the above example, the CYCLSUB(60,50,2,35) subroutine is called twice before the
MCALL block cancels the above sequence.

MeasureCoordinates
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = Stock coordinate system (default)
1 = Local coordinate system (Driven Point Zero)
This macro is used to specify the coordinate system that is to be used to transform the
contact point generated by the Probe and Touch macros. The point data is transformed to
the specified coordinate system before it is saved in the NC variables assigned by the
Probe/Touch macro. This macro is modal.
An Override Value of "0", the default, indicates that the Stock coordinate system should
be used. This is the coordinate system that was previously used by the Probe and Touch
macros.
An Override Value of "1" indicates that the Local coordinates system (Driven Point Zero)
should be used by the Probe and Touch macros.
Also see: Probe and Touch macros

MessageMacro
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Creates a message using the text string input using the Override Text field. The message
type is specified in the Override Value field.
1 = Error
2 =Warning
3 = Info
4 = Debug
5 = Input
6 =Output
7 = Macro Modal
10 = Error Continuation
See Add/Modify Word/Address window in the VERICUT Help section, in the CGTech
Help Library) for information on using "expressions" in the Override Text field.

MinTesselationPoints
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Used to define the minimum number of intermediate points required to activate the new
5-axis spline logic. The default value is 4. If the value of MinTesselationPoints is 0, or
the number of intermediate points created is less than the specified Override Value, the
new 5-axis spline logic will not be used.
Also see: MaxTesselationAngle
MirrorA
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors A, rotations by negating the A values. See notes below.

MirrorA2
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors A2 rotations by negating the A2 values. See notes below.

MirrorA2Cancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels MirrorA2 mirroring about the A2-axis.

MirrorA2Value
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Same as MirrorA2. See notes below.

MirrorACancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels MirrorA mirroring about the A-axis.

MirrorAValue
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Same as MirrorA. See notes below.
MirrorB
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors B rotations by negating the B values. See notes below.

MirrorB2
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors B2 rotations by negating the B2 values. See notes below.

MirrorB2Cancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels MirrorB2 mirroring about the B2-axis.

MirrorB2Value
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Same as MirrorB2. See notes below.

MirrorBCancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels MirrorB mirroring about the B-axis.

MirrorBValue
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Same as MirrorB. See notes below.
MirrorC
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors C rotations by negating the C values. See notes below.

MirrorC2
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors C2 rotations by negating the C2 values. See notes below.

MirrorC2Cancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels the MirrorC2 mirroring about theC2-axis.

MirrorC2Value
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Same as MirrorC2. See notes below.

MirrorCancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels all mirroring.

MirrorCCancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels MirrorC mirroring about the C-axis.
MirrorCValue
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Same as MirrorC. See notes below.
NOTES:
1. The above Mirror... macros behave in a similar manner as the Mirror XYZ macros.
Basically, if mirroring is turned on for that axis, the value is negated. Similar to X, Y,
and Z, when the WorkCoord...Value is called with an Override Text value of
"MIRROR", and the corresponding axis set to mirror, the input value will be
mirrored.
2. It is not clear whether this is correct for all combinations of linear and absolute rotary
tables.

MirrorX
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors values about the X-axis.

MirrorXCancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels the MirrorX mirroring about the X-axis.

MirrorXValue
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors values about the X-axis.

MirrorY
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors values about the Y-axis.
MirrorYCancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels the MirrorY mirroring about the Y-axis.

MirrorYValue
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors values about the Y-axis.

MirrorZ
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors values about the Z-axis.

MirrorZCancel
Function — MIRROR
Status — ACTIVE
Valid Inputs — None
Cancels the MirrorZ mirroring about the Z-axis.

MirrorZValue
Function — MIRROR
Status — ACTIVE
Valid Inputs — Value
Mirrors values about the Z-axis.

ModeAbsolute
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Sets the command mode to Absolute.
ModeAsymTurningOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Triggers the special motion in VERICUT, called CRANK_MOTION. This motion is
identified by X-Caliper and returns point/normal information.

ModeIncremental
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Sets the command mode to Incremental.

Motion3DCircle
Function — MOTION
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — None
This macro sets the motion type to 3D_CIRCLES. This is similar to MotionCCW and
MotionCW except that the direction is not specified, and the circle does not need to be in
the local XY, YZ, or ZX plane. The direction and plane is then determined by some other
parameter.
Also see: CircleIntermediatePoint

MotionBlockSyncOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
This function turns on and off the capability to SYNC on every motion block. An
Override Value of 1 turns on this capability. An Override Value of 0 turns off this
capability.
NOTE: The sync occurs after motion. But by syncing with the G68 call, it can be made
to look as if the sync is occurring prior to motion.
MotionCCW
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the motion type to CCW.

MotionCCWSpiral
Function — MOTION
Status — ACTIVE
Comments — Added V7.1.3
Valid Inputs — Value
Sets the spiral motion type to CCW.

MotionCW
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the motion type to CW.

MotionCWSpiral
Function — MOTION
Status — ACTIVE
Comments — Added V7.1.3
Valid Inputs — Value
Sets the spiral motion type to CW.

MotionLinear
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the motion type to Linear.

MotionNurbs
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the motion type to NURBS and initialize the NURBS data.
MotionOnOff
Function — MOTION
Status — SPECIAL
Valid Inputs — Value
0 = Off
1 = On (Default)
These macros control when motions and cutting are simulated, depending on values
passed. Calling this macro outputs a "PPRINT/VERICUT-MOTION" record to the
Output file. Calling with an Override Value of "1" turns motion simulation and cutting
on (default). An Override Value of "0" turns motion simulation and cutting off. Motion
commands and positions are processed, but simulation, cutting, collision detection, and
axis overtravel detection are turned off during these moves. When motion is turned on,
the machine/tool "jumps" to its current position. "1" is automatically set when a reset is
done.

MotionOnOffSide
MotionOnSide
Function — MOTION
Status — OBSOLETE
Comment — Used only for the intial implementation of 4-axis sync. They are no
longer needed.
Valid Inputs — Value
These macros determine which codes from the tool path are processed and which
machine head is being simulated.
NOTE: These are special purpose macros designed for use with pre-5.0 VERICUT
simulating a custom INDEX mill-turn NC machining center, and are NOT intended for
general use.

MotionPlaneXY
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Sets the motion plane to be the XY plane.

MotionPlaneYZ
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Sets the motion plane to be the YZ plane.
MotionPlaneZX
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Sets the motion plane to be the ZX plane.

MotionPoly
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the motion type to Poly.

MotionRapid
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the motion type to Rapid.

MotionThread
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Sets the motion type to Thread.

MotionToolOffsetNeg
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
By default, this macro uses the cutter compensation value and offsets the XYZ values in
the current block by this amount opposite the direction of motion. If used with the macro
MotionToolOffsetOnMotion with an Override Value of 1, the offset associated with
MotionToolOffsetNeg will be applied to the next motion.

MotionToolOffsetOnMotion
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
1 = applied to the next motion
Any other value = apply only to the current block
If the macro MotionToolOffsetOnMotion is called, and passed an Override Value of 1,
the offset associated with the MotionToolOffsetPos, or MotionToolOffsetNeg, will be
applied to the next motion. The MotionToolOffsetOnMotion macro will typically be
called during the "Start of Processing" event. An Override Value other than 1 will
cause the offset associated with MotionToolOffsetPos, or MotionToolOffsetNeg, to be
applied only to the current block.

MotionToolOffsetPos
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
By default, this macro uses the cutter compensation value and offsets the XYZ values in
the current block by this amount in the direction of motion. If used with the macro
MotionToolOffsetOnMotion with an Override Value of 1, the offset associated with the
MotionToolOffsetPos will be applied to the next motion.

MountTool
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
text = name of tool component
value = toolid
Mounts the specified tool (Override Value = toolid) onto the specified tool component
(Override Text = name of the tool component).
NOTES:
1. This is not a tool change.
2. The tool id will be cross referenced with the tool list. Mounting the tool does not
change the active tool, execute a tool change retract, increment the number of
tools, or update tool offsets. It is strictly a way to mount a tool. Typically, this
will be used with a tool changer.
Also see: UnMountTool

MountToolIndex
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
Text = subsystem of tool component
Value = tool index value
Mounts the specified tool onto the tool component with the matching tool index
value (Override Value = tool index value) and subsystem (Override Text =
subsystem of tool component).
NOTES:
1. This is not a tool change.
2. The tool, represented by the tool index value, will be cross referenced with the
tool list. Mounting the tool does not change the active tool, execute a tool change
retract, increment the number of tools, or update tool offsets. It is strictly a way to
mount a tool. Typically, this will be used with a tool changer.
Also see: UnMountToolIndex

MoveCutStockCompName
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
This macro defines the name of the component whose Cut Stock will be moved with the
MoveCutStockToCsys macro. This value is modal. If not called, the active stock for the
current subsystem will be used.
Also see: MoveCutStockFromCsys and MoveCutStockToCsys

MoveCutStockFromCsys
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
This macro defines the "FROM" CSYS that will be used with the MoveCutStockToCsys
macro. This value is modal.
Also see: MoveCutStockCompName and MoveCutStockToCsys

MoveCutStockToCsys
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
This macro defines the "TO" CSYS. It then moves the corresponding Cut Stock based on
the "FROM" and "TO" CSYS. The "TO" CSYS value is non-modal and must be
specified on every call. Only the 1st Design child of Stock component moves along with
the cut stock model during the transitioning.
Call the MoveDesignWithStock macro with an Override Value of 1, prior to calling this
macro, to have all Design siblings of the Stock component move along with the cut stock
during the transition.
Also see: MoveCutStockCompName and MoveCutStockFromCsys

MoveDesignWithStock
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = only the 1st Design child is moved with the cut stock (Default)
1 = all Design siblings move with the cut stock.
Specifies whether only the 1st Design child of Stock component moves along with the cut
stock model, or all Design siblings (Design and Design Point components that are at the
same level or below the specified stock) of the Stock component move along with the cut
stock when the cut stock is moved using the MoveCutStockToCsys macro.
An Override Value of 0, indicates that only the 1st Design child is moved with the cut
stock. An Override Value of 1, indicates that all Design siblings of the Stock component
move along with the cut stock.

MSCloseFile
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — None
This macro is designed to support commands similar to the Fanuc PCLOS command.
This macro closes the external text file opened using macro MSOpenFile. This macro
should be called after processing the last MSWriteToFile command, or before the end of
the NC program. Macros MSOpenFile and MSCloseFile should always be used in pairs.

MSOpenFile
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text, Value
Text = output file name
Value
0 (or no value) = the existing file is appended. (Default)
1 = the existing file is overwritten.
This macro opens an external text file for the output provided by the MSWriteToFile
macro. The Override Text field is used to specify the name of the output file. If the file
name is specified without a path, it will be located in the VERICUT Working Directory.
If the specified file exists, the formatted string output by MSWriteToFile is appended to
its contents. This macro must be used before any MSWriteToFile macro is processed.
Note that only one external file can be opened at a time. The file should be closed, using
macro MSCloseFile, after the last MSWriteToFile macro, or before the end of the NC
program. Macros MSOpenFile and MSCloseFile should always be used in pairs.
If an Override Value of 1 is used, the existing file will be overwritten. If an Override
Value of 0 is used, or no Override Value is entered, the existing file will be appended. If
a file with the specified filename does not exist, the Override Value makes no difference.

MSWriteToFile
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text, None
This macro is used to format, and output, NC program variables similar to the Fanuc
DPRNT command. When using this macro in this manner the only input data for this
macro is the text following the DPRNT command. The variables and their format are
specified in DPRNT statement. See Fanuc 15i programming manual page 659 – 663 for
details. The Fanuc system variable #7000 (bit 7) can be used to control the current format
design (see Fanuc manual for details). The formatted string is output to an external file
opened using macro MSOpenFile.
The MSWriteToFile macro also accepts a text input. For example, if #5001 = -12.5, and
Override Text: "Probed point X{#5001}", then "Probed point X-12.5" is output to an
external file opened using macro MSOpenFile. The idea is that it works similar to
FanucDPRNT but no Fanuc formatting is used.

MultiPointCyclesExecute
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
This macro is designed to process a Heidenhain G79 cycle execute block. The macro
executes cycles at all locations specified by P words in the block. The points, and their
order, are established by the HeidGotoPointSeq macro. The Override Text field is used
to define a Part Surface option. If Part Surface is not defined by a Z value, use "NO",
otherwise use the same value as specified with the SetCyclePartSurface macro.
Also see: HeidGotoPointSeq, SetCyclePartSurface, and HeidDefinePoint
NOTES:
1. This macro is only applicable to the new drill cycle method. See "Notes about
New Drill Cycle Logic" in the Notes about Special Topics section, in the CGTech
Help Library, for additional information.
2. Polar point definition, and parameterized point, are not supported in current logic.
Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

NcodeSeqSub
Function — SUBROUTINES
Status — OBSOLETE
Comment — Use SubroutineSequence
Valid Inputs — Text, Value
Similar to Sequence, except that it also marks the sequence number as the beginning of a
subroutine during the first pass.

NCVarDefaultValue
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Value
0 = default to 0.0. (Default)
1 = default to un-initialized
This macro is used to determine how an NC variable should be set when created by the
NC program file.
NOTES:
1. Option 0 is the default in order to stay compatible with previous releases. 1 is the
recommended setting for all controls. It is a good programming practice to always
set a variable before using it. By setting this macro to 1, and setting
NCVarWarnMessage to 2, enables you to maximize the error checking that
VERICUT can do for you.
2. This setting will have no effect on Fanuc's G65.

NCVarWarnMessage
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Value
0 = Never print a warning message.
1 = Print a warning message if the variable did not previously exist. (Default)
2 = Always print a warning message.
This macro will determine when a warning message should be printed associated with an
un-initialized variable being referenced.
NOTE: Option 1 is the default in order to stay compatible with previous releases. This
option really only makes sense for Fanuc users who knowingly use un-initialized
variables in expressions. Even in this case, the option really doesn't make sense because
the concept of the variable not being created is something specific to VERICUT.
Typically you will always want to know when an un-initialized variable is being
referenced.

NewCycleLogic
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = old drill cycle logic (Default)
1 = new drill cycle logic
A "Value" of 0 causes the old drill cycle logic to be used. A "Value" of 1 causes the new
drill cycle logic to be used. The default is 0. The new drill cycle logic is experimental at
this point. All macros and settings associated with the Rapid Level, the Part Surface, the
Depth, and the Retract level are mutually exclusive between the old logic and the new
logic.
NOTE: The old drill cycle method and the new drill cycle method should not be used
in the same control. When NewCycleLogic is set to "old logic", all of the new logic
macros will be ignored. When NewCycleLogic is set to "new logic", all of the old logic
macros, flags and settings are ignored.
See also: SetCycleDepth, SetCyclePartSurface, SetCycleRapidLevel, and
SetCycleRetractLevel.
See "Notes about New Drill Cycle Logic" in the Notes about Special Topics section, in
the CGTech Help Library, for additional information.

NULL
Function — MISCELLANEOUS
Status — RENAMED
Comment — Renamed to: NullMacro

NullMacro
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Immediately returns-no action is performed. This macro can be used to avoid error
messages that are not important for the processing of the program. The macro can also be
used in the case of G73X1 (MAHO). In this example, the X1 will cause the mirroring in
X to be cancelled (since G73 is also in the block). Since the operation has been executed
with the processing of the X value, there is nothing left to be done with the G73 value.
G73 can be set to call the "null" macro.
NumEndBlankContour
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Used with the NUM G80 block indicating the end of a blank contour. The control then
reads the cycle contour. After processing the cycle, the block following the G80 is read.
NOTE: The NUM control should use the NumSequence macro for the start and end
sequence numbers. This allows the format N1 G64 N2 N3 ... Where N2 defines the start
and N3 defines the end sequence number.

NumIfCheck
Function — BRANCHING
Status — ALTERNATE
Comment — Use IfCheck
Valid Inputs — Text, Value
Similar to IfCheck except if no comparison is present, it will act as an unconditional
branch.
Also see: IfCheck and HeidMPlusIfCheck.

NumLengthCompX
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Uses a shift offset to apply tool offset.
Non-Standard.
Alternatives Unknown.
Valid Inputs — Text
Sets the tool length compensation in the X direction.

NumLengthCompY
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Uses a shift offset to apply tool offset.
Non-Standard.
Alternatives Unknown.
Valid Inputs — Text
Sets the tool length compensation in the Y direction.
NumLengthCompZ
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — Uses a shift offset to apply tool offset.
Non-Standard.
Alternatives Unknown.
Valid Inputs — Text
Sets the tool length compensation in the Z direction.

NumPlane
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Defines a motion plane in 3D space, typically used in the NUM control. For example: If a
circle is drawn in the XY plane, Z remains constant and only X and Y changes. If a circle
is drawn after a 3D plane is established, the circle would be drawn within this 3D plane.

NumPlaneA
NumPlaneB
NumPlaneC
NumPlaneU
NumPlaneV
NumPlaneW
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use the standard rotation plane macros (RotationPlane...).
Valid Inputs — Value
Each of the NumPlane... macros above define a 3D plane orientation, typically used in
the NUM control.

NumSequence
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text, Value
Depending on the contents of the current block, this macro will execute Sequence,
SequenceStartEnd, or GotoJump.
NumSubroutineSequence
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Similar to SubroutineSequence except the beginning of a new subroutine will
automatically mark the end of the previous subroutine.

NumSubSequenceLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text, Value
If "H" is in the block, a call to the corresponding subroutine will be made. Otherwise, the
specified sequence of blocks will be executed.

NumSubSequenceOverWrite
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — NONE
This macro is associated with a NUM G76 command, which when defined will update
the contents of the file/subroutine called at the specified line numbers with the new
contents of the corresponding active data. It is only intended for variable assignment. It
assigns variable values internally and then uses those values when the file/subroutine is
called..
NOTE: Only the internal variables will be overwritten, the original file will remain
untouched.

NumTurnCycle
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Indicates a NUM turning cycle will be performed. The type of cycle is indicated by an R,
or P, word in the cycle block. Macros CycleTurnRoughCut and CycleTurnRoughFace
should be used with R, and P, respectively.
NumVarUserDefined
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text
This macro is used to specify the range of user defined variables in a NUM control. The
range of user variables should not overlap NUM system variables. The specified range
does not implicate the actual allocation of variables. Any user defined variable is created
when it is referenced in the NC program. The range is specified by Override Text in the
format "first last". For example 80000 99999 specifies that any variable from 80000 to
99999 will be considered as user defined.
Also see: NumEFunc function in the Configuration Menu section of VERICUT Help.

NurbsDegree
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Sets the NURBS order to the input value + 1.

NurbsInitialControl
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Adds an initial control point to the current NURBS data.

NurbsKnot
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Initializes the NURBS data (if this defines the beginning of a NURBS statement), and
adds a NURBS knot point to the current NURBS data.

NurbsOrder
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Initializes the NURBS data (if this defines the beginning of a NURBS statement), and
sets the NURBS order.
NurbsWeight
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Sets the NURBS weight.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

OkumaCancelShiftRotate
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
Cancels both the shift offset and the rotation. (Shift Offset 1)

OkumaControllingHead
Function — SYNC
Status — ACTIVE
Valid Inputs — Value
Sets the controlling head to be Turret A or Turret B. A value of 110 defines Turret A as
the controlling head, and a value of 111 defines Turret B as the controlling head.

OkumaCopyEnd
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Text, Value
Processes the end of the "Copy" command for Okuma. This includes the branching based
off of the loop count, and the updating of the shift offset and the rotation value. (Shift
Offset 1, INCREMENTAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

OkumaCopyLoopCount
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Sets the Okuma loop count.
OkumaCopyStart
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Text, Value
Processes the start of the "Copy" command for Okuma. This includes the initializing of
the branching variables, and the updating of the shift offset and the rotation value. (Shift
Offset 1, INCREMENTAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

OkumaCutDepth2
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Depth of cut after cutting condition change point 2.

OkumaCutDepth3
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Depth of cut after cutting condition change point 3.

OkumaEndContour
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Indicates the last block of an Okuma turning cycle contour.

OkumaFeedrate2
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.0.1
Valid Inputs — Value
Feedrate after cutting condition change point 2.
OkumaFeedrate3
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.0.1
Valid Inputs — Value
Feedrate after cutting condition change point 3.

OkumaGotoJump
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Branches to the specified sequence number, like GotoJump, but also saves the current
position for a return after an Okuma cycle completed.

OkumaGotoLabel
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Branches to the specified label like GotoLabel, but also saves the current position for a
return after an Okuma cycle completed.

OkumaShiftRotate
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Text, Value
2D rotation that causes the coordinate system to be rotated, within the active plane, by a
specified angle. The angle is specified with the RotationAngle macro. In addition to the
rotate, a shift can also be specified. The shift can be specified with calls to the
WorkCoordXValue, WorkCoordYValue, and WorkCoordZValue macros. The XYZ
values are based on the machine coordinate system. The rotation angle is based on the
machine coordinate system. (Shift Offset 1, ABSOLUTE/NON-MODAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
EXAMPLE:
G90X0Y0 ==> X0 Y0
G68X1Y1R45
X0Y0 ==> X1 Y1
X1 ==> X1.707 Y1.707
Y1 ==> X1, Y2.414
X0 ==> X.2929, Y1.707
Y0 ==> X1 Y1
G91G68X1Y1R45 ==> Because of the G91, rotate angle is now 90.
G90X0Y0 ==> X1 Y1
X1 ==> X1 Y2
Y1 ==> X0 Y2
X0 ==> X0 Y1
Y0 ==> X1 Y1

OkumaStartBlankContour
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — None
Indicates the first block of an optional contour defining the blank geometry of a turning
cycle. The blocks are only processed when a turning cycle is active, otherwise they are
skipped.

OkumaStartContour
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Indicates the first block defining the contour for an Okuma turning cycle. The blocks are
only processed when a turning cycle is active, otherwise they are skipped.

OkumaStartCutDepth2
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Used with the Okuma G84 cycle to specify the point where cutting conditions are
changed to use cut 2.

OkumaStartCutDepth3
Function — TURNING CYCLES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Used with the Okuma G84 cycle to specify the point where cutting conditions are
changed to use cut 3.
OkumaTurnCycle
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Indicates an Okuma turning cycle will be performed. The control starts reading the
contour referenced within the cycle block. After processing the cycle, the block following
the cycle is read.

Okuma_CallSubName
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Similar to CallSubName except assumes the subroutine name begins with the second
character-the first character of the input text string argument.

OliConvInit
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Special Olivetti conversion initialization routine. This routine is to be called along with
the standard ConversionInit routine during initialization.

OliLabel
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text
Olivetti specific routine for handling labels.

OliType2EPP
Function — TYPE2
Status — ACTIVE
Valid Inputs — None
Olivetti specific routine for handline the TYPE II EPP command. This command takes 2
label arguments, where to jump to, and when to jump back.
NOTE: This routine is dependent on OliLabel to define the labels and to execute the
jump when the second label is reached.
OptiCommentFormat
Function — OPTIPATH
Status — ACTIVE
Comment — Added V7.1.1
Valid Inputs — Text
This macro enables you to format comments for OptiPath expands.
The syntax of the Override Text:
• everything inside the first pair of quotation marks is considered to be the
begin comment word.
• everything in the second pair of quotation marks is considered to be the end
comment word (and this pair is optional).
If the strings are already defined in the Word Format table, an error message will be
reported.
How to use the macro:
Add this macro to the 'Start of Processing' events list with the Override Text:
"( Optipath " " end Optipath )", or something similar.
NOTE: This macro does not check whether the entered string is a valid comment word
or not. It is up to you to make sure it is.

OptiEOLStr
Function — OPTIPATH
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Text
This macro is used to define a string that should be at the end of every line of an
optimized output file (except for empty lines). When optimizing a file, the OptiPath will
insure that every optimized line output will contain this string.
NOTE: Lines that are not optimized, will be passed directly from the input to the output
file.
The default EOL (End of Line) string is the empty string (nothing).

Optimizable
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — None
Increments a counter each time it is called on a block. The counter is used by OptiPath to
determine if a block is optimizable, even if G-Codes exist in blocks that are not typically
optimizable. The block is optimizable when the number of objects in a block equals the
optimizable count. The optimizable count is re-initialized with a new block.
OptiMWordLast
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Value
Controls where M-codes appear in blocks optimized by OptiPath. By default, VERICUT
preserves the order of NC codes as they appeared in the input block. When a feed rate
code does not appear in the original input block, optimized feed rates are added at the end
of the block. On some NC controls, M-codes (if present) must always appear at the end of
the block. In this case, call this macro with and Override Value of "1" at the "Start of
Processing" event. That causes X, Y, Z, S, F words to come before the first M word.
Examples follow:
Excerpt from a sample input tool path to optimize:
11LX.1981Y.6691Z3.3884R0F30M3
12LX.1295Y.7789Z3.3246R0M3
13LX.0153Y.8397Z3.2608R0M3
14LX-.114Y.8352Z3.1969R0M3
15LX-.2238Y.7666Z3.1331R0M3
16LX-.2846Y.6524Z3.0692R0M3
17LX-.2801Y.523Z3.0054R0M3
18LX-.2115Y.4133Z2.9415R0M3
19LX-.0973Y.3525Z2.8777R0M3
20LX.0321Y.357Z2.8138R0M3
21LX.1418Y.4255Z2.75R0M3
Feed rates added via default optimization:
11LX0.1981Y0.6691Z3.3884R0F2000M3
12LX0.1295Y0.7789Z3.3246R0M3
13LX0.0153Y0.8397Z3.2608R0M3
14LX-0.114Y0.8352Z3.1969R0M3
15LX-0.2238Y0.7666Z3.1331R0M3
16LX-0.2846Y0.6524Z3.0692R0M3
17LX-0.2801Y0.523Z3.0054R0M3
18LX-0.2115Y0.4133Z2.9415R0M3F100
19LX-0.0973Y0.3525Z2.8777R0M3F110
20LX0.0321Y0.357Z2.8138R0M3F100
21LX0.1418Y0.4255Z2.75R0M3F90
Feed rates added via optimization with OptiMWordLast active:
11LX0.1981Y0.6691Z3.3884R0F2000M3
12LX0.1295Y0.7789Z3.3246R0M3
13LX0.0153Y0.8397Z3.2608R0M3
14LX-0.114Y0.8352Z3.1969R0M3
15LX-0.2238Y0.7666Z3.1331R0M3
16LX-0.2846Y0.6524Z3.0692R0M3
17LX-0.2801Y0.523Z3.0054R0M3
18LX-0.2115Y0.4133Z2.9415R0F100M3
19LX-0.0973Y0.3525Z2.8777R0F110M3
20LX0.0321Y0.357Z2.8138R0F100M3
21LX0.1418Y0.4255Z2.75R0F90M3

OptiNotExceedProgFeed
Function — OPTIPATH
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
0 = Turns off this feature.
1 = Turns on this feature.
This macro is used to prevent OptiPath from increasing the feedrates in the OptiPath
output beyond the programmed feedrate. An Override Value of "1" turns on this feature.
An Override Value of "0" turns off this feature.

OptiPathExpandSubs
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Value
0 = do not optimize or expand the called subroutine
1 = optimize and expand the called subroutine
2 = optimize and expand the called subroutine only if the current tool is being
optimized.
Sets a flag indicating whether or not the current subroutine should be optimized and/or
expanded. The call to this macro should be associated with a Word rather than the start of
processing event. For example: M98 will call OptiPathExpandSubs and then CallSub.
The subroutine Call, Start, and return will be commented out. For example: the mcd line
"N5 O100 (Example sub)" will get converted to "(Optipath Expansion: N5 O100)
(Example sub)"
NOTES:
1. This flag is non-modal, and gets reset to "don't optimize or expand" on every
block.
2. This macro and OptiPathOptimizeSubs are mutually exclusive. Only one of them
should be called by a given Word in the control.
OptiPathOptimizeCDC
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Value
1 = optimize in cutter compensation mode
Turns on/off the capability to optimize while in cutter comp mode. If passed a value of 1,
optimization will be allowed in cutter comp mode. The default is to not optimize when in
cutter comp mode. If needed, this macro would typically be called during the start of
processing event.
NOTE: Optimizing with CDC is not supported with Inverse Time, Add more Points,
Accel/Decel or Sync. The Add more Points and Accel/Decel features will automatically
be turned off while processing CDC motion.

OptiPathOptimizeSubs
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Value
0 = do not optimize the current subroutine.
1 = optimize the current subroutine
2 = optimize the current subroutine only if the current tool is being optimized.
3 = optimize the current subroutine and disable the safety feature which turns off
optimization if a subroutine is called with arguments
4 = optimize the current subroutine and disable the safety feature which turns off
optimization if the parent subroutine was not being optimized
5 = optimize the called subroutine and disable the safety features described in 3
and 4 above.
Sets a flag indicating whether or not the current subroutine should optimized. The call to
this macro should be associated with a Word rather than the "Start of Processing"
event. For example: M98 will call OptiPathOptimizeSubs and then CallSub.
NOTES:
1. It is recommended that options 3, 4,and 5 are never used. If they are used, a
warning message will be given when a subroutine is about to be optimized
because a safety feature has been turned off.
2. This flag is non-modal, and must be called whenever the corresponding
subroutine is called.
3. Each optimized subroutine will be output to a separate file. The name of the file
will be the subroutine name with a ".opti" extension. The writing to separate files
is independent of how or where the subroutines were located in the original
program. The user is then responsible to do what ever is needed to incorporate
these new subroutines into the program.
4. This macro and OptipathExpandSubs are mutually exclusive. Only one of them
should be called by a given Word in the control.

OptiRestoreAdditionalCuts
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — None
Restores the ability to add additional cuts, that were previously suppressed, via calling
the OptiSuppressAdditionalCuts macro. Do not call this macro unless the "suppress"
macro was previously called.

OptiSettings
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Text, Value
This macro updates a field for the current Optipath Record. If a current Optipath Record
does not exist, a new one will be created with default settings. This update is modal for
the current Optipath Record. This update will not be saved in the Optipath Library file.
NOTE: The existing PPRINT capabilities can be used to set the current OptiPath
Library Record.
This macro should be called with an Override Text value of the feature being updated,
and its corresponding value. The following are the features and values that are supported.

FEATURE OVERRIDE VALUE

TEETH Numeric
0 = Inch
UNITS
1 = Millimeter
0 = Volume
OPTIMIZE_BY
1 = Tables
2 = CSS
3 = Air Cuts
4 = Chip
5 = Chip Volume
6 = None
7 = API
OPTIMIZE_BY_VOLUME Numeric
CHIP THICKNESS Numeric
0 = Feedrates Only
MODIFY
1 = Feedrates and Cuts
0 = Off
FEEDRATE_CONTROL
1 = Constant
2 = Limit
VOLUME_REMOVAL_RATE_LIMIT Numeric

MINIMUM_FEEDRATE_CHANGE Numeric
0 = Programmed
CIRCLE_FEEDRATE_OPTION
1 = Fixed
2 = Optimize
3 = Break up
CIRCLE_FEEDRATE_FIXED Numeric
0 = Programmed
NURBS_FEEDRATE_OPTION
1 = One Feedrate
2 = Multi Feedrate
FEEDRATE_WEAR_REDUCTION Numeric
0 = Off
RESOLUTION_OPTION
1 = On
RESOLUTION_DISTANCE Numeric

CLEAN_UP_FEEDRATE Numeric

MINIMUM_CUT_FEEDRATE Numeric

MAXIMUM_CUT_FEEDRATE Numeric

AIR_CUT_FEEDRATE Numeric
0 = Feed Per Minute
DEPTH_OPTION
1 = Percent of Programmed
2 = Feed Per Tooth
0 = Off
WIDTH_OPTION
1 = On
0 = Off
ANGLE_OPTION
1 = On
0 = Off
PLUNGE_OPTION
1 = On
PLUNGE_FEEDRATE Numeric

PLUNGE_PROGRAMMED Numeric
PLUNGE_CLEARANCE Numeric
0 = Off
RETRACT_OPTION
1 = On
RETRACT_FEEDRATE Numeric

RETRACT_PROGRAMMED Numeric
0 = Off
ENTRY_FEEDRATE_OPTION
1 = Feed Per Minute
2 = % of Programmed
3 = % of Calculated
ENTRY_FEEDRATE Numeric

ENTRY_PROGRAMMED Numeric

ENTRY_CALCULATED Numeric

ENTRY_CLEARANCE_DISTANCE Numeric

ENTRY_CUT_DISTANCE Numeric
0 = Off
EXIT_FEEDRATE_OPTION
1 = Feed Per Minute
2 = % of Programmed
3 = % of Calculated
EXIT_FEEDRATE Numeric

EXIT_PROGRAMMED Numeric

EXIT_CALCULATED Numeric

EXIT_CLEARANCE_DISTANCE Numeric

EXIT_CUT_DISTANCE Numeric

SPINDLE_CONSTANT_SURFACE_SPEED Numeric

SPINDLE_MINIMUM_RPM_CHANGE Numeric

SPINDLE_MAXIMUM_RPM Numeric

SPINDLE_MINIMUM_RPM Numeric

SPINDLE_FPT Numeric

UNIT_POWER Numeric
0 = Off
ACCEL_MODE
1 = On
0 = Off
SPINDLE_OVERRIDE
1 = On

The following features are supported in the OLB file, but are not supported with this
macro:
STOCK_MATERIAL
MACHINE
TOOL_DESCRIPTION
DEPTH_VALUES
DEPTH_FEEDRATE_VALUES
WIDTH_VALUES
WIDTH_FEEDRATE_VALUES
ANGLE_VALUES
ANGLE_FEEDRATE_VALUES
CUTTER_DEPTH_WIDTH
TLS_FILE
TOOL_ID

OptiSuppressAdditionalCuts
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — None
Suppresses additional cuts that would have been added during optimization via the "Add
More Cuts" OptiPath setting (ref. OptiPath window: Settings tab in the VERICUT
Help section, in the CGTech Help Library). After calling this macro, be sure to call
OptiRestoreAdditionalCuts while processing the same tool.

OptiXYZFormat
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Value
0 = causes the X, Y, Z values to not be expanded.
Controls if X, Y, Z tool position values are expanded when Modify Existing Cuts Only
(ref. OptiPath window: Settings tab in the VERICUT Help section, in the CGTech Help
Library) is active during optimization by OptiPath. Use of this macro is applicable when
programming in variable format, e.g. N10X#5Y#3Z#9F100. By default, optimized X, Y,
Z tool position values are expanded (variable values are resolved) to represent actual tool
positions. Calling this macro with a value of "0" causes the X, Y, Z values to not be
expanded. The X, Y, Z values will be written out as they were on the input block.
NOTES:
1. This feature should NOT be used when the expansion of variables is required, e.g.
subroutines, branching, etc.
2. The expansion of X, Y, Z is only suppressed when the "Modify Existing Cuts
Only" OptiPath setting is active (ref. OptiPath window: Settings tab in the
VERICUT Help section, in the CGTech Help Library).

OriMode
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Off
1 = On
This macro enables you to specify which of two methods is used to interpolate tool axis
rotation. When OriMode is called with an Override Value of 0 (zero), VERICUT uses
the standard method of interpolating the tool axis based the machine axis rotations. When
OriMode is called with an Override Value of 1, VERICUT uses a new method of
interpolating axis rotation based on the tool axis (axis of the tool relative to the part)
vector at the start of the motion, and the tool axis vector at the end of the motion. It is
intended to support machine control features like the Siemens 840D ORIVECT feature.
VERICUT moves the end position's tool axis vector to the start position and the
intersecting vectors are used to define a plane. A tool axis vector that lies in this plane, is
then calculated for each tool tip position interpolated along the linear path. The angular
change will be proportional to the progression along the linear path.
This new method applies only under the following conditions:
• OriMode macro is called with an Override Value = 1.
• Linear or Rapid motion.
• RTCP and/or RPCP on.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

PartNormalX
PartNormalY
PartNormalZ
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
The PartNormal... macros are used with Tool3dOffset macro to define the normal to the
part surface.
PartTransformation
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — Use the MoveCutStock... macros.
Valid Inputs — None
Uses the Part Transformation table to send a MATRIX and optionally a REVERSE
command to VERICUT. For this macro to work, "Process Matrix" (ref. APT Settings:
Motion tab in the VERICUT Help section, in the CGTech Help library) must be active.
NOTE: The PartTransformation macro is obsolete and no longer supported. If called,
the following message: "The macro, PartTransformation, is no longer supported" is
output.

PitchForcesHelical
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
Sets a flag which indicates that if the pitch is specified on the line, then interpret the
current circular block as helical. The delta distance perpendicular to the current plane will
be calculated based on the delta angle of the arc, and the number of full loops to be
executed. This macro would typically get called during the "Start of Processing" event.
Also see: CircleCenterX, CircleCenterY, CircleCenterZ, CircleCenterZWTracking,
ICode, JCode, KCode

PivotOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Text
This macro defines the component name to be used with TurnOnOffGagePivotOffset in
determining the distance from the pivot point to the active tool component. If this value is
not defined, the origin of the highest parent rotary/turret component will be used. If no
rotary/turret components exists on the tool side, the active tool component origin will be
used. See the illustration below.
PivotOffsetCompNameB
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Text
Defines the component name to be used with TurnOnOffGagePivotOffset in determining
the distance from the pivot point to the tool component. If this value is defined, the
corresponding tool component origin will define the tool component point. If this value is
not defined, the active tool component origin will be used. See the illustration above.

PlaneAxisMapping
Function — MAPPING
Status — ACTIVE
Valid Inputs — None
This macro initializes the mapping to the following default values:
The <= => symbol used below represents a two way mapping. Axis to a point coordinate
and point coordinate back to the axis.
X axis <= => X Point
Y axis <= => Y Point
Z axis <= => Z Point
If U is present on the current block, "X-axis" will be changed to U-axis.
If V is present on the current block, "Y-axis" will be changed to V-axis.
If W is present on the current block, "Z-axis" will be changed to W-axis.
Although not required, this macro is typically called on blocks where the G17/G18/G19
Motion Plane is being set.
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: AxisMappingXtoU, CirclePresentAxis, CyclePresentAxis, Register Mapping,
UvwAxis and XyzAxis.
PlaneAxisVectorX
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
This macro sets the X value for the specified axis. The axis is specified with the text
value. Valid axes are: "X", "Y, and "Z". This data can be used with WorkingPlane2Abc.

PlaneAxisVectorY
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
This macro sets the Y value for the specified axis. The axis is specified with the text
value. Valid axes are: "X", "Y", and "Z". This data can be used with WorkingPlane2Abc.

PlaneAxisVectorZ
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
This macro sets the Z value for the specified axis. The axis is specified with the text
value. Valid axes are: "X", "Y", and "Z". This data can be used with WorkingPlane2Abc.

PlaySoundFile
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0.1
Valid Inputs — Text
When called, it plays the wav file specified in the Override Text field.

Pogo
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
The Pogo macro should be called before each ProcessCompNameValue macro that
triggers a pogo motion. Calling the Pogo macro marks that the motion should be
processed through the new pogo-orientation logic. Calling the Pogo macro before any
motion command, other than the ProcessCompNameValue macro, will have no effect.
The pogo-orientation logic makes the following assumption to determine what
component is the pogo suction cup that needs to be re-oriented. VERICUT starts from the
component specified in the ProcessCompNameValue macro, and searches down its
component branch, at each level following the branch of the 1st machine-visible child.
The last such component in the branch is considered to be the pogo suction cup.
When a pogo motion is processed, VERICUT takes the origin of the suction cup CSYS
and ray-traces it in the direction of motion to find the closest intersection with all stock
components present. If the intersection is found, the suction cup is oriented such that its
Z-axis is aligned with the stock normal at the intersection.
At the same time, VERICUT check for error conditions: re-orientation angle is too large,
distances from suction cup to the stock intersection point that are too large (into/away
stock errors), and "No stock found". The "re-orientation angle" is the difference between
the suction cup "zero rotation" orientation and the surface normal at the stock intersection
point. The "into" error condition is where the suction cup is above the stock intersection
point ("into the stock"). The "away" error condition is where the suction cup is below the
stock intersection point ("away from the stock").
VERICUT will still re-orient the suction cup for all error conditions except for the "No
stock found" case. The default values for the error checks are: 45 deg for the max angle,
and 0.01 for the away/into tolerances. The following macros can be used to override the
defaults: PogoSetMaxAngle, PogoSetAbove Tolerance, PogoSetBelowTolerance

PogoCollisionCheck
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
The PogoCollisionCheck macro performs a check to ensure that no pogo components
overlap with each other. It is a one-time static check done at the time when the macro is
called. Overlapping components are reported and colored red.
Use Override Text to specify a "super-pogo" component name, i.e., the name of a
component which is the parent of all the pogo components that need to be checked.
When this macro is called, it will do a one-on-one static collision check between all direct
children of the "super-pogo" component, including all the sub-components of the direct
children. The default tolerance ("near miss") value is 0. The PogoSetCollisionTolerance
macro can be used to change the tolerance.
NOTES:
1. To make the POGO presentation and performance better, it is recommended that
you use the OpenGL Machine views rather than Machine/Cut Stock views as the
stock has not yet been cut when pogos are positioned.
2. As pogos are defined as "Other" type components, they are not visible in the
Workpiece view.
PogoSetAboveTolerance
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
The PogoSetAboveTolerance macro is used to specify the "into" tolerance value to be
used by the Pogo macro when checking the distance between the suction cup origin and
the closest stock intersection point. The "into" tolerance value is used for reporting error
conditions where the suction cup is above the stock intersection point ("into the stock").
By default, the Pogo macro uses an "away" tolerance of 0.01. Use Override Value to
specify the desired tolerance value.

PogoSetBelowTolerance
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
The PogoSetBelowTolerance macro is used to specify the "away" tolerance value to be
used by the Pogo macro when checking the distance between the suction cup origin and
the closest stock intersection point. The "away" tolerance value is used for reporting error
conditions where the suction cup is below the stock intersection point ("away from the
stock"). By default, the Pogo macro uses an "away" tolerance of 0.01. Use Override
Value to specify the desired tolerance value.

PogoSetCollisionTolerance
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
The PogoSetCollisionTolerance macro is used to specify the collision tolerance to be
used by the PogoCollisionCheck macro when checking for overlapping pogo
components. By default, the PogoCollisionCheck macro uses a collision tolerance of
zero. Use Override Value to specify the desired tolerance value.

PogoSetMaxAngle
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
The PogoSetMaxAngle macro is used to specify the maximum angle value to be used by
the Pogo macro when checking for "re-orientation angles" that are too large. The "re-
orientation angle" is the difference between the suction cup "zero rotation" orientation
and the surface normal at the stock intersection point. By default, the Pogo macro uses a
maximum "re-orientation angle" of 45 degrees. Use Override Value to specify the
desired angle.

PolarAngle
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Value
This macro accepts up to 2 polar angles. A simple form of a polar command is:
A140 X60
This says, start at an angle of 140 degrees, and continue until you reach X60. We also
support complex Siemens 840C commands in the form:
A110 A170 X90 Z-70 B15 B3

PolarCoordAngle
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
value = the angle
Sets the Polar Coordinate Angle.

PolarCoordIncAngle
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
value = the increment amount
Increments the Polar Coordinate Angle by the specified amount.

PolarCoordIncRadius
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
value = the increment amount
Increments the Polar Coordinate Radius by the specified amount. The resulting value
must be >= 0.

PolarCoordOnOff
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
0 = Off (Default)
1 = On
This macro turns Polar Coordinate mode "on" and "off". This value is modal. The default
is off.

PolarCoordPoleCurPos
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — None
This macro sets the Polar Coordinate Pole position to the current local axis XYZ
position.

PolarCoordPoleIncXYZ
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Text, Value
text = axis to be updated (X, Y or Z)
value = the increment amount
This macro increments the X, Y, or Z value of the Polar Coordinate Pole position. The
Text specifies what axis to update (X, Y, Z).

PolarCoordPoleOrigin
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — None
This macro resets the Polar Coordinate Pole position to be (0,0,0).
PolarCoordPoleXYZ
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Text, Value
text = axis to be updated (X, Y or Z)
value = the coordinate value
This macro sets the X, Y, or Z value of the Polar Coordinate Pole position. The Text
specifies what axis to update (X, Y, Z).

PolarCoordRadius
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
value = the radius
Sets the Polar Coordinate Radius. This value must be >= 0.

PolarCoordReset
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — none
This macro turns off the Polar Coordinate mode, sets the Polar Coordinate angle to 0, sets
the Polar Coordinate radius to 0, and resets the Polar Coordinate Pole position to be
(0,0,0).

PolarCoordZeroRadius
Function — MOTION
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
value:
0 – Print an error, and do not convert the values to Cartesian coordinates.
2 – Calculate the radius based on the distance from the current location to the
pole position. If the radius is still zero, print an error, and do not convert
the values to Cartesian coordinates.
3 – Continue processing the command using zero as the radius. This will
cause a move to the pole position.
This macro specifies what to do if the Polar Coordinate radius is 0.
PolarInterpolation
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Text, Value
Text: ALL (Default) – Apply polar interpolation to all motion types.
LINEAR – Apply polar interpolation only to Liinear motion.
Value: 0 = Off
1 = On
Turns on, and off, polar interpolation. Polar Interpolation is being defined as the
capability to use the PolarLinearAxis and the PolarRotationalAxis (by default X and C)
macros to execute a linear or circular move. The input can be either Cartesian coordinates
or Polar coordinates.
When polar interpolation is turned "on", an Override Text value of ALL (the default)
applies polar interpolation to all motion types. An Override Text value of LINEAR only
applies polar interpolation to linear motions.
Rapid motion is not interpolated as linear when rotary motion is involved.
Use an Override Value of 1 to turn polar interpolation "on". Use an Override Value of
0 to turn polar interpolation "off".
EXAMPLES:
Using Cartesian coordinates: X1C1
X calls PolarXValue
C calls PolarYValue
Using Polar Coordinates: X1.4142 C45
X calls XAxisMotion
C calls CAxisMotion
NOTE: The "interpolation" state (None, Polar, or Cylindrical) is supported as a
conditional state, and can be displayed in the Status window.

PolarLinearAxis
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Value

1 = X (Default)
2= Y
3= Z
-1 = -X
-2 = -Y
-3 = -Z
Sets the linear axis that will be driven based on the Cartesian coordinates.
For example:
In the XY Plane with a PolarLinearAxis of 1:
X1Y1 would be converted to X1.4142 C45
In the XY Plane with a PolarLinearAxis of -1:
X1Y1 would be converted to X-1.4142 C-135

PolarRotationalAxis
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Value
4=A
5=B
6 = C (Default)
10 = A2
11 = B2
12 = C2
Sets the rotational axis that will be driven based on the Cartesian coordinates. The data is
passed as either a 4, 5, 6, 10, 11, 12 (A, B, C, A2, B2, C2). The default is 6.

PolarXValue
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Value
Sets the X Cartesian coordinate value for Polar Interpolation. If cycles are active,
PolarXValue also sets the cycle depth (as appropriate based on the motion plane).
Also see: PolarYValue and PolarZValue

PolarYValue
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Value
Sets the Y Cartesian coordinate value for Polar Interpolation. If cycles are active,
PolarYValue also sets the cycle depth (as appropriate based on the motion plane).
Also see: PolarXValue and PolarZValue
PolarZValue
Function — CYLINDRICAL/POLAR
Status — ACTIVE
Valid Inputs — Value
Sets the Z Cartesian coordinate value for Polar Interpolation. If cycles are active,
PolarZValue also sets the cycle depth (as appropriate based on the motion plane).
Also see: PolarXValue and PolarYValue

PQRVector
Function — MOTION
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text, Value
Sets the P, Q, or R values used to define the tool motion direction vector. The motion
direction vector is used with composite tape laying data input created by a VCP
postprocessor. The tool motion direction vector can be transformed to a user specified
coordinate system.
Also see: SetRobotCsys

PreToolCompSelect
Function — TOOLING
Status — ACTIVE
Valid Inputs — Value
Stores the pre-selected tool component number.

Probe
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Turns on probing for the current block. This macro is associated with the active tool
component, and the corresponding tool must be a Probe Tool. The axes move until they
arrive at the programmed location, or until the probe contacts something.
If the Override Text value begins with "RETURN=", then the string following the equal
sign will be interpreted as a variable name in which the return code from the Probe
motion will be returned. A return code value of 1 means that a "hit" occurred and a return
code value of 0 means that a "hit" did not occur.
If four variable names are supplied then the first variable name will contain the return
code, and the next three variable names are used to return the X, Y and Z coordinates of
the contact point location in the stock coordinate system. The specified variable names
are modal. The variable does not need to be pre-defined.
When a "Probe" action occurs:
The spherical probe tip(s) are processed through a special algorithm that computes an
accurate "hit" location. The location is based on the "great circle" of the sphere which lies
in the motion plane.

The axes are moved to that location. If the spherical probe tip contacts at any other
location other than the "great circle" a warning message is output and motion stops at the
alternate location. If no contact is detected, motion continues to the programmed location.
Standard collision logic is used to determine if any other component hits something
during the probe motion, but the motion continues to the probe destination.
NOTE: The Probe macro requires a CNC Machine Probing license.

ProcessCompNameValue
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the position of the component whose name is specified in the input text string to the
specified numeric value. The use of this macro is only applicable to components outside
of the "active" subsystem.

ProcessCompNameReset
Function — MOTION
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
This macro resets the position (offset and value) of the specified component to zero.
This macro was implemented for the Citizen control. Its use should be very limited.
ProcessCompRegValue
Function — MOTION
Status — ALTERNATE
Comment — Use ProcessCompNameValue
Valid Inputs — Text, Value
Sets the position of the component whose register value is specified in the input text
string to the specified numeric value.

ProcessCutterComp
Function — CUTTER COMPENSATION
Status — NOT RECOMMENDED
Comment — Added V7.1
Valid Inputs — Value
0 = Off
1 = On default to zero
2 = On default to full radius
This macro is used to override to the Process Cutter Comp. feature setting in the Project
Tree, Configure Setup menu: G-Code tab. The Process Cutter Comp. feature now
defines the Default setting for the setup, which can now be overridden for a specific
control (otherwise known as subsystem or channel) by calling this macro. This macro
value does not change the Process Cutter Comp. feature setting, and is not saved in the
Project file.
NOTE: This macro's values match the options on the Process Cutter Comp. feature
options in the Project Tree, Configure Setup menu: G-Code tab.
By calling this macro, it make it easier to mis-configure the control. For this reason, the
use of this macro is "not recommended". It is, however, available if needed for special
situations.

ProcessCutterCompRestore
Function — CUTTER COMPENSATION
Status — NOT RECOMMENDED
Comments — Added V7.1
Valid Inputs — None
Restores the cutter compensation setting to the value that was active prior to the last call
to ProcessCutterComp. If ProcessCutterComp has not been called since the last reset,
this macro will have no effect.
Also see: ProcessCutterComp
ProcessMotion
Function — EVENTS
Status — ACTIVE
Valid Inputs — None
Processes the motion associated with the previous set of commands. This command is
automatically called at the end of the block. This command can also be called as a macro
to create additional motion.

ProcessTimeOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = turn time Off
1 = turn time On
Turns machining time On and Off during toolchain operations. This allows the system to
ignore times from tool changer motions and only use the exact exchange time defined in
the toolchain component dialog. A value of zero turns time off, and a value of one turns
time back on.

ProgramStartNextLine
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Marks the following block as the first block of the program. This is used when the
beginning of a file contains subroutines followed by a specific code which marks the
beginning of the program.

ProjectUnitsVar
Function — VARIABLES
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text
Text = the variable name
This macro is used to define a variable to hold the current Project's Units: Inch or
Millimeter. Enter the name for the variable to be defined in the Override Text field. The
current Project's Units are stored in the variable with a value of "0" for Inch or a value of
"1" for Millimeter.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
RapidPlanePriorityType
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Rapid is not dependent on active plane. (Default)
1 = Rapid is dependent on active plane.
Supports the concept of the motion of a rapid move being dependent on the plane rather
than the machine axis. To turn on this capability, this macro should be called during the
"Start of Processing" event with an override value of 1.
Sets a flag which determines whether the rapid motion should be dependent on the active
plane, and if so, the type of rules that should apply. Default is zero. Currently supported
values are:
0 = Rapid is NOT dependent on active plane.
1 = Rapid IS dependent on active plane.
Movement to workpiece: rotaries, then linear in plane, then normal to plane
Movement away from workpiece: normal to plane, the linear in plane, then rotaries
NOTE: If motion is set to be dependent on active plane, the rapid priority axis should
probably be set to moving at the same time with all axis interpolated.

RapidRotaryTolerance
Function — MOTION
Status — NOT RECOMMENDED
Comment — Added V7.1
Valid Inputs — Value
Value = tolerance value
This macro overrides the Rotary Motion Tolerance value, specified on the Properties
window: Tolerance tab, when in RAPID mode. The tighter the tolerance, the higher the
performance hit. The assumption is, if you are in RAPID mode, you are far enough from
everything that there should never be a collision, therefore loosen the tolerance in order
to gain performance.
Two possible problems exist with using the above macro.
1. The assumption that you are far away from everything is not necessarily true.
2. The performance hit is much less now than in V7.0
For the above reasons, it is recommended that this macro not used. It is added for the
cases where it is absolutely needed for performance reasons.
Rcode
Function — CIRCLES
Status — ALTERNATE
Comment — Use Conditionals to call macros directly.
Valid Inputs — Value
Depending on the motion type (circular or non-circular), either sets the radius of a circle,
or sets the R point level of a cycle. For a circle the interpretation of the center point is
dependent on the Circles control settings (ref. Control Settings window: Circles tab in
the VERICUT Help section, in the CGTech Help Library).

ReferencePoint
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Causes a return to the machine reference point for the axes specified on the block. This
action occurs after block motion has been processed.

ReferencePointCancelOffsets
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Causes a return to the machine reference point for the XYZ axes specified on the block.
This action occurs after block motion has been processed. The corresponding work and
shift offsets for the specified axis are also reset to 0.

ReferencePointDirect
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
value = index into the Machine Reference Location table
This macro supports OKUMA type calls to the Machine Reference locations. It sends all
axes to the locations specified by the Machine Reference Location table. The Override
Value is used to specify an index into the table. Axis specification is not required in the
block.
ReferencePointIndex
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Causes a return to the machine reference point for the axes specified on the block. This
macro is identical to ReferencePoint, except the incoming numeric value will be used as
an index into the Machine Reference Location table (ref. Machine Reference Location
table in the Tables for Processing G-Codes section, in the CGTech Help Library).
NOTE: ReferencePoint always uses index 1.

RefreshToolOffset
Function — TOOL_OFFSETS
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — Text
This macro causes the tool offsets to be recalculated using the current settings and tool
orientation.

RegisterMapping
Function — MAPPING
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — Text
Typically, the input text value will be a register (X, Y, Z, U, V and W). The software will
then look to see which axis the corresponding component travels along. This register axis
will then be mapped to the corresponding motion axis.
The <= => symbol used below represents a two way mapping. Axis to a point coordinate
and point coordinate back to the axis.
If a text value of "RESET" is specified, the mapping flags will be reset to their default
values. The default values are:
X axis <= => X Point
Y axis <= => Y Point
Z axis <= => Z Point
NOTE: The register corresponds to the "Component Type" field within a Component.
Example:
If you start with a default mapping, and then call this macro with a text value of "V",
and V moves along the Z axis, the mapping flags will be modified to have the V axis
value set the Z point.
X axis <= => X Point
Y axis <= => Y Point
V axis <= => Z Point
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: AxisMappingXtoU, CirclePresentAxis, CyclePresentAxis, PlaneAxisMapping,
UvwAxis and XyzAxis.

RelationalOffsetRegisterName
Function — TOOL_OFFSETS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
This macro has been created as an alternative way to specify the component in which a
relational offset should be applied. Rather than calling one of the
RelationalOffsetCompName macros (XRelationalOffsetCompName,
YRelationalOffsetCompName, ZRelationalOffsetCompName), this macro can be called
to specify the Register name that you want the offset to apply to. For example: If your
machine is defined with both X and U register components, both moving along the X-
axis, if you call this macro with an OT=U, then the X relational offset will be applied to
the U register component.
If a text value of "RESET" is specified, the direct specification of the registers used for
X, Y, Z Relational offsets will be deleted, and the software will apply X to X, Y to Y and
Z to Z.
Important Limitation: During the reset, the Machine Zero Offset, the Program Zero
Offset, the Base Work Offset, and the default Work Offset is set. This occurs prior to the
"Reset" event. This means that these macros will not affect the initial settings of these
offsets.
NOTE: Calling UpdatePZ after ZRelationalOffsetCompName could be used to force
the update of the Program Zero offset.
See also: XRelationalOffsetCompName, YRelationalOffsetCompName, and
ZRelationalOffsetCompName
RenameStocksToDesign
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.1.1
Valid Inputs — Text
When called at the End Of Processing event, this macro traverses the Component Tree
looking for stock components that contain a cut stock. For each cut stock, the stock
component is renamed based on the Override Text string plus the name of the first child
design component of that stock component. If no design component, then the stock
component is not renamed.
For example, if StockCut-1 has DesignCut-4 child, and the Override Text string is
"Finish", then the new stock component name is "FinishDesignCut-4". These new
names can be viewed by right clicking in the workpiece view and looking at the Attach
Component pull-down list. This enables you to recognize, and select, them prior to doing
an AUTO-DIFF compare. Any stock component that does not have a cut stock or does
not have a design is not renamed.

RepaintCutColor
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
Repaints cut stock back to original cut colors after a "Reset Cut Color" operation or, a
call to the ResetCutColor macro.
Also see: ResetCutColor and SetCutColor

ResetCutColor
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
Resets all cut stock cuts to single color. Equivalent to operation "Reset Cut Color" in
Color window, Assign tab (ref. Color window: Assign tab, in the VERICUT Help
section, in the CGTech Help Library).
Also see: RepaintCutColor and SetCutColor
ResetIfCheck
Function — BRANCHING
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — None
Resets the IfCheck condition to TRUE.

ResetWorkCoordParms
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — None
The WorkCoord...Value macros set a flag indicating that a value has been specified for
the corresponding axis. These flags are reset (to not present) on each block. This macro is
also used to reset these flags. This macro only needs to be called if the control allows
multiple sets of Work Coordinate values to be specified on a single block. This macro
was specifically implemented for the G&L control.
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

RestoreChangeSubsystemID
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
Restores the subsystem that the current control drives to the one that was active prior to
calling ChangeSubsystemID.
NOTE: This routine calls ChangeSubsystemID to activate the change.

RestoreMotionType
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text, Value
This macro restores the motion type to the last non-rapid motion. This macro is only
applicable when in RAPID mode, and you want to switch back to the previous non-
RAPID mode. If the current motion type is set to something other then RAPID, this
macro does not restore a previous mode, and will keep the current motion type.
RestorePrevMotionType
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — None
This macro is used to restore the previous motion type.
NOTE: Commands like ToolChange, CyclesExecute and CyclesCancel may change the
motion type.

RestoreSavedMotionType
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — None
This macro restores the "saved motion type". The "saved motion type" is set by calling
the SetSavedMotionType macro.

RestoreSetSubsystemID
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
Restores the active subsystem (control) to the one that was active prior to calling
SetSubsystemID.
NOTES:
1. This routine calls SetSubsystemID to activate the change.
2. This macro replaces RestoreSubsystemID (name change). RestoreSubsystemID
is now OBSOLETE.

RestoreSubsystemID
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — Replaced by RestoreSetSubsystemID
Valid Inputs — Value
Restores the active subsystem to the one that was active prior to calling SetSubsystemID.
NOTE: This routine calls SetSubsystemID to set the active subsystem
RestoreUnits
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Restores the units to the previous saved value.
Also see: SaveUnits.

RestrictRotaryAxis
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text , Value
text:
FIRST = use the working plane rotation axis closest to the tool (rider)
(Default)
SECOND = use the second working plane rotation axis (carrier)
value = angle at which the rotary axis angular space is to be divided
Use to specify the working plane rotation axis that is to be used to determine which of
two possible solutions should be used. This macro enables overriding the current logic
used for Heidenhain controls where the nearest axis to the tool is used.
If Override Text is FIRST (the default), the working plane rotation axis closest to the
tool (rider) is used to determine the solution. If Override Text is SECOND, the second
working plane rotation axis (carrier) will be used to determine the solution.
The Override Value is used to specify an angle at which the rotary axis angular space is
to be divided. The Value option was developed to support the Siemens 840D CYCLE800
subroutine and is only valid for use with macro WorkingPlane2AbcSolution, types 4
(Use the small value solution for the specified rotary axis) and 5 (Use the large value
solution for the specified rotary axis).
The solution for the restricted axis is selected based on the absolute position of that axis
(i.e., is not related to the previous axis value like it is with all other options). If no
Override Value is entered, or a value of "0" is entered, this macro processes as described
above for Override Text.
Also see: WorkingPlane2AbcSolution
RetractLevelClearanceRetract
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the Cycle Return Level to "Clearance + Retraction". (ref. Control Settings
window: Cycles tab in the VERICUT Help section, in the CGTech Help Library.
NOTE: The menu sets the default value for Cycle Return Level and this macro
updates the current value.
Also see: RetractLevelInitial, RetractLevelRpoint, and RetractLevelSpecifiedpoint.

RetractLevelInitial
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the retract level to be the initial level at the point at which the cycle mode was turned
on.

RetractLevelRpoint
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the retract level to the R point level.

RetractLevelSpecifiedpoint
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Override Value
Sets the retract level to a specified point. This point is specified with one of the following
macros: XRetractSpecifiedpoint, YRetractSpecifiedpoint, or ZRetractSpecifiedpoint

ReturnFromSub
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
This macro is identical to EndSub, except it does not mark the current location as the end
of the subroutine. This allows for multiple "returns" from a given subroutine.
NOTE: If this macro is called rather than EndSub, there will need to be some other
event to mark the end of the subroutine.
ReturnFromSubCall
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
This macro is identical to ReturnFromSub, except it will only be executed if you are
currently with a subroutine.

RollerFormCollisionIgnore
Function— TAPE LAYING
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
0 = turn off the ignore flag
1 = turn on the ignore flag
This macro enables, and disables, the normal collision checking that would occur
between the active tool (Roller) and the active stock (Form). It does this by modifying the
ignore flag on the corresponding entry in the collision table.
NOTES:
1. The corresponding entry must already exist in the collision table. A value of 0
turns off the ignore flag, and a value of 1 turns on the ignore flag.
2. The ignore flag was implemented in V7.0. It is being back ported into V6.2.x to
support this command, but without the corresponding GUI update to the collision
table.

RotaryAxisLinearRewind
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Converts the current position of the specified rotary component (specified by name) to a
value between 0-360. No motion takes place. Use the Override Text field to pass the
axis component name, e.g.: A, B, C, A2, B2, C2.
Also see: RotaryLinearRewind
RotaryAxisLinearRewind360_360
Function — MOTION
Status — ACTIVE
Comment — Also see: RotaryLinearRewind360_360
Valid Inputs — Text, Value
Converts the current position of the specified rotary (specified by name) to a value
between -360 and 360. No motion takes place. Use the Override Text field to pass the
rotary name, e.g.: A, B, C, A2, B2, C2. This conversion will be conditional upon the
current position being beyond a minimal position (specified by the numeric value).

RotaryAxisLock
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text, Value
Text = the name of the rotary component
Value
0 = unlock the rotary component
1 = lock the rotary component
This macro is used to disable rotary axis component motion when resolving IJK to ABC
conversions. This macro is applied when using the Ijk2AbcType macro type (99)
Universal. The rotary axis motion is not disabled when using direct axis programming.
An Override Value of "1" locks the rotary component specified in the Override Text
field. The locked component remains locked until it is reset by a call to this macro with
an Override Value of "0".
An Override Value of "0" unlocks the rotary component specified in the Override Text
field.
Also see: Ijk2AbcType

RotaryControlPointOnOff
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Also see: RpcpOn, RpcpOff and RtcpOn, RtcpOff
Valid Inputs — Value
0 = turns Off the RPCP and/or RTCP functions
1 = turns On the RPCP and/or RTCP functions
Sets the Rotary Tool Control Point ("RTCP") and/or Rotary Part Control Point ("RPCP"),
as determined by the NC machine configuration. When called with a value of "1" the
macro turns ON a combination of RTCP and RPCP for the machine being used. A value
of "0" turns OFF the RPCP and/or RTCP functions.
RotaryDirCCW
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be always Counter
Clockwise. By default, the affect applies to all rotary axes. Individual rotary axes can be
controlled via entering the axis name in the Override Text field, e.g.: "AAXIS",
"BAXIS", "CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".

RotaryDirCW
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be always Clockwise. By
default, the affect applies to all rotary axes. Individual rotary axes can be controlled via
entering the axis name in the Override Text field, e.g.: "AAXIS", "BAXIS", "CAXIS",
"A2AXIS", "B2AXIS", "C2AXIS".

RotaryDirLinear
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be linear. The value will be
first converted into a number between 0 and 360, and then the rotation will act as if it is a
linear table. By default, the affect applies to all rotary axes. Individual rotary axes can be
controlled via entering the axis name in the Override Text field, e.g.: "AAXIS",
"BAXIS", "CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".

RotaryDirPosCCW
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be counterclockwise when
the angle is positive and clockwise when the angle is negative. By default, the affect
applies to all rotary axes. Individual rotary axes can be controlled via entering the axis
name in the Override Text field, e.g.: "AAXIS", "BAXIS", "CAXIS", "A2AXIS",
"B2AXIS", "C2AXIS".

RotaryDirPosCCWAbsolute
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be counterclockwise when
the angle is positive and clockwise when the angle is negative. Unlike
RotaryDirPosCCW, a minus sign is used to determine the direction and the angle (-90 =
270). By default, the affect applies to all rotary axes. Individual rotary axes can be
controlled via entering the axis name in the Override Text field, e.g.: "AAXIS",
"BAXIS", "CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".
RotaryDirPosCW
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Similar to RotaryDirPosCCW, but rotary directions are reversed. Sets the direction for an
EIA (360 Absolute) rotary table to be clockwise when the angle is positive and
counterclockwise when the angle is negative. By default, the affect applies to all rotary
axes. Individual rotary axes can be controlled via entering the axis name in the Override
Text field, e.g.: "AAXIS", "BAXIS", "CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".

RotaryDirPosCWAbsolute
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Similar to RotaryDirPosCCWAbsolute, but rotary directions are reversed. Sets the
direction for an EIA (360 Absolute) rotary table to be clockwise when the angle is
positive and counterclockwise when the angle is negative. Unlike RotaryDirPosCW, a
minus sign is used to determine the direction and the angle (-90 = 270). By default, the
affect applies to all rotary axes. Individual rotary axes can be controlled via entering the
axis name in the Override Text field, e.g.: "AAXIS", "BAXIS", "CAXIS", "A2AXIS",
"B2AXIS", "C2AXIS".
RotaryDirShortestDist
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be the direction which is the
shortest distance from the current position. By default, the affect applies to all rotary
axes. Individual rotary axes can be controlled via entering the axis name in the Override
Text field, e.g.: "AAXIS", "BAXIS", "CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".
Also see: RotaryDirShortestDist180CCW and RotaryDirShortestDist180CW

RotaryDirShortestDist180CCW
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be the direction which is the
shortest distance from the current position, except when the angle is exactly 180 degrees.
When the angle is exactly 180 degrees, the direction will always be set to counter
clockwise. By default, the affect applies to all rotary axes. Individual rotary axes can be
controlled via entering the axis name in the Override Text field, e.g.: "AAXIS",
"BAXIS", "CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".
Also see: RotaryDirShortestDist and RotaryDirShortestDist180CW
RotaryDirShortestDist180CW
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
Sets the direction for an EIA (360 Absolute) rotary table to be the direction which is the
shortest distance from the current position, except when the angle is exactly 180 degrees.
When the angle is exactly 180 degrees, the direction will always be set to clockwise. By
default, the affect applies to all rotary axes. Individual rotary axes can be controlled via
entering the axis name in the Override Text field, e.g.: "AAXIS", "BAXIS", "CAXIS",
"A2AXIS", "B2AXIS", "C2AXIS".
Also see: RotaryDirShortestDist and RotaryDirShortestDist180CCW

RotaryFeedFactor
Function — FEEDS and SPEEDS
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
This macro is used to set the multiplier used by FeedPerMinuteType macro case 5. The
multiplier sets the mm:degree ratio. The default ratio is 1.
The multiplier is set in mm-per-degree units. For example, if a rotary delta is 90 degrees,
and the multiplier is (500/360) mm/degree, and the current linear unit is INCH, then the
corresponding "linear" delta for this rotary is 90*(500/360)/25.4 inches.

RotaryFeedRate
Function — FEEDS and SPEEDS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
The rotary feedrate will be set to the specified value. This value is only used to calculate
the time for a motion when in FeedPerMinute mode, and the FeedPerMinuteType is set to
4.
RotaryLinearRewind
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Converts the current positions of the A, B, C, A2, B2, C2 Rotary Linear tables to an
absolute value between 0-360. No motion takes place.
Also see: RotaryAxisLinearRewind

RotaryLinearRewind360_360
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Converts the current positions of the A, B, C, A2, B2, C2 Rotary Linear tables to an
absolute value between -360 and 360. No motion takes place. This conversion will be
conditional upon the current position being beyond a minimal position (specified by the
numeric value).
Also see: RotaryAxisLinearRewind360_360

RotaryTypeAbsolute
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
This macro changes the Rotary Type to Absolute for the specified axis. The axis is
specified by entering the axis name in the Override Text field, e.g.: "AAXIS", "BAXIS",
"CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".
No other action is taken. The type of Absolute table will be based on previous settings.
NOTES:
1. When in absolute mode, the input angle will be converted to an angle between 0-
360 when the corresponding AxisMotion (AAxisMotion, BAxisMotion, etc.)
command is executed.
2. RotaryTypeAbsolute only sets the rotary table type, and is NOT related to the
series of macros which set the direction for an Absolute table (RotaryDirCCW,
RotaryDirCW, RotaryDirLinear, RotaryDirPosCCW, RotaryDirPosCW,
RotaryDirShortestDist).
RotaryTypeLinear
Function — MOTION
Status — ACTIVE
Valid Inputs — Text
Possible options are: AAXIS
BAXIS
CAXIS
A2AXIS
B2AXIS
C2AXIS
This macro changes the Rotary Type to Linear for the specified axis. The axis is specified
by entering the axis name in the Override Text field, e.g.: "AAXIS", "BAXIS",
"CAXIS", "A2AXIS", "B2AXIS", "C2AXIS".
NOTE: RotaryTypeLinear only sets the rotary table type, and is NOT related to the
series of macros which set the direction for an Absolute table (RotaryDirCCW,
RotaryDirCW, RotaryDirLinear, RotaryDirPosCCW, RotaryDirPosCW,
RotaryDirShortestDist).

Rotate
Function — ROTATE 2D
Status — RENAMED
Comment — Renamed to: RotateMacro

RotateCancel
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — None
Cancels the current rotation.

RotateMacro
Function — ROTATE 2D
Status — SPECIAL
Valid Inputs — Text
Fanuc specific 2D rotation that causes the coordinate system to be rotated, within the
active plane, by a specified angle. The angle is specified with the RotationAngle macro.
The center of rotation can be specified with calls to the RotateXValue, RotateYValue,
and RotateZValue macros. The XYZ values are based on the current coordinate system.
The rotation angle is based on the machine coordinate system.
If the first motion block following the call to RotateMacro is in Incremental mode, the
center of rotation will be ignored.
EXAMPLE:

G90X0Y0 ==> X0 Y0
G68X1Y1R45
X0Y0 ==> X1 Y-.4142 The G68 cause the origin to be shifted
X1 ==> X1.707 Y.2929
Y1 ==> X1, Y1
X0 ==> X.2929, Y.2929
Y0 ==> X1 Y-.4142
G91G68X1Y1R45 ==> Because of the G91, rotate angle is now 90. Center
is independent of G90/G91 mode for this block.
G90X0Y0 ==> X2 Y0
X1 ==> X2 Y1
Y1 ==> X1 Y1
X0 ==> X1 Y0
Y0 ==> X2 Y0

RotateOrigin
Function — ROTATE 2D
Status — SPECIAL
Valid Inputs — Value
2D rotation that causes the coordinate system to be rotated within the active plane by a
specified angle. The angle is specified with the RotationAngle macro. The center of
rotation is always the current origin. The rotation angle is based on the machine
coordinate system.

EXAMPLE:

G90X0Y0 ==> X0 Y0
G68X1Y1R45
X0Y0 ==> X0 Y0
X1 ==> X.707 Y.707
Y1 ==> X1, Y1.414
X0 ==> X-.707, Y.707
Y0 ==> X0 Y0
G91G68X1Y1R45 ==> Because of the G91, rotate angle is now 90.
G90X0Y0 ==> X0 Y0
X1 ==> X0 Y1
Y1 ==> X-1 Y1
X0 ==> X-1 Y0
Y0 ==> X0 Y0
RotateTurningTool
Status — OBSOLETE
Comment — No Longer Exists.

RotateXValue
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Sets the X coordinate value of the point of rotation.

RotateXYZ
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
2D rotation that causes the coordinate system to be rotated, within the active plane, by a
specified angle. The angle is specified with the RotationAngle macro. The center of
rotation can be specified with calls to the RotateXValue, RotateYValue, and
RotateZValue macros. The XYZ values are based on the current coordinate system. The
rotation angle is based on the machine coordinate system. This macro is identical to the
Fanuc specific RotateMacro except is independent of the mode of the block following the
G68 command. See RotateMacro for a G-Code example.

RotateYValue
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Sets the Y coordinate value of the point of rotation.

RotateZValue
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Sets the Z coordinate value of the point of rotation.

RotationAbsAngle
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Sets the total rotation angle to be the specified value.
RotationAngle
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Specifies the angle to be used with the 2D rotation macros (RotateMacro, RotateXYZ,
RotateOrigin and OkumaShiftRotate). The angle will be interpreted as absolute, or
incremental, depending on the current mode (G90/G91). This macro will also adjust for
mirroring.
Also see: RotationAbsAngle and RotationIncAngle

RotationIncAngle
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
Increments the total rotation angle by the specified value.

RotationPlane
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use RotationPlane2
Valid Inputs — None
Turns on the rotation plane using the values specified via the RotationPlaneXPoint,
RotationPlaneYPoint and RotationPlaneZPoint macros and RotationPlaneAngle1,
RotationPlaneAngle2, RotationPlaneAngle3 macros. (Don't re-calculate the current
position into the new coordinate system.) The rotation plane remains active until replaced
by a new rotated plane, or cancelled via RotationPlaneCancel.

RotationPlane2
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
Similar to RotationPlane. However, these two macros differ in how they calculate the
initial motion after setting the rotation plane, particularly in the case where all axes are
not programmed. RotationPlane2 re-calculates the current position into the new
coordinate system, where RotationPlane does not.
RotationPlaneAngle1
RotationPlaneAngle2
RotationPlaneAngle3
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
Macros RotationPlaneAngle1-3 define the first, second, third angles to be applied,
respectively. An Override Text value of "X", "Y", or "Z" defines the axis about which to
apply each rotation. Rotation is performed in numeric order- angle 1 first, angle 2 second,
and so on.
Also see: RotationPlaneIncAngle1-3

RotationPlaneCancel
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use RotationPlaneCancelReset
Valid Inputs — None
Cancels the rotation plane put into affect via the RotationPlane, or RotationPlane2
macros.

RotationPlaneCancel2
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use RotationPlaneCancelReset
Valid Inputs — Text, Value
Calls RotationPlaneRestoreAxis, then cancels the rotation plane put into affect via the
RotationPlane or RotationPlane2 macros.

RotationPlaneCancelReset
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text, Value
Resets all rotation plane values to 0.0, calls RotationPlane2 to restore the current axis
values, and then turns off the rotation plane.
RotationPlaneEnable2
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — None
This macro restores the restores the previously set rotation plane, and converts the current
local axis position into the new coordinate system.
NOTE: This macro does not re-calculate the matrix. If RotationPlaneCancel2 is used to
turn off the rotation plane, then this macro can be used to get you back to where you
were.

RotationPlaneIncAngle1
RotationPlaneIncAngle2
RotationPlaneIncAngle3
Function — ROTATION PLANE
Status — ACTIVE
Comments — Use non incremental angles and RotatonPlaneLocal2
Status changed from OBSOLETE to ACTIVE in V6.2.1
Valid Inputs — Text, Value
Macros RotationPlaneIncAngle1-3 define incremental adjustments to be made to the
first, second, third rotation plane angles defined via the RotationPlaneAngle1,
RotationPlaneAngle2, and RotationPlaneAngle3 macros. An Override Text value of "X",
"Y", or "Z" defines the axis about which to apply each incremental adjustment.

RotationPlaneIncXPoint
RotationPlaneIncYPoint
RotationPlaneIncZPoint
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
These macros define the X, Y, and Z coordinates of the center point of rotation for
incremental rotation adjustments performed by the RotationPlaneIncAngle1-3 macros.
RotationPlaneLocal
Function — ROTATION PLANE
Status — ALTERNATE
Comment — Use RotationPlaneLocal2
Valid Inputs — None
Adjusts how the existing rotation plane values are interpreted (ref. RotationPlaneAngle1).
When called, rotation plane values are interpreted as incremental rotations and
translations within the current rotation plane.

RotationPlaneLocal2
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
Similar to RotationPlaneLocal, but they differ in how they calculate the initial motion
after setting the rotation plane, particularly in the case where all axes are not
programmed. RotationPlaneLocal2 re-calculates the current position into the new
coordinate system, where RotationPlaneLocal does not.

RotationPlaneRestoreAxis
Function — ROTATION PLANE
Status — NOT RECOMMENDED
Comment — Use macros RotationPlane2, RotationPlaneCancel2,
RotationPlaneEnable2, RotationPlaneLocal2.
Valid Inputs — Value
Converts the previously specified axis into a non-rotated plane coordinate system. This
macro should be called prior to cancelling a rotation plane via RotationPlaneCancel.

RotationPlaneSpecialOffset
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
1 = On
Any other value = Off (Default)
Specifies whether or not to specially handle the changing of offsets while a RotationPlane
is in effect. Passing a value of "1" turns on this feature. Any other value passed to the
macro turns this feature off. The default is no special handling of offsets for rotation
planes
RotationPlaneXMirror
RotationPlaneYMirror
RotationPlaneZMirror
Function — MIRROR
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — none
These macros are used to add mirroring support to Siemens 840D $P¬_PFRAME. These
macros are equivalent to the MirrorX, MirrorY and MirrorZ macros where the mirror axis
value is 0.
When one of these macros is called, the corresponding axis will be reversed. Circular
interpolation is not supported when mirror is activated by one of these macros.

RotationPlaneXPoint
RotationPlaneYPoint
RotationPlaneZPoint
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
These macros define the X, Y, and Z coordinates of the center point of rotation
performed by the RotationPlaneAngle1, RotationPlaneAngle2, and RotationPlaneAngle3
macros.

RotationPlaneXScale
RotationPlaneYScale
RotationPlaneZScale
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — Value
The RotationPlaneXScale, RotationPlaneYScale and RotationPlaneZScale macros are
used to define the scale factor to be applied to the X, Y and Z axis, respectively. The
default value is 1.0 for all axes. Use RotationPlane2, or RotationPlaneLocal2 to activate
the Rotation Plane with the scale factors set.
Also see: RotationPlane2 and RotationPlaneLocal2
RpcpContour
Function — SHIFT_WORK_PZ
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = RPCP in non-contouring mode
1 = RPCP in contouring mode (Default)
Controls the RPCP mode: contouring vs. non-contouring. When in non-contour mode,
only the final position is calculated. This means that on B90 command, the tool will
move away from its starting position and then return by the end of the motion. The
default is 1.
NOTE: This macro is dependent on RPCP being turned on.

RpcpOff
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — None
Use to turn Rotary Part Control Point ("RPCP") processing off.
Also see: RpcpOn, RotaryControlPointOnOff, RtcpOn and RtcpOff

RpcpOffset
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = exclude rotary axis offset values from transformation calculations applied to
the input coordinates
1 = include rotary axis offset values in transformation calculations applied to the
input coordinates (default)
This macro enables controlling the effect of rotary axis offset values on RPCP
transformation calculations. This feature is designed for the Siemens 840D control to
enable producing the same cut pattern from a single NC program regardless of whether
the part is located at the rotary table center, or has been repositioned using different
rotary axis offsets.
Use an Override Value of "0" to exclude rotary axis offset values from PPCP
transformation calculations applied to the NC program's input coordinates. Use an
Override Value of "1", the default, to include rotary axis offset values in RPCP
transformation calculations applied to the NC program's input coordinates.
See Siemens commands AROT, and ROT, for the Sinumerik 840D control, for additional
information.

RpcpOn
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — None
Turns Rotary Part Control Point ("RPCP") processing on. When RPCP is active, the part
is moved relative to the tool tip to reflect changes in any rotary axis on the part side of the
NC machine (Base to Stock components).
An RPCP Pivot Offset table (ref. RPCP Pivot Offset table in the Tables for Processing
G-Codes section, in the CGTech Help Library) is available to override the system-
calculated RPCP pivot offset distance. When the table exists, its value is used to offset
the part during rotary operations.
Also see: RpcpOff, RotaryControlPointOnOff, RtcpOn and RtcpOff
RpcpWithMotion
Function — SHIFT_WORK_PZ
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = XYZ axis will move when the part is rotated in order to keep its relative
position the same, even if XYZ is not on the block.
1 = XYZ axis will not be updated until there is motion for that specified axis
This macro determines how RPCP will behave when RPCP is turned on, and not in RPCP
Contour mode. The default is 0.

RPM
Function — FEEDS & SPEEDS
Status — RENAMED
Comment — Renamed to: RPMSpeed.
RPMMode
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
Sets the current mode to constant RPM's.
RPMSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text, Value
Sets the spindle speed in RPM's.

RtcpContour
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Value
0 = RTCP in non-contouring mode
1 = RTCP in contouring mode (Default)
Controls the RTCP mode: contouring vs. non-contouring.
0 = RTCP in non-contouring mode. The behavior of RTCP is controlled by the RTCP
With Motion flag.
1 = RTCP is in contouring mode. The machines axes will be continually updated as the
tool rotates in order to keep the tool tip on path. This means that if only an A rotation
is programmed (assume A is a rotary on the Tool Side), then all axes will move in
order to keep the tool tip motionless as the tool rotates. This is the default.
NOTES:
1. This assumes that all tool side offsets are being applied at the time A rotates.
2. This command is dependent on RTCP being turned on (See RtcpOn).
3. The default mode for RtcpContour can be set in the Configuration menu >
Control Settings: Rotary tab (see the VERICUT Help section, in the CGTech
Help Library for information on the Control Settings window features). You can
then override the default mode with this macro.

RtcpOff
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — None
Turns Rotary Tool Control Point ("RTCP") processing off.
Also see: RtcpOn, RpcpOn, RpcpOff and RotaryControlPointOnOff
RtcpOn
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — None
Turns Rotary Tool Control Point ("RTCP") processing on. After turning RTCP on, the
UpdateRotaryOffsets macro should be called to make sure that all internal offsets are
updated. This macro should probably be executed after motion or a block by itself.
An RTCP Pivot Offset table (ref. RTCP Pivot Offset table the Tables for Processing G-
Codes section, in the CGTech Help Library) is available to override the system-
calculated RTCP pivot offset distance. When the table exists, its value is used to offset
the part during rotary operations.
Also see: RtcpOff, RpcpOn, RpcpOff and RotaryControlPointOnOff

RtcpWithMotion
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Value
0 = offsets take effect immediately
1 = offsets take effect when the corresponding axis is specified (Default)
This macro is used to specify when offsets are to take effect. For the most part, this
macro is only applicable when in non-contouring mode.
0 = Offsets take effect immediately. The compensation for the tool orientation will only
be calculated for the final orientation of the tool, and will be applied immediately.
This means that if the tool tip is currently at (0,0,0), and only aa A rotation is
programmed, then all axes will move, and at the end of the motion, the tool tip will be
back at (0,0,0). During the motion, however, the tool tip will wander.
1 = Offsets take effect when the corresponding axis is specified. The compensation for
the tool orientation will only be calculated for the final orientation of the tool, and
will only be applied when there is motion on the corresponding axes. This means that
if only an A rotation is programmed (assume A is a rotary on the Tool Side), then
only A will move. If the tool tip was at (0,0,0), and after the rotation X0Y0Z0 is
programmed, the tool tip will return to the (0,0,0) position. This is the default.
NOTES:
1. This command is dependent on RTCP being turned on (See RtcpOn).
2. The default mode for RtcpWithMotion can be set in the Control Settings
window: Rotary tab (ref. Control Settings window: Rotary tab in the
VERICUT Help section, in the CGTech Help Library). You can then override the
default mode with this macro.
Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

SaveImage
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.1.1
Valid Inputs — Text, Value
Saves an image file (same as AutoSave: View Capture). The OverrideText field is used
to specify the name of the file. If the Override Value is set to zero, the filename will be
used as is. Otherwise, the filename will be used as the base filename, and additional
values will be concatenated onto the name in the same way that AutoSave works.
See AutoSave window in the File menu section of VERICUT Help for more information.

SaveIP
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.1.1
Valid Inputs — Text, Value
Saves an IP file. The OverrideText field is used to specify the name of the file. If the
Override Value is set to zero, the filename will be used as is. Otherwise, the filename will
be used as the base filename, and additional values will be concatenated onto the name in
the same way that AutoSave works.
See AutoSave window in the File menu section of VERICUT Help for more information.

SaveUnits
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Saves the current Units settings.
Also see: RestoreUnits.

SaveVcSolid
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.1.1
Valid Inputs — Text, Value
Saves a VERICUT Solid (VCT) file. The Override Text field is used to specify the name
of the file. If Override Value is set to zero, the filename will be used as is. Otherwise, the
filename will be used as the base filename, and additional values will be concatenated
onto the name in the same way that AutoSave works.
See AutoSave window in the File menu section of VERICUT Help for more information.

SecondaryRefWorkCoord
Function — WORK OFFSETS
Status — OBSOLETE
Comments — See DynamicWorkOffsets
Valid Inputs — Text, Value
This macro is identical to SecondaryWorkCoord, except it interprets all rotary angles as a
reference position from which the offset was measured. The Register value is set by the
WorkCoordIndex macro, and the Sub-Register value is set by the TableSubRegisterValue
macro. Outputs an error message if the corresponding table entry does not exist, and
"ERROR" is specified as the Text value.

SecondaryWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
This macro is identical to AdditionalWorkCoord, except it establishes a secondary work
offset which is added to the existing work offset (e.g. G54-G59). Both of these macros
reference the same Work Offsets table (ref. Work Offsets table in the Tables for
Processing G-Codes section, in the CGTech Help Library). The Register value is set by
the WorkCoordIndex macro, and the Sub-Register value is set by the
TableSubRegisterValue macro. These macros must be called prior to calling the
AdditionalWorkCoord macro. Outputs an error message if the corresponding table entry
does not exist, and "ERROR" is specified as the Text value.

Sequence
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
During pass 1, updates the sequence table and sets the current sequence number.

SequenceEnd
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Specifies the ending sequence number within a sequence loop.
SequenceLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — None
Executes the sequence loop based on previously set parameters. If the loop count was not
specified, 1 is assumed. If the ending sequence number was not specified, the starting
sequence number is assumed.

SequenceLoopCount
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Specifies the number of times to execute the sequence loop.

SequenceOrSubroutine
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Determines whether the current input is a sequence number, or a subroutine name. At the
time the macro is called, if it is currently within a program or subroutine, it will be
interpreted as a "sequence number", and the Sequence macro called. Otherwise, it will be
interpreted as a "subroutine name" and the SubroutineSequence macro will be called.

Example:

O100
.
.
.
N10
.
.
M99
N20

O: Defines the beginning of subroutine 100


N10: Defines Sequence 10
M99: Defines the end of subroutine 100
N20: Defines the beginning of subroutine 20
NOTE: The defining of the start and ending of subroutines, and the sequence numbers
that exists for a given subroutine, occurs during the scan pass.
SequenceStart
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Specifies the starting sequence number within a sequence loop.

SequenceStartEnd
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Text, Value
Defines the start and ending sequence number within a sequence loop. This macro is
called twice within a block. On each call, either the start or ending sequence number is
passed. The starting sequence number is defined to be the lower of the two numbers.
If Override Text = Order, the sequence start and end are entered exactly in the specified
order. For example, if "Order" is input, and the macro is called on G77, then "G77 N100
N50" will set sequence start at N100 and sequence end at N50.

SetAbsWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — None
Similar to SetAdditionalWorkCoord, except the offsets are always interpreted as absolute
values (not incremental). The Register value is set by the WorkCoordIndex macro, and
the Sub-Register value is set by the TableSubRegisterValue macro.

SetActiveSpindleName
Function — FEEDS & SPEEDS
Status — ALTERNATE
Comment — Use SetActiveStockName
Valid Inputs — Text
Text = spindle name
Specifies the active spindle component for the current subsystem. The spindle name is
specified by the text argument. This macro is typically used to change where material
removal occurs when simulating pick-off spindle operations. Specifically, this macro has
2 main functions:
1. When in turning mode, it is used to define the point of rotation. This is important
when in Constant Surface Speed (CSS) mode.
2. It defines the active stock component. The stock that is a child of the active
spindle component becomes the active stock component. This setting is critical
for a number of different calculations within VERICUT.
NOTE: If not specified, the active spindle will default to the parent Spindle, or Rotary,
of the active stock component. If the active stock component is not specified, the active
stock will default to the first stock component in the component tree.

SetActiveStockName
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text
Text = stock name
Use to specify the active stock component for the current subsystem. The stock name is
specified by the text value. This macro is typically used to change where material
removal occurs when simulating pick-off spindle operations. Specifically, this macro has
2 main functions:
1. When in turning mode, it is used to define the point of rotation. The point of
rotation is the parent spindle axis. This is important when in Constant Surface
Speed (CSS) mode.
2. It defines the active stock component. This setting is critical for a number of
different calculations within VERICUT.
NOTES:
1. The calling of this macro is only necessary for SYNC type jobs or jobs with
multiple Stock components.
2. This macro is functionally identical to SetActiveSpindleName. Its main purpose is
to specify whether you are working on the stock (spindle) or the sub-stock (pick-
off spindle). To avoid confusion with ActiveSpindleCompName (which has a
similar name but a totally different functionality), it is recommended that you use
SetActiveStockName rather than SetActiveSpindleName. The difference
between these 2 macros is that SetActiveStockName is passed the name of the
stock component, and SetActiveSpindleName is passed the name of the Stock's
spindle component.

SetAdditionalWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — None
This macro is used to set entries in the Base Work Offsets and Work Offsets tables (ref.
Base work Offsets table and Work Offsets table in the Tables for Processing G-Codes
section, in the CGTech Help Library) automatically from the NC program file when a
G10L2 command is read. The Register value is set by the WorkCoordIndex macro, and
the Sub-Register value is set by the TableSubRegisterValue macro.
If the table was defined by entering the values representing the offset in the Values
(XYZABCUVWACB): text field:
The corresponding entries in the table are then updated based on the specified XYZ
values in the NC program file. If an XYZ value is not specified, the corresponding
entry is not updated.
If the table is defined based on a "relational" offset between a "from" point and a "to"
point:
The corresponding offset (for example: Register 54) will be kept as relational and a
offset added so that the total offset matches what is being specified in the NC
program file.
For example:
Register 54 in the Work Offset table is set to: "From: Tool To: Stock" (which
equates to X0 Y0 Z-20).
In the NC Program we read:
G10L2P1 X0 Y10 Z-19
This line tells us to set the Register 54 offset in the Work Offset table to: (X0
Y10 Z-19)
Since this Register already exists in the Work Offset table, and it is defined as
relational, we will now update the additional offset for this entry so that the total
offset is equal to the specified offset (X0 Y10 Z-19).
The Register 54 entry in the Work Offset Table is updated to: Tool To: Stock,
Offset= X0 Y10 Z1
Also see: SetAbsWorkCoord, SetAdditionalWorkCoordNonModal and
SetIncWorkCoord

SetAdditionalWorkCoordNonModal
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — None
This macro is identical to SetAdditionalWorkCoord except that all offset values are non-
modal. Any axis offset value not specified on the current block will be set to zero. The
Register value is set by the WorkCoordIndex macro, and the Sub-Register value is set by
the TableSubRegisterValue macro.
SetAxisCompLink
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
CLEARALL = deletes all linkages established for all axes
CANCEL = deletes the linkage specified by the specified axis and component
name
ADD = Adds a new linkage based on the specified axis, component name,
and formula.
Establishes a "link" which allows the axis specified by LinkAxisId to drive the
component specified with LinkCompName, using the formula specified by LinkFormula.
For situations where an "offset" is applied to driving axis, use the LinkOffset macro to
specify how the offset is to be applied to the driven component. The text value
determines the action that occurs.
If a "linkage" exists for a given axis, the specified actions will override the default
actions.
NOTE: When a link is added, it will update it's local axis position with the position of
the component that it is now driving. This logic does not take into account any rotation
matrices that might be applied.
Also see: "Notes about link macros" in the Notes about Special Topics section, in the
CGTech Help Library.

SetAxisRegisterName
Function — MISCELLANEOUS
Status — NOT RECOMMENDED
Comment — Added V6.0.
Use SetAxisCompLink.
Valid Inputs — Text, Value
Enables you to switch which "Register" is associated with a particular axis (X, Y, Z, A,
B, C, U, V, W, ...). It is passed in an axis value to change (1-12), and a text value with
the new register name.
For example: to have X drive the U register, and U drive nothing, the following calls
would be made.
SetAxisRegisterName Override Value = 1, Override Text = U
SetAxisRegisterName Override Value = 7, Override Text = XXX
SetBaseWorkOffset
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — None
Sets a base offset and cancels any shift or work coordinate offsets. The base offset is
retrieved from the Base Work Offset table (ref. Base Work Offset table in the Tables for
Processing G-Codes section, in the CGTech Help Library).

SetCircle360Tolearance
Function — CIRCLES
Status — RENAMED
Comment — Renamed to: SetCircle360Tolerance

SetCircle360Tolerance
Function — CIRCLES
Status — ACTIVE
Valid Inputs — Value
This macro is used to set a tolerance that is used to determine whether a small arc, or a
360 degree arc, is processed. If the X, Y, and Z start and finish positions are all within
this tolerance, the arc will be interpreted as a 360 degree arc.
NOTE: This value is typically used when problems occur with cutter compensation.

SetComponentColor
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
text value = component name
numeric value = number associated with the color in the Shade Color list
Sets the component specified in the Override Text field, to the color specified in the
Override Value field. The color is specified using the number associated with the color in
the Shade Color list (ref. to Color window: Define tab in the VERICUT Help section, in
the CGTech Help Library).
SetComponentVisibility
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Text = component name
Value:
0 = Blank
1 = Workpiece
2 = Machine
3 = Both
Enables you to "temporarily" change a component's visibility status by commands in the
NC program. The visibility status that is set will be temporary, and will be reset to the
initial values when a "reset" or "rewind" is executed.
NOTE: A "reset" is executed as part of loading a new project file.
The initial values are defined as the values that are either read in from the
project/machine file, or were set using the "Visibility" feature on the Project Tree,
Configure Component Menu (ref. Configure Component menu, Component tab
in the Project Tee section of VERICUT Help). When the machine file is saved, only the
initial value will be saved.
NOTE: This macro does not support setting the visibility of "Tool" or "Stock"
components.

SetCutColor
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
Value = index into the "Shade Color list" on Colors window: Define tab
Sets the color for current tool and overrides the active cut color. Input the index into the
"Shade Color list" on Colors window: Define tab (ref. Color window: Define tab, in the
VERICUT Help section, in the CGTech Help Library) that corresponds to the desired
color.
Using this macro is equivalent to using the PPRINT/VERICUT-CUTCOLOR statement
(ref. VERICUT-CUTCOLOR Record, in the Automating VERICUT section, in the
CGTech Help Library) .
Also see: ResetCutColor and RepaintCutColor
SetCutterCompVar
Function — CUTTER COMPENSATION
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Text
Text = variable or register to write to
This macro provides the ability to write the active cutter compensation value to a
specified variable or register (text value).
Example:
ToolCutterComp
SetCutterCompVar
Override Text = {2400 + $}
After
The following diagram illustrates the terms and values that are used by the Drill Cycle
macros below:

SetCycleDepth
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text, Value
The "Value" specifies the location of the Depth (refer to the diagram above).
The "Override Text" specifies how the "Value" is to be interpreted.
Options are:
0 = Absolute
1 = Incremental from Initial point
2 = Incremental from Rapid Level
3 = Incremental from PartSurface
5 = Incremental from Retract Level
6 = Same as Axis position (if used, all 3 (XYZ) axis values should be
specified on the block)
7 = ZW Tracking – Absolute (With this option, the input value will be
converted based on ZW tracking logic, and then the cycle option type will be
switched to Absolute.)
This macro is used when defining a drill cycle, and it specifies the Depth. For example:
If drilling in the XY plane, it will specify the Z location of the Depth.
This macro is part of a new set of drill cycle macros introduced in V6.2. They are
currently considered "experimental" and are intended to be used to evaluate a new, and
simplified, method for defining drill cycles. To activate the new cycle logic, the
NewCycleLogic macro must be called with a value of 1.
NOTE: The old drill cycle method and the new drill cycle method should not be used
in the same control. When NewCycleLogic is set to "old logic", all of the new logic
macros will be ignored. When NewCycleLogic is set to "new logic", all of the old logic
macros, flags and settings are ignored.
See also: SetCyclePartSurface, SetCycleRapidLevel, and SetCycleRetractLevel
See "Notes about New Drill Cycle Logic" in the Notes about Special Topics section, in
the CGTech Help Library, for additional information.

SetCycleFeedrate
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
This macro sets the feedrate which is used during a drill cycle while moving from the
Rapid plane to the final Depth level. This Feedrate is independent of the normal feedrate
used when not executing a drill cycle. The default value is zero, which means to use the
normal feedrate. This value is modal. This means, it might need to be reset to zero when
the drill cycle is defined (G81, G82, …).
SetCycleFeedrate2
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
Sets the secondary feedrate which is used during specific drill cycles while moving from
the Final Depth level back to the Rapid plane. This Feedrate is independent of the normal
feedrate used when not executing a drill cycle. The default value is zero, which means to
use the main cycle feedrate (See SetCycleFeedrate). This value is modal. This means, it
might need to be reset to zero when the drill cycle is defined (G81, G82, …).
NOTE: This feedrate only applies to BORE, BORE DRAG, and TAP cycles.

SetCyclePartSurface
Function — DRILL CYCLES
Status — ACTIVE
Comments — Added V6.2
Valid Inputs — Text, Value
The "Value" specifies the location of the PartSurface (refer to the diagram
above).
The "Override Text" specifies how the Value is to be interpreted.
Options are:
0 = Absolute
1 = Incremental from Initial point
2 = Incremental from Rapid Level
4 = Incremental from Depth
5 = Incremental from Retract Level
6 = Same as Axis position (if used, all 3 (XYZ) axis values should be
specified on the block)
This macro is used when defining a drill cycle, and it specifies the Part Surface. For
example: If drilling in the XY plane, it will specify the Z location of the Part Surface.
This macro is part of a new set of drill cycle macros introduced in V6.2. They are
currently considered "experimental" and are intended to be used to evaluate a new, and
simplified, method for defining drill cycles. To activate the new cycle logic, the
NewCycleLogic macro must be called with a value of 1.
NOTE: The old drill cycle method and the new drill cycle method should not be used
in the same control. When NewCycleLogic is set to "old logic", all of the new logic
macros will be ignored. When NewCycleLogic is set to "new logic", all of the old logic
macros, flags and settings are ignored.
See also: SetCycleDepth, SetCycleRapidLevel, and SetCycleRetractLevel.
See "Notes about New Drill Cycle Logic" in the Notes about Special Topics section, in
the CGTech Help Library, for additional information.

SetCycleRapidLevel
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text, Value
The "Value" specifies the location of the Rapid Level (refer to the diagram
above).
The "Override Text" specifies how the "Value" is to be interpreted.
Options are:
0 = Absolute
1 = Incremental from Initial point
3 = Incremental from PartSurface
4 = Incremental from Depth
5 = Incremental from Retract Level
6 = Same as Axis position (if used, all 3 (XYZ) axis values should be
specified on the block)
7 = ZW Tracking – Absolute (With this option, the input value will be
converted based on ZW tracking logic, and then the cycle option type will
be switched to Absolute.)
This macro is used when defining a drill cycle, and it specifies the Rapid Level. For
example: If drilling in the XY plane, it will specify the Z location of the Rapid Level.
This macro is part of a new set of drill cycle macros introduced in V6.2. They are
currently considered "experimental" and are intended to be used to evaluate a new, and
simplified, method for defining drill cycles. To activate the new cycle logic, the
NewCycleLogic macro must be called with a value of 1.
NOTE: The old drill cycle method and the new drill cycle method should not be used
in the same control. When NewCycleLogic is set to "old logic", all of the new logic
macros will be ignored. When NewCycleLogic is set to "new logic", all of the old logic
macros, flags and settings are ignored.
See also: SetCycleDepth, SetCyclePartSurface, and SetCycleRetractLevel
See "Notes about New Drill Cycle Logic" in the Notes about Special Topics section, in
the CGTech Help Library, for additional information.
SetCycleRetractLevel
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text, Value
The "Value" specifies the location of the Retract Level (refer to the diagram
above).
The "Override Text" specifies how the "Value" is to be interpreted.
Options are:
0 = Absolute
1 = Incremental from Initial point
2 = Incremental from Rapid Level
3 = Incremental from PartSurface
4 = Incremental from Depth
6 = Same as Axis position (if used, all 3 (XYZ) axis values should be
specified on the block)
7 = ZW Tracking – Absolute (With this option, the input value will be
converted based on ZW tracking logic, and then the cycle option type
will be switched to Absolute.)
This macro is used when defining a drill cycle, and it specifies the Retract Level. For
example: If drilling in the XY plane, it will specify the Z location of the Retract Level.
This macro is part of a new set of drill cycle macros introduced in V6.2. They are
currently considered "experimental" and are intended to be used to evaluate a new, and
simplified, method for defining drill cycles. To activate the new cycle logic, the
NewCycleLogic macro must be called with a value of 1.
NOTE: The old drill cycle method and the new drill cycle method should not be used
in the same control. When NewCycleLogic is set to "old logic", all of the new logic
macros will be ignored. When NewCycleLogic is set to "new logic", all of the old logic
macros, flags and settings are ignored.
See also: SetCycleDepth, SetCyclePartSurface, and SetCycleRapidLevel
See "Notes about New Drill Cycle Logic" in the Notes about Special Topics section, in
the CGTech Help Library, for additional information.
SetCycleSquareOffType
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
0 = moves the tool as described below (Default)
1 = always move within the plane first, then move along the tool axis to the new
positioning point.
2 = move to the new positioning point, without any square off logic.
Controls how the tool is positioned for a canned cycle operation (e.g. G81-89). By
default, VERICUT uses "squared off" motion to position for a canned cycle. Squared off
motion behaves differently, depending on if the positioning point for the canned cycle is
higher or lower relative to the current tool position:
Positioning point lower than current position — Tool moves within the plane, then
drops along the tool axis to the new positioning point.
Positioning point higher than current position — Tool retracts first, then moves
within the plane to the new positioning point.
A value of "0" (default) moves the tool as described above.
Calling this macro with an Override Value of "1" forces VERICUT to always move the
tool within the plane first, then moving the tool up or down along the tool axis to the new
positioning point.
Calling this macro with an Override Value of "2" forces VERICUT to move directly to
the specified XYZ position without using any square off logic.

SetCycleTapFeedMode
Function — DRILL CYCLES
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — Value
0 = set the cycle tap feed mode to FPM
1 = set the cycle tap feed mode to FPR
2 = use the current feed mode (Default)
This macro sets the feed mode (FPM or FPR) which is used during a drill Tap cycle
while moving from the Rapid plane to the final Depth level and back. This feed mode is
independent of the normal feed mode.
The default value is two, which means to use the current feed mode. A value of 0 means
to set the cycle tap feed mode to FPM, and a value of 1 sets the cycle tap feed mode to
FPR. This value is modal.
SetDynamicVars
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Text
Use to configure VERICUT for setting Dynamic variables based on internally calculated
values. The macro should be called with the "Start of Processing" event, and will
typically be called multiple times with different arguments. This macro establishes the
values that should automatically update variables during processing. The macro is passed
a series of arguments in the Override Text field. The first argument defines the Dynamic
variable you are interested in (see below). The remaining arguments depend on the first
argument. (Values are only printed for subsystem 1.)
Dynamic variable types:
AxisLocalPlus # # # # # # # # # — These switches are used to set the variables
associated with the axis positions in a "local" coordinate space. This option is similar
to AxisMachineMinus, except they begin with the G-Code tool path input values,
then add on offsets. Note that turning all switches on is NOT the same as
AxisMachineMinus with all switches set to "0". Rotated planes, cutter
compensation, and other special commands are only being applied to the machine
axis values. With all switches set to "0", the values will be equal to the G-Code tool
path input except when in incremental mode, G68/69 rotations in affect, or mirroring
is active.
The switches are the same as described below for AxisMachineMinus. Unused axes
to the right do not need to be specified. Unused axis in the middle should be specified
with a "-1". The switches default to 0. Trailing zeros do not need to be specified. The
field must contains at least one 0/1 character.
Examples:
1. Print the local axes for a 4-axis machine with a B rotary:
Override Text value = AxisLocalPlus 0 1000 1001 1002 -1 1004
2. Print the local axes plus the gage offset for a 4-axis machine with a B
rotary:
Override Text value = AxisMachineMinus 1 1000 1001 1002 -1 1004

AxisMachineMinus # # # # # # # # # — These switches are used to set the variables


associated with the axis positions in a "machine" coordinate space. These values
begin with absolute machine axis location values, and then you can turn off individual
offsets to have them subtracted from the stored machine position. Set the switch to
"1" if you want it subtracted, and "0" if you do not want it subtracted. With all
switches set to "0", the machine axis positions will match the machine axis position
fields seen on the Status window.
The available switches from left to right are:
1. Gage Offset – The gage offset (if it is applied).
NOTE: This is the non-adjusted (non-rotated) gage offset.
2. Tool Offset – The Adjusted Total for the Tool offsets. This includes Gage
Offset, Tool Nose Offset, Tool Length Comp, Turret Offset, and the Gage
Pivot Offset. See also the Tool/Adjusted Total field on the Machine Offsets
window.
3. Work Offset – The non-adjusted Work Offset
4. Shift Offsets – The non-adjusted sum of all shift offsets
5. 3D Tool Offset – The 3D tool offset. See also: Tool3dOffset macro.
6. Input Program Zero – The old (special) form of Program Zero
7. Input Machine Zero – The Machine Zero offset
8. Program Zero – The adjusted Program Zero offset (See Dynamic Work
Offsets).
9. 3D Tool Length Comp – See the FanucToolLengthComp macro
Unused axes to the right do not need to be specified. Unused axis in the middle
should be specified with a "-1". The switches default to 0. Trailing zeros do not need
to be specified. The field must contains at least one 0/1 character.
Examples:
1. Print the machine's axes for a 4-axis machine with a B rotary:
Override Text value = AxisMachineMinus 0 1000 1001 1002 -1 1004
2. Print the machine's axes minus the Input Program Zero values for a 4-axis
machine with a B rotary:
Override Text value = AxisMachineMinus 000001 1000 1001 1002 -1
1004

CurCDC # — The current cutter comp value will be set in the specified variable
number.
Example: Override Text value = CurCDC 7000

CurGageOffset # # # — The current X, Y, Z gage offset values, as read from either


the Gage Offset table (ref. Gage Offsets table in the Tables for Processing G-Codes
section, in the CGTech Help Library) or the Tool Library file (ref. Tool Library file
in the VERICUT Help section, in the CGTech Help Library), and will be set in the 3
specified variable numbers.
Example: Override Text value = CurGageOffset 7000 7001 7002

CurStackLevel # — The stack level of the subroutine currently being read will be
set in the specified variable enabling you to track the stack level of the subroutines
for the NC program being executed..
Example: Override Text Value = CurStackLevel $P_STACK
$P_STACK is the the variable used for the current stack level for the
Siemens 840d controller.
Main program : $P_STACK=0
1st level subprogram : $P_STACK=1
2nd level subprogram : $P_STACK=2

CurSubName # — The current name of the program, or subprogram, being


processed will be set in the specified variable. If this variable did not exist, it will be
created with type = TEXT, and a description of "Subroutine Name". If the
corresponding variable was predefined as type "Number", then the number
equivalency of the subroutine name will be stored in the variable. For example,
"0100" will be converted to 100, and "ABC100" will be converted to zero.
Example: Override Text Value = CurSubName 9000

CurTime # — The current time (cycle time) will be placed in the specified variable.
This time is the total time since the last reset.
Example: Override Text value = CurTime 3001
NOTE: The status window displays the total time for the current NC program.

CurTLCMP # — The current tool length comp value will be set in the specified
variable number. This value includes the special "Input Program Zero" logic for when
the programming method is set to "Tool Length Compensation".
Example: Override Text value = CurTLCMP 7000

CurTool # — The current tool number will be set in the specified variable number.
The tool number will be as defined before any tool indirection, such as can occur
when a Tool List is in use.
Example: Override Text value = CurTool 7000

CurToolAlpha # — The current tool ID will be set in the specified variable number.
This option is similar to CurTool#, described above, except that it supports tool IDs
that are a string instead of a number. The tool ID will be as defined before any tool
indirection, such as can occur when a Tool List is in use.
Example: Override Text value = CurToolAlpha 7000

CurToolCornerRadius # — This feature will get the minimum radius defined for
the current tool. This means:
• The corner radius for a bull end mill.
• The ball radius for a ball end mill.
• The corner radius for an insert.
• The tool radius for a drill.
• The minimum radius for a profile with multiple radii.

CurToolDiam # — The current tool’s diameter will be set in the specified variable
number. If the current tool is a turning tool, 2 * the corner radius will be set in the
specified variable.
Example: Override Text value = CurToolDiam 7000

CurToolFluteLength # — The current tool’s flute length will be set in the specified
variable number.
Example: Override Text value = CurToolFluteLength 7000

CurToolOffset # # # # # # # # # — The sum of all tool offsets (Gage Offset, Tool


Nose, Tool Length Comp, Turret, Pivot, RTCP, etc.) will be used to set the
corresponding registers. The register numbers correspond to XYZABCUVW. Note
that this command does not cause the gage offset to be applied to XYW; it just
specifies the variables that should be set for the tool offsets. Unused axes to the right
do not need to be specified as shown in example 1. Unused axes in the middle should
be represented by a "-1" as shown in example 2.
Examples:
1. Tool offsets applied to the XYZ axes:
Override Text value = CurToolOffset 3001 3002 3003
2. Tool offsets applied to the XYW axes:
Override Text value = CurToolOffset 3001 3002 -1 -1 -1 -1 -1 -1 3003

CurToolRadius # — The current tool radius will be set in the specified variable
number. If the current tool is a turning tool, the corner radius will be set in the
specified variable.
Example: Override Text value = CurToolRadius 7000

CurToolSUBType # — The current tool SUB type will be set in the specified
variable number. This dynamic variable type is applicable for milling tools only.
The tool type will be set to:
0 = Undefined
1 = Flat Bottom End Mill
2 = Ball Nose End Mill
3 = Bull Nose End Mill
4 = Drill
5 = 7 Parameter
6 = 10 Parameter
7 = Revolved Profile
8 = Reference
Example: Override Text value = CurToolSUBType 7000

CurToolType # — The current tool type will be set in the specified variable number.
The tool type will be set to:
1 = milling tools
2 = turning tools
3 = probe
Example: Override Text value = CurToolType 7000

MachineTravelLimits — This dynamic variable enables you to read the minimum


and maximum travel limit values for the specified machine component directly from
table on the Machine Setting window: Travel Limits tab. See Machine Settings
window: Travel Limits tab in the Configuration menu section of VERICUT Help for
additional information.

Syntax:
MachineTravelLimits Component_name Min_value_varname Max_value_varname
where:
Component_name is the name of the machine component.
Min_value_varname is the name of the variable to receive the minimum
travel limit value.
Max_value_varname is the name of the variable to receive the maximum
travel limit value
Examples:
Override Text value = MachineTravelLimits B B_MIN B_MAX
Override Text value = MachineTravelLimits C C_MIN C_MAX
Override Text value = MachineTravelLimits X X_MIN X_MAX
Also see: "Notes about system variables" in the Notes about Special Topics section, in
the CGTech Help Library.
SetErrorStatusVar
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Text = variable name
This macro enables storing the most recent error, or warning, status in any assigned
system variable. Enter the the variable name in the Override Text field. The variable
type must be set to number. A status value of 1 is assigned to the variable when an error
is detected, and a status value of 2 is assigned for any warning. The variable is not reset
automatically. It can be reset at the start/end of block or in the NC program.

SetGageOffset
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use GageOffsetDrivenPoint
Valid Inputs — Value
Sets the Gage Offset based on the Gage Offset table (ref. Gage Offset table in the Tables
for Processing G-Codes section, in the CGTech Help Library) and the specified index
value. If the entry does not exist, and the index value is zero, the Gage Offset is set to
zero. If neither of these conditions is true, the Gage Offset is picked up from the Tool
Library file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help
Library), referencing the active tool.
NOTE: It is not necessary to call ToolOffsetAptAdj when using this macro.

SetGageOffsetSubValue
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use GageOffsetDrivenPoint
Valid Inputs — Value
Sets the Gage Offset based on the Gage Offset table (ref. Gage Offset table in the Tables
for Processing G-Codes section, in the CGTech Help Library), the current tool number
and the specified SubValue (SubRegister). If the entry does not exist, and the SubValue
is zero, The Gage Offset is set to zero. If neither of these is true, it picks up the Gage
Offset from the Tool Library file (ref. Tool Library file in the VERICUT Help section, in
the CGTech Help Library), referencing the active tool.
NOTES:
1. It is not necessary to call ToolOffsetAptAdj when using this macro.
2. The current tool number refers to the tool number that is specified in the G-Code
NC program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the
Tool Library file (ref. Tool Library file in the VERICUT Help section, in the
CGTech Help Library), which is a string.

SetGageOffsetVar
Function — MISC
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Text
This macro sets the specified variable (text value) to the current z value of the gage offset
(gage point - driven point).
With a Fanuc control, this macro is called with the H word after GageOffsetDrivenPoint
(which sets the gage point and the driven point based on the TLS file), and called with an
Override Text of: {2000 + $}

SetIncWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — None
Similar to SetAdditionalWorkCoord, except the offsets are always interpreted as
incremental values (not absolute). The Register value is set by the WorkCoordIndex
macro, and the Sub-Register value is set by the TableSubRegisterValue macro.

SetLocalVarAccessType
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
0 - Local variables are accessible in the subroutine where defined and in all
subsequent lower level calls (default)
1 – Local variables are only accessible in the subroutine where defined.
This macro enables you to control the access of local variable values defined in the main
program and/or in a subroutine. By default, (value = 0), variable values defined in the
main program, or in a subroutine are accessible in the program or subroutine where they
were defined as well as in all subsequent lower level calls.
Some controls do not use conventional handling of global and local variables. The
Okuma OSP control, for example, limits the usage of local variables and subroutine local
parameters to the subroutine in which they were defined. When the
SetLocalVarAccessType macro is called with value = 1 the use of local variable values
are limited to the subroutine where variable is defined and are not passed into subsequent
lower level calls from within the original subroutine.
To use this option correctly all local variables used in a setup should be defined in the
Word Format table as Special sub type "Local Variable". Any other variables specified as
Special sub type "Variable Name" or "Variable Tag" are created and applied as global, or
subsystem, variables. If a variable name is not specified in the Word Format table, and is
defined in the main program or a subroutine, it is applied as a global variable. If a
variable is not initialized, its value is either 0, or undefined.
See also: NCVarDefaultValue

SetLocalVariableCount
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Value

Sets the number of local variables that are defined within a "MACRO" subroutine. The
default is 34 (0-33).

SetMatchingGageOffset
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use GageOffsetDrivenPoint
Valid Inputs — Value
This macro is identical to SetGageOffset, except that if the specified value is non-zero,
and it does not exist in the Gage Offset table (ref. Gage Offset table in the Tables for
Processing G-Codes section, in the CGTech Help Library), and it does not match the
current tool, then an error message will be produced, and the offset will default to (0,0,0).

SetMathOperatorPriority
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0.2
Valid Inputs — Text, Value
This macro sets the priority for a specific math operator (or group of operators). This is
used to control the order of precedence. Operators with lower priority numbers, will have
the higher precedence, and will be executed first.
For example:
The default priority for "MULTIPLY" is 2, and for "ADD" is 3.
The equation: 2 + 3 * 4
Is therefore evaluated as: 2 + (3 * 4)
The following are the default priorities for the operators:
POWER = 1;
MULTIPLY = 2;
DIVIDE = 2;
MOD = 2;
ADD = 3;
SUBTRACT = 3;
EQ = 4;
NE = 4;
GT = 4;
GE = 4;
LT = 4;
LE = 4;
BITWISE_AND = 5;
BITWISE_XOR = 6;
BITWISE_OR = 7;
AND = 8;
OR = 9;
NOTE: If Order of Math Operations is set to Left to Right (ref. Control Settings
window: General tab in the VERICUT Help section, in the CGTech Help Library), all
priorities will be set to 5).
In addition to the above operators, the following groups are supported:
MATH (POWER, MULTIPLY, DIVIDE, MOD, ADD, SUBTRACT)
CONDITIONALS (EQ, NE, GT, GE, LT, LE)
LOGICALS (AND, OR, BITWISE_AND, BITWISE_OR, BITWISE_XOR)
Example:
To use the standard rules of precedence except have all logical operators come before all
the conditionals, make the following calls during the reset event:
SetMathOperatorPriority OV=4 OT=LOGICALS
SetMathOperatorPriority OV=5 OT=CONDITIONALS

SetMaxMotionDistance
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
This macro allows you to automatically break up long moves in order to get better
performance (specifically, but not limited to, collision performance). Unlike the slow
motion slider, this setting is independent of the number of redraws. Any motion that is
larger then the specified distance will be broken up into a series of motions of the
specified size. The default is zero, which means to process the original motion as a single
motion.
Typically, this macro does not need to be called. For a specific application, if long
motions are causing significant slow downs, this macro can be used to try to improve the
performance. The setting of the max motion distance is dependent on the specific
application. This macro would typically be called during "Start of Processing" events.

SetMaxSubsystemVar
Function — VARIABLES
Status — OBSOLETE
Comment — Obsolete as of V7.0
Valid Inputs — Value
Use to set the "Maximum" value of a NC variable that is subsystem specific.
NOTES:
1. If a variable is higher than the max, it will be referenced as global, and not
specific to a subsystem.
2. You can define both a "Minimum" and a "Maximum" value by also using
SetMinSubsystemVar.

SetMinCollisionBreakDown
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1.3
Valid Inputs — Value
This macro is used to specify a minimum length of motion. Any motions longer than the
minimum length will be broken down into multiple sections. By default, this value is set
to 5 in. or 125 mm. This macro is units sensitive.
Example:
If you set this value to be 4 inches, any motion that is longer than 4 inches in two, or
more, directions will be broken down into sections of "length of motion/4 inches".

SetMinSubsystemVar
Function — VARIABLES
Status — OBSOLETE
Comment — Obsolete as of V7.0
Valid Inputs — Value
Use to set the "Minimum" value of a NC variable that is subsystem specific. The default
is -1, which means that there is no minimum value.
NOTE: You can define both a "Minimum" and a "Maximum" value by also using
SetMaxSubsystemVar.
SetMotionFlag
Function — MOTION
Status — SPECIAL
Valid Inputs — None
This macro sets a flag saying that there is motion on the block. Typically, this macro
never needs to be called. This flag will automatically be set if a macro is called which
causes motion. An example of where this macro would need to be called is:
G81 R1=.1 R2=.2
A cycle command is being issued, but no XYZ command is being specified. Typically,
G81 is interpreted as "Cycle on Motion". If no motion is specified, then a cycle is not
executed. If the cycle is to be executed on this block, then the SetMotionFlag macro
could be called with the G81 to process the block as a motion block.

SetMultiPointCount
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
This macro is used to define the maximum number of points to process in one motion
block. Use the Override Value field to specify the number of points. For example, for a
Heidenhain Mill Plus control use a value of 4.
NOTES:
1. This macro is only applicable to the new drill cycle method. See "Notes about
New Drill Cycle Logic" in the Notes about Special Topics section, in the CGTech
Help Library, for additional information.
2. Polar point definition and parameterized point are not supported in current logic.

SetPivotOffset
Function — TOOL OFFSETS
Status — ALTERNATE
Comment — This macro is associated with the old style RTCP
Valid Inputs — Value
Sets the pivot offset for a tool component connected to a rotary component. This macro
should be passed the index into the RTCP Pivot Offset table (ref. RTCP Pivot Offset
table in the Tables for Processing G-Codes section, in the CGTech Help Library).
If the entry in the table does not exist, the system automatically calculates the Z offset
value using the distance from the Tool component to the pivot point of the rotary axis to
which the Tool component is connected (X and Y offsets set to 0). If the tool axis and the
rotary axis are collinear, then the RTCP Pivot Offset will be set to the difference between
the Tool and the Rotary component origins.
NOTE: If a spindle changer is being used for a job in Tool Tip mode and using RTCP,
then the RTCP Pivot Offset table needs to be set whenever a new spindle is attached.

SetPolarAngle
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is used to set the angle coordinate value when in polar coordinate input mode.
This macro should be called for the input word which is used to program the angle
coordinate in polar coordinate input mode. When the angle is programmed in absolute
input mode, its value represents an angle from the first axis to the radius of the
programmed point. In incremental input mode, the angle is measured from the current
point radius to the programmed point radius (i.e. the line between current point and
programmed point).
See also: SetPolarRadius

SetPolarInput
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = specifies Cartesian coordinate input
1 = specifies polar coordinate input
This macro is used to set the state to POLAR COORDINATES input. For example, for a
Fanuc control it should be called when G16 is programmed. The polar coordinates are
internally converted by VERICUT into Cartesian coordinates and are shown in Status
window as X,Y,Z values. If the Override Value is set to 0, polar coordinate input is
turned off (G15 for Fanuc control).
See also: SetPolarRadius and SetPolarAngle

SetPolarRadius
Function — MOTION
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is used to set the radius coordinate value when in polar coordinate input
mode. This macro should be called for the input word which is used to program the
radius coordinate in polar coordinate input mode. When the radius in programmed in
absolute input mode, its value represents a distance from local origin (0,0) to the
programmed point in the current machining plane. For incremental input mode, radius
represents a distance from the current position to the programmed position.
See also: SetPolarAngle

SetPostSubName
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1.1
Valid Inputs — Text
text = subroutine name
This macro identifies a post-processor subroutine by its name. Use the Override Text
field to specify the subroutine name. If the specific subroutine is not available in the post-
processor an error message is issued and any subsequent attempts to set parameters for
the subroutine will fail. The use of this macro is not critical since the
SetPostSubParameter and the SetPostSubTextParameter macros are used to set
parameters for post processor subroutines and will also verify whether the subroutine is
available.
See also: SetPostSubParameter and SetPostSubTextParameter
For more information about post-processor subroutines, See CGTech Post-Processor
Help in the VERICUT Development Tools section of the CGTech Help Library.

SetPostSubParameter
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text, Value
Text = psub_name pvar_name <ncvar_name>
Value = an optional numeric value to be stored in the Post Processor variable
specified by the pvar_name argument
This macro is used to set a numeric variable in the Post Processor and then calls the
specified Post Processor subroutine. This macro can be called multiple times to set
different Post Processor numeric variables for the same Post Processor subroutine,
however, the subroutine is called only once at the end of block.
The psub_name argument represents the name of the Post Processor subroutine to be
called. The pvar_name argument represents the name the Post Processor variable that is
to be used to store the numeric value.
The ncvar_name argument is optional and represents the name of an NC variable
containing the value. When the ncvar_name argument is specified, the VERICUT NC
variable value is used. When the ncvar_name argument is not specified, the Override
Value is applied. The ncvar_name argument can refer to a simple variable, an element of
an array, or a Frame. The value of ncvar_name must be a numeric value.
The Override Value is only used when the ncvar_name argument is not specified. The
numeric value specified using the Override Value will be stored in the Post Processor
variable specified by pvar_name.
See the SetPostSubTextParameter macro for information on setting text (string) variables.
See CGTech Post Processor, in the CGTech Help Library, for more information about
Post Processor subroutines and variables.

SetPostSubTextParameter
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = psub_name pvar_name string_val
This macro is used to set a text variable in the Post Processor and then calls the specified
Post Processor subroutine. This macro can be called multiple times to set different Post
Processor text variables for the same Post Processor subroutine, however, the subroutine
is called only once at the end of block.
The Override Text field is used to input the arguments for the macro. The arguments and
their order are shown in the example below. Note that the arguments are separated by
spaces.
Override Text = psub_name pvar_name string_val
The psub_name argument represents the name of the Post Processor subroutine to be
called. The pvar_name argument represents the name of the Post Processor variable to be
used to store the string specified by the string_val argument. The string_val argument
represents the text string that will be stored in the specified Post Processor variable.
The string_val argument can be used in two different ways. When the string_val
argument is entered within quotation marks, "string_val", the text string between the
quotation marks is stored directly in the specified Post Processor variable. If the
string_val argument is not entered within quotation marks, it represents the name of an
NC variable where a text string is located. The text string contained in the NC variable
will be copied to the Post Processor variable. The specified NC variable can contain a
simple text string or an element of a string array.
See the SetPostSubParameter macro for information on setting numerical Post Processor
variables.
See CGTech Post Processor, in the CGTech Help Library, for more information about
Post Processor subroutines and variables.
SetPostTapeTows
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text, Value
Text = psub_name pvar_name
Value
0 = direct bits order (the most right bit is bit 0)
1 = inversed bits order (the most left bit is bit 0)
This macro is used for the tape placement feature in VERICUT Composite Simulation. It
sets the Tows binary string in the Post Processor and calls the specified Post Processor
subroutine at the end of block. The VERICUT Composite Programming internal variable
with current bit mask corresponding to the active tows is used as input.
The Override Text field is used to enter the psub_name argument, which represents the
name of the Post Processor subroutine to be called, and the pvar_name argument, which
represents the name of a Post Processor variable that is to be used to store the string
representing the currently active Tows. Notice that the arguments are separated by
spaces.
The Override Value is used to specify the order of the tows. An Override value of "0"
indicates that "direct bits" order (the most right bit is bit 0) is to be used. An Override
Value of "1" indicates that "inversed bits" order (the most left bit is bit 0) is to be used.
See CGTech Post Processor, in the CGTech Help Library, for more information about
Post Processor subroutines and variables.

SetPostVariables
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1.4
Valid Inputs — None
This macro is used to pass all global "simple" (not arrays or Frames) NC Variables in
VERICUT to the post-processor.

SetPreProcessorType
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
Value: use to specify the type po preprocessor
0 = No preprocessor used (Default)
1 = Preprocessor to parse blocks of Siemens 3T type data.
2 = Preprocessor to parse blocks of MAKA BWO C900 type data.
3 = Preprocessor to parse blocks of Elexa E580 (and E560) data.
4 = Preprocessor to parse blocks of Bosch Rexroth Indramotion MTS data.
Controls what type of preprocessor is required to translate NC code to a more standard
form accepted by VERICUT. Some controls have a very unique NC program syntax and
require special conversion of blocks before processing. This macro is used to select the
specific type of preprocessor to apply.
Value = 0: No preprocessor is used. This is the default.
Value = 1: The Siemens 3T preprocessor translates blocks of Siemens 3T type data into
a more standard form. This preprocessor is specific to the Siemens 3T syntax, and should
not be used with the Siemens 880 or the Siemens 7M controllers. The preprocessor will
be activated after reading a block from the NC program file, and before substitutions.
The following conversions are made by the preprocessor:
R20 200 R30 300 => R20=200 R30=300
R30 R20 => R30=R30+R20
R30-R20 => R30=R30-R20
R30/R20 => R30=R30/R20
R30.R20 => R30=R30*R20
R305 => R30 =5
R30.5 => R30 =.5
Z1.6 R07 => Z1.6+R07
R30 0 R20 => R30=R20
R10 R20.R30 => R10=R10+R20 R20=R20*R30
X1.5 R10 R20 => X1.5+R10 R10=R10+R20
X R10 R20 => X R10 R10=R10+R20
NOTES:
1. OptiPath is not supported with the Sinumerik 3T control.
2. This option replaces the Siemens3PreProcessor macro.
Value = 2: The MAKA BWO C900 preprocessor is used to convert IF statements
specific to this controller. For more details see programming manual BWO CNC 900
chapter 3.
Value = 3: The Elexa E580 (and E560) preprocessor is used to convert conditional
GOTO statements.
Value = 4: The Bosch Rexroth Indramotion MTS preprocessor is used to make the
following substitutions:
GOTO .xxx ==> GOTO_LABEL xxx
GOTO Nnnn ==> GOTO_SEQ nnn
GOTO nnn ==> GOTO_SEQ nnn
GOTO xxx ==> GOTO_LABEL xxx
GoTo Nnnn ==> GOTO_SEQ nnn
GoCond Nnnn ==> GOTO_SEQ nnn
.xxx ==> LABEL_NAME xxx
Also, a ":" on a line with a GOTO will be replaced with a "newline" character.
See also: SyntaxErrorOption

SetProgrammingMethod
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Tool Tip
1 = Gage Length
2 = Tool Length Compensation

Use to set the programming method through the NC program file. This macro should be
passed a numeric value which will determine the programming method.
The new setting will be in effect until the next call to this macro, or until the next reset.
WARNING: The programming method affects how various tool offsets are applied.
Calling this function will not affect the offsets that are already in effect. It will, however,
affect the offsets that next time they are updated (for example, tool change, rotary move
with dynamic offset, call to UpdateRotaryOffsets, call to ToolOffsetUpdate, ...).

SetRobotBaseCsys
Function — MOTION
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = the name of acoordinate system, or the name of a component representing
the coordinate system.
This macro is used to specify a coordinate system that is to be used to orient the robots'
base (origin) where the first rotary axis is located. Enter the name of a csys, or the name a
component whose coordinate system will be used as the csys, in the Override Text field.
The coordinate system must be defined in the Project Tree.
The orientation of this csys is crucial to correctly identify and initialize robot specific
data. Use the robots' manual when creating this csys. Using components to specify the
csys is convenient when configuring a multi-system project.
NOTE: This macro should be called in the Reset event.
See also: SetRobotTipCsys and SetRobotCsys
SetRobotCsys
Function — MOTION
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text
Text = name of the coordinate system.
This macro is used to specify a coordinate system name to be used to transform robot
input data. Enter the name of a csys in the Override Text field. The specified coordinate
system must must be defined in the Project Tree and is usually attached to the Stock
component. If the specified coordinate system is not defined, an error message is output.
When a robot input position is specified in a Cartesian coordinate system, it can be
transformed to the desired coordinate system. This feature can be used to align NC
program with a part position and orientation. If no name is specified, the "Program Zero"
coordinate system is used.
NOTE: This macro should be called in the Reset event.
See also: SetRobotTipCsys and SetRobotBaseCsys

SetRobotElbow
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.1.2
Valid Inputs — Text
UP = elbow is oriented above the line connecting joint 2 and 4 (default)
DOWN = elbow is oriented below the line connecting joints 2 and 4
This macro is applicable for robot kinematics only. This macro specifies what orientation
of the robot arm elbow (3rd joint) should be used to position the End Effecter. When the
Override Text value is UP, the elbow is oriented above the line connecting joint 2 and 4
(default). When the Override Text value is DOWN, the elbow is oriented below the line
connecting joint 2 and 4.

SetRobotEndEffectorType
Function — MOTION
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
TOOL – specifies that robot arm moves the tool and the part is stationary or on a
rotisserie component.
PART – specifies that robot arm moves the part and the tool is stationary
(rotisserie axis is not supported on the tool).
Use this macro to specify the End Effector type to be a Tool (most common) or a Part.
Enter TOOL in the Override Text field to indicate that the End Effector type is a tool.
Enter PART in the Override Text field to indicate that the End Effector type is a part.
Currently only point to point motion is supported when a part is handled by a robot.

SetRobotMotionType
Function — MOTION
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
0 = PTP (Point To Point) positioning
2 = LIN (Linear Interpolation)

This macro is used to specify the motion type of the robot's Tool Tip Point (TTP) when
moving it from point A to point B. Currently two types of motion are supported: PTP
(Point To Point) positioning and LIN (Linear Interpolation). PTP motion moves all of the
robot's rotary axes simultaneously where the TTP moves along a complex curve
trajectory. LIN motion moves the TTP in very small intervals producing a linear
trajectory between points A and B. The accuracy of linear motion is based on Rotary
Feed Motion Tolerance set in Properties dialog.

SetRobotRotisAxisMode
Function — MOTION
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Text, Value
Text:
ON – activates part rotary axis.
OFF – deactivates part rotary axis.
Value: use to specify the contact point angle relative to the machine axis
perpendicular to the axis of rotation.
This macro is used to activate, or deactivate, an optional X rotary axis unit where the part
is mounted. The part can be rotated about the X axis. To restrict ambiguity in tool
positioning there is a requirement that TTP (Tool Tip Point) contact point must be at
specific angle relative to the X rotary axis. This requirement must be satisfied at any time
during the motion and at a final position as well.
SetRobotTipCsys
Function — MOTION
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = the name of acoordinate system, or the name of a component representing
the coordinate system.
This macro is used to specify a coordinate system that is to be used to orient the robots’
End Effector (origin) where the Tool ,or Part, is attached. Enter the name of csys, or the
name a component whose coordinate system will be used as the csys, in the Override
Text field.. The coordinate system must be defined in the Project Tree. Using
components to specify the csys is convenient when configuring a multi-system project.
NOTE: This macro should be called in the Reset event.
See also: SetRobotBaseCsys and SetRobotCsys

SetRobotXAxisMode
Function — MOTION
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Text, Value
Text:
ON – activates the linear axis and locks the first rotary at its current position.
OFF – deactivates the linear axis (locks at its current position) and activates
the first rotary axis.
ON AT – activates the linear axis at specified position moving the robot to
that location.
Value: used to specify linear axis position for this option.
This macro is used to activate an optional linear axis unit for some robots (Kuka). The
robot is mounted on a rail and is driven by an additional servomotor along the rail which
is usually the X axis. The additional degree of freedom is controlled by this macro. When
the X axis is activated, the robot moves along the X axis and its first rotary axis (vertical)
is locked. When the X axis is disabled, the robot stays at its current X position and its
first rotary axis is activated.
SetSavedMotionType
Function — MOTION
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — None

This macro is used to set the "saved motion type" which is used by the
RestoreSavedMotionType macro.

SetSubsystemID
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Sets the current subsystem to the input text string value.

SetTableCoord
Function — TABLES
Status — ACTIVE
Valid Inputs — Text, Value
The text string contains the table name to be set. This macro sets the entry (specified by
TableIndex) in this table to the values specified with the WorkCoord[axis]Value macros.
Nine values will be stored in the table. Any value not set in the block will be assumed to
be zero.

SetTableValues
Function — TABLES
Status — ACTIVE
Valid Inputs — Text, Value
This macro sets the entry (specified by TableIndex in this table) to the values specified in
TableValues. The order of the values passed to TableValues will be the order stored in
the table. The number of values stored will be equal to the number of times TableValues
was called on this block. Use the Override Text field to specify the name of the table.
NOTES:
1. TableIndex and TableValues must be called before calling SetTableValues. The
order in which TableIndex and TableValues macros are called is not significant,
as long as they are called before calling SetTableValues.
SetToolNumVar
Function — VARIABLES
Status — ACTIVE
Valid Inputs — Text
Text = variable to be set
When passed a variable to be set, this macro will set this variable to be the current tool
number. Typically, this would be called immediately after ToolChange.

SetVcMultiTools
Function — TOOLING
Status — ACTIVE
Valid Inputs — Value
When passed a value of 1, VERICUT will cut with all tools defined on the machine (up
to 32 tools) at every block.

SetVNCKOption
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — Added V6.0
Valid Inputs — Text, Value
This macro sets several 840D Virtual NC Kernel and Interface (VNCK interface) options.
See the VNCK Interface documentation, in the Converters and Interfaces section, in the
CGTech Help Library.
SetWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
This macro is used to set entries 53-59 in the Base Work Offsets and Work Offsets tables
(ref. Base work Offsets table and Work Offsets table in the Tables for Processing G-
Codes section, in the CGTech Help Library) automatically from the NC program file
when a G10L2 command is read. The Register value is set by the WorkCoordIndex
macro, and the Sub-Register value is set by the TableSubRegisterValue macro.
If the table was defined by entering the values representing the offset in the Values
(XYZABCUVWACB): text field:
The corresponding entries in the table are then updated based on the specified XYZ
values in the NC program file. If an XYZ value is not specified, the corresponding
entry is not updated.
If the table is defined based on a "relational" offset between a "from" point and a "to"
point:
The corresponding offset (for example: Register 54) will be kept as relational and a
offset added so that the total offset matches what is being specified in the NC
program file.
For example:
Register 54 in the Work Offset table is set to: "From: Tool To: Stock" (which
equates to X0 Y0 Z-20)
In the NC Program we read:
G10L2P1 X0 Y10 Z-19
This lines tells us to set the Register 54 offset in the Work Offset table to: (X0
Y10 Z-19)
Since this Register already exists in the Work Offset table, and it is defined as
relational, we will now update the additional offset for this entry so that the total
offset is equal to the specified offset (X0 Y10 Z-19).
The Register 54 entry in the Work Offset Table is updated to: Tool To: Stock,
Offset= X0 Y10 Z1

ShortLongOffsetReset
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — None
Turns off the following macros: CutterCompDoubleLong, CutterCompDoubleShort,
CutterCompLong and CutterCompShort.

Siemens3CmdBranch
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
The value passed is the sequence number to branch to. If an additional argument is
passed, then it is added to the absolute value of the sequence number. This routine then
calls the GotoJumpForwardBackward macro. If more than 2 arguments were passed, then
an error message will be printed.

Siemens3CmdIfEqual
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
The value passed is the sequence number to branch to. If argument 1 is equal to argument
2, then GotoJumpForwardBackward is called to branch to the specified sequence number.
If an additional argument is passed, then it is added to the absolute value of the sequence
number. If less than 2 arguments, or more than 3 arguments were passed, then an error
message will be printed.

Siemens3CmdIfGreater
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
The value passed is the sequence number to branch to. If argument 1 is greater than
argument 2, then GotoJumpForwardBackward is called to branch to the specified
sequence number. If an additional argument is passed, then it is added to the absolute
value of the sequence number. If less than 2 arguments, or more than 3 arguments were
passed, then an error message will be printed.

Siemens3CmdIfGreaterEqual
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
The value passed is the sequence number to branch to. If argument 1 is greater than or
equal to argument 2, then GotoJumpForwardBackward is called to branch to the specified
sequence number. If an additional argument is passed, then it is added to the absolute
value of the sequence number. If less than 2 arguments, or more than 3 arguments were
passed, then an error message will be printed.

Siemens3LoadAddress
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
1 = X-axis
2 = Z-axis
Sets the contents of the address parameter specified by Siemens3SetAddressParm to the
specified value. If a variable argument is specified, it will override the input value. A
value of 1 corresponds to the X axis, a value of 2 corresponds to the Z axis.

Siemens3PreProcessor
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — Use macro SetPreProcessorType instead.
Valid Inputs — Value
0 = Off
1 = On
Controls when a Siemens 3T PreProcessor translates blocks of Siemens 3T type data into
a more standard form. This preprocessor is specific to the Siemens 3T syntax, and should
not be used with the Siemens 880 or the Siemens 7M controllers. The preprocessor will
be activated after reading a block from the NC program file, and before substitutions.
This macro should be passed a value of 0 or 1. A value of 0 turns off the Siemens 3
preprocessor, a value of 1 turns on the Siemens 3 preprocessor. If used, this macro should
be called during the NEW "Reset" event.
The following conversions are made by the preprocessor:
R20 200 R30 300 => R20=200 R30=300
R30 R20 => R30=R30+R20
R30-R20 => R30=R30-R20
R30/R20 => R30=R30/R20
R30.R20 => R30=R30*R20
R305 => R30 =5
R30.5 => R30 =.5
Z1.6 R07 => Z1.6+R07
R30 0 R20 => R30=R20
R10 R20.R30 => R10=R10+R20 R20=R20*R30
X1.5 R10 R20 => X1.5+R10 R10=R10+R20
X R10 R20 => X R10 R10=R10+R20

NOTE: OptiPath is not supported with the Sinumerik 3T control.

Siemens3SetAddressParm
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Sets the address parameter that will be accessed (90-93). This is necessary since @90
command might be followed by 2 values (@90 0 R10). This allows for @90 to be
defined as a word. This word can then have a value and an optional variable argument.

Siemens3TAddressAxis
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
Calls the corresponding "AxisMotion" macro (AAxisMotion, BAxisMotion, etc) with the
specified value. If a variable argument is specified, it will override the input value. The
axis to move is specified by contents of the specified address parameter. The address
parameter is set using the Siemens3SetAddressParm macro.
Siemens840DGoto
Function — Branching
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Text, Value
Text: The Label to be processed
Value: -1 = search backwards
1 = search forwards
0 = is search forwards and then backwards if not found.
This macro is for the Siemens 840D Goto command. If the text argument is an 'N'
followed by a number, then a goto sequence will be processed. Otherwise a goto label
will be processed. The value determines the direction of the search.
NOTES:
1. Since the text argument defines the label or sequence number, no other macro
calls are needed to set label or sequence number to branch to.
2. The GOTO, GOTOF, GOTOB, GOTOC words needs to be defined as having an
alpha-numeric argument.

Siemens840DProc
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text
This macro processes a Siemens 840D PROC statement. This includes the processing of
all the input Arguments.
The typical scenario would be:
1. Define the Word: PROC with a subtype of Alpha-Numeric + Arguments.
2. In the Word Address table, the PROC word will call this macro.
Also see: "Notes about the Siemens 840D PROC command" in the Notes about Special
Topics section, in the CGTech Help Library.

Siemens840DProcCall
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text
This macro is called when calling a Siemens 840D subroutine (PROC). The text
argument passed should be the subroutine name, optionally followed by a series of
arguments enclosed by ( ).
NOTE: This is a black box parser. The user has no flexibility on what can or cannot be
parsed.
The typical scenario would be:
1. Define the Word: SubroutineName with a subtype of Alpha-Numeric +
Arguments.
2. When an undefined word is found, a check is made to see if it matches a
subroutine name. If it does, and SubroutineName exists in the word list, then it
will associate the value that follows with the SubroutineName word.
3. In the Word Address table, this word should then call the above macro.
Also see: "Notes about the Siemens 840D PROC command" in the Notes about Special
Topics section in the CGTech Help Library.

Siemens840DSubroutineSequence
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
This Siemens 840D specific macro will look for a series of suffixes, and if it finds one, it
will strip it, and then pass the name to the SubroutineSequence macro . The suffixes that
will be stripped include: _MPF, _SPF, _TEA, _SEA, _TOA, _UFR, _INI, _GUD, _RPA,
_COM, and _DEF
The typical configuration will be as follows:
1. Define %_N_ as a word with an Alpha-Numeric variable type
2. Within the word address table, have the word "%_N_" call
Siemens840DSubroutineSequence
This macro is identical to Siemens840DSubSequenceStart except that it does not mark
the current line as the start of the main program when the suffix is _MPF.

Siemens840DSubSequenceStart
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text, Value
This Siemens 840D specific macro will look for a series of suffixes, and if it finds one, it
will strip it, and then pass the name to the SubroutineSequence macro . The suffixes that
will be stripped include: _MPF, _SPF, _TEA, _SEA, _TOA, _UFR, _INI, _GUD, _RPA,
_COM, and _DEF
If the suffix is _MPF, the current line is marked as the start of the main program. This
functionality is similar to the macro ProgramStartNextLine (except it marks the current
line as the beginning of the program).
The typical configuration will be as follows:
1. Define %_N_ as a word with an Alpha-Numeric variable type
2. Within the word address table, have the word "%_N_" call
Siemens840DSubSequenceStart
This macro is identical to Siemens840DSubroutineSequence except that it marks the
current line as the start of the main program when the suffix is _MPF.

SiemensActivePartFrame
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V7.1.1
Valid Inputs — Value
0 = update the Frame on every motion until canceled
1 = update $P_PARTFRAME
This macro is used to support Siemens 840D $P_PARTFRAME Frame transformation in
CYCLE800 original subroutine. The $P_PARTFRAME Frame is logically is equivalent
to RPCP transformation in VERICUT. When RPCP transformation is created it can be be
used to update $P_PARTFRAME values which are essential for correct processing of
CYCLE800 subroutine and PAROT command.
This macro is modal and the Frame will be updated on every motion until canceled by
using this macro with an Override Value = 0. To update $P_PARTFRAME use this
macro with Override Value = 1.
See also: SiemensPAROT

SiemensActiveZeroOffset
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
This macro is used to copy values of the selected zero offset Frame
$P_UIFR[$P_UIFRNUM] to the current active zero system Frame $P_IFRAME. The
current value of $P_UIFRNUM can be set directly in the NC program, or by executing
G-Codes (G54 – G57, G500 – G599).
Also see: DEF Frame in the "Notes about the Siemens 840D Def command" in the
Notes about Special Topics section in the CGTech Help Library.
SiemensActualSpindle
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text, Value
Marks which spindle this controller is currently working on. If this spindle has previously
been marked as being controlled by this controller, this controller will now takes control.
(M*=26)
This macro:
1. Sets a Siemens internal value defining the actual spindle.
2. Passes the spindle number as the numeric value.
3. Restores the internal spindle speed for this channel if the speed for this spindle is
being controlled by this channel.
4. Sets the controlling head (sync mode).
NOTE: SetActiveSpindleName should also be called.

SiemensBasicOriginFrame
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — none
This macro links the $P_BFRAME Frame variable with the VERICUT Base Work Offset
table. The offset values in $P_BFRAME are transferred to Base Work Offset values and
the other Frame specific values are used to set the system matrix. The new values become
active immediately and remain active until the SiemensSystemFramesCancel macro is
called. This macro should be called whenever $P_BFRAME Frame is set or changed.
Also see: SiemensSystemFramesCancel and SiemensSystemFramesRestore

SiemensCmd201
Function — SIEMENS CMD
Status — Active
Comment — Added V6.2
Valid Inputs — None
Although this macro is not passed any values directly, it expects 2 arguments from the
VariableArgument and ValueArgument macros. The first argument must be
VariableArgument. This macro will set the variable specified in the first argument to the
value specified in the second argument.
NOTE: It is pointless using the @201 command since you can set variables directly
without using the @201 command.
GENERAL "300 SERIES" NOTES: The following notes apply to all "300 series"
macros described below:
1. All series 300 macros "transfer machine data into R-Parameter". All macros in
this series treat machine addresses as variables.
2. In Machine Simulation, these addresses have no additional meaning. This means
that each must be set before they are used.

SiemensCmd300
SiemensCmd302
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
The NC-Machine addresses (@300-@302) are referenced as subsystem 10.
See general "300 series" notes above.

SiemensCmd303
SiemensCmd305
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
The Cycle Machine addresses (@303-@305) are referenced starting at subsystem 100.
(For example if the command references channel 2, the macro would reference
subsystem 102).
See general "300 series" notes above.

SiemensCmd306
SiemensCmd308
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
The PLC address (@306-@308) are referenced as subsystem 11.
See general "300 series" notes above.
SiemensCmd330
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
This macro is used to process the Siemens @330 command. This macro sets a variable
with the value of the associated work offset. It must be passed the order of the Axes as an
Override Text value. For example: XYZAC. It also must be passed 4 arguments.
See ValueArgument.
The arguments have the following meanings:
• variable to be set
• offset number (1 for G54 , 2 for G55, 3 for G56, 4 for G57)
• axis number (the order of the axis must be specified in the Override Text
argument)
• Coarse/Fine value (currently ignored)
Example:
@330 R81 K1 K2 K0 The second axis value of the G54 offset is loaded into
parameter R81.
See general "300 series" notes above.

SiemensCmd331
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
1 = upper turret
2 = lower turret
4 = Z-axis of the subspindle
NOTE: This macro has been hard coded to work with machines with subsystem "1" for
the upper turret, "2" for the lower turret, and "4" for the Z-axis of the subspindle.
Subsystems 3 and 5 are not currently supported.
See general "300 series" notes above.

SiemensCmd360
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
This macro assumes the following:
1. The workpiece is located at 0 0 0.
2. For rotaries, the last rotary move has completed.
3. The following specific component names:
Turret 1 X - X1
Turret 1 Z - Z1
Turret 2 X - X2
Turret 2 Z - Z2
Counter Spindle Z - Z4
Turret 1 Y - Y1
See general "300 series" notes above.

SiemensCmd383
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
The following are the only arguments that are supported. The corresponding bit flag will
be placed into the first argument.

ARG 2 ARG3 ARG4 ARG5 MEANING


1 32 5 15 Z-axis mirroring on channel 1
1 32 17 15 Z-axis mirroring on channel 2

See general "300 series" notes above.

GENERAL "400 SERIES" NOTES:


The following notes apply to all "400 series" macros described below:
1. All series 400 macros "load values into system storage". All macros in this series
treat machine addresses as variables.
2. In Machine Simulation, these addresses have no additional meaning. This means
that each must be set before they are used.

SiemensCmd400
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
The NC-Machine addresses (@400-@402) are referenced as subsystem 10.
See general "400 series" notes above.
SiemensCmd403
SiemensCmd404
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
The Cycle Machine addresses (@403-@405) are referenced starting at subsystem 100.
(For example if the command references channel 2, the macro would reference
subsystem 102).
See general "400 series" notes above.

SiemensCmd430
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text
This command is used to process the Siemens @430 command. This command sets the
values associated with a specific work offset. It must be passed the order of the axes as an
Override Text value. For example: XYZAC. It also must be passed 4 arguments
See ValueArgument.
The arguments have the following meanings:
• Offset number (1 for G54, 2 for G55, 3 for G56, 4 for G57)
• Axis number (the order of the axis must be specified in the Override Text
argument
• Coarse/Fine value (currently ignored)
• Offset value
Example:
@430 K1 K2 K0 K500 The value 500 is loaded into the G54 offset for the second
axis.
See general "400 series" notes above.

SiemensCmdAbs
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Take the absolute value of the second argument and stores the result in the variable
specified by the first argument. Arguments are set using macros ValueArgument and
VariableArgument.
SiemensCmdAngle
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
Takes the arc tangent of y/x (second/third arguments), and stores the result in degrees in
the variable specified by the first argument. Arguments are set using macros
ValueArgument and VariableArgument.

SiemensCmdASin
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
Takes the arc sine of the second argument, and stores the result in degrees in the variable
specified by the first argument. Arguments are set using macros ValueArgument and
VariableArgument.

SiemensCmdATan
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
If 2 arguments were passed, takes the atan of the second argument, converts the results to
degrees, and stores the result in the first argument. If only one argument was passed,
takes the atan of the first argument, converts the results to degrees, and stores the result in
the first argument. If no arguments or more than 2 arguments were passed, issues an error
message.Arguments are set using macros ValueArgument and VariableArgument.

SiemensCmdBranch
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text, Value
Branches to the location specified by the first argument. Arguments are set using macros
ValueArgument and VariableArgument.

SiemensCmdCase
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text
Use this macro to processes a Siemens "Case" statement. The first argument is the value
being tested. It is followed by a series of value pairs (value, branch location). If the
values match, a branch is made to the specified location. Arguments are set using macros
ValueArgument and VariableArgument.

SiemensCmdCos
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Takes the cosine of the second argument (in degrees), and store the result in the variable
specified by the first argument. Arguments are set using macros ValueArgument and
VariableArgument.

SiemensCmdDec
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Use to decrement the value of the specified variable. Arguments are set using macro
VariableArgument.

SiemensCmdGetChannel
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
This macro returns the current channel number. This macro assumes that the channel
number is the subsystem. In our system, the subsystem is an alphanumeric string.
Channel numbers are integers. This macro therefore requires that all INDEX machines be
built with integer subsystems. (@372)

SiemensCmdGetGCode
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
This macro will return the G-Code state in variable 1 of the corresponding group
specified in variable 3. The channel number in variable 2 is currently being ignored.
(@36b)
The following values are returned based on the group:

GROUP VALUES
0 0, 1, 2, 3
1 9
2 17, 18, 19
3 40, 41, 42
4 53
5 Current Work Offset
6 4
7 60
8 70, 71
9 80
10 90, 91
11 94, 95
12 147
13 50
14 150
15 130
16 230
17 330
18 930
19 400
20 171
21 175
22 720
23 220
24 450
25 455
27 420
28 600
Else 0

SiemensCmdHypot
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — None
Takes the square root of the sum of the squares of the second and third arguments, and
stores the result in the variable specified by the first argument. Arguments are set using
macros ValueArgument and VariableArgument.
SiemensCmdIfEqual
SiemensCmdIfGreater
SiemensCmdIfGreaterEqual
SiemensCmdIfLess
SiemensCmdIfLessEqual
SiemensCmdIfNotEqual
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Text
The 6 macros above, process Siemens conditional logic. They are in the form: IF A
<conditional> B THEN continue ELSE jump to C. Arguments are set using macros
ValueArgument and VariableArgument.

SiemensCmdInc
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Use to increment the value of the specified variable. Arguments are set using the macro
VariableArgument.

SiemensCmdIntegral
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Use to truncate the decimal contents of the specified variable. Arguments are set using
the macro VariableArgument.

SiemensCmdPopVarGroup
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
This macro causes a series of variables from argument 1 to argument 2 to be restored by
copying them from variable 300+n.
NOTE: This might not be identical to the way the control processes this command, but
it should work for variables 0-200. Various problems and unknowns were associated with
treating this command like a true push/pop stack.
Example:
@043 R61 R69 Copies the contents of variables 361-369 to 61-69.
SiemensCmdPushVarGroup
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
This macro causes a series of variables from argument 1 to argument 2 to be copied to
variable 300+n.
NOTE: This might not be identical to the way the control processes this command, but
it should work for variables 0-200. Various problems and unknowns were associated with
treating this command like a true push/pop stack.
Example:
@041 R61 R69 Copies the contents of variables 61-69 to 361-369.

SiemensCmdSin
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Takes the sine of the second argument (in degrees) and stores the result in the variable
specified by the first argument. Arguments are set using macros ValueArgument and
VariableArgument.

SiemensCmdSquareRoot
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Takes the square root of the second argument and stores the result in the variable
specified by the first argument. Arguments are set using macros ValueArgument and
VariableArgument.

SiemensCmdTan
Function — SIEMENS CMD
Status — ACTIVE
Valid Inputs — Value
Takes the tangent of the second argument (in degrees) and stores the result in the variable
specified by the first argument. Arguments are set using macros ValueArgument and
VariableArgument.
SiemensCONTPRON
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.0.4
Valid Inputs — None
This macro implements the Siemens 840D CONTPRON command. This command
prepares VERICUT to store the following motion data (profile elements) in an array
variable instead of producing machine motion. The two dimensional array is used to store
motion parameters. One motion corresponds to one row of numbers in the array. The
CONTPRON word must be specified in Word Format table as Type: Macro, Sub Type:
Text String. The input string is in the form of a function call with parenthesis. The
following is the valid command syntax:
CONTPRON (Table_name, Machining_type, Relief_cuts(, Direction))
Table_name — The name of array variable that is to store the profile elements. The
first dimension of the array must be 11. The second dimension should be sufficiently
large to store all profile elements.
Machining_type — The name of string variable, or string constant, that defines the
type of machining. Valid options are:
"G" = longitudinal turning inside
"L" = longitudinal turning external
"N" = face turning inside
"L" = face turning external
Relief_cuts — The name of the integer variable used to return the number of relief
cuts
Direction — The name of the integer variable, or constant, that specifies the
machining direction. This parameter is optional. Valid options are:
0 = forward only (default)
1 = both directions (forward and backward profile)
The current implementation of CONTPRON command is limited to supporting the
CYCLE93 function. Parameters 2, 3 and 4 are ignored and will be reconsidered when
required.
For more details see Siemens Programming Manual, 06/2009, paragraph 15.2, page 802,
Generate contour table (CONTPRON).
Also see: SiemensEXECTAB and SiemensEXECUTE
SiemensCornerValue
Function — CHAMFER / ROUND
Status — ACTIVE
Valid Inputs — Value
This macro is the Sinumerik 3T version of macros CornerMode, and CornerValue. A
negative value sets the mode to CHAMFER, and a positive value set the mode to
RADIUS. The value also defines the CornerValue.

SiemensCornerValue840D
Function — CHAMFER / ROUND
Status — ACTIVE
Valid Inputs — Value
This macro is the Sinumerik 840D version of the CornerMode / CornerValue macros. A
negative value sets the Mode to CHAMFER, and a positive value set the mode to
RADIUS. The value also defines the CornerValue. This macro supports the multi-line
statement.

SiemensCycle95
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Text, Value
This macro executes a Siemens 840D stock removal turning cycle (CYCLE95).
Parameters for this cycle are programmed as a comma separated alpha-numeric list. The
SiemensCycle95 macro must be associated with the first list parameter and used with the
"after-motion" option to insure all the cycle's parameters have been processed before the
cycle's motions are expanded. The first parameter of the CYCLE95 is the Siemens
subroutine name defining the cycle's contour and must be defined as "quoted_text". In
addition, the CYCLE95 word must be defined as a "List_alpha_numeric" word type.

SiemensCycle95Type
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Use to set the type of machining being requested with the Siemens CYCLE95 stock
removal cycle. Legal values are 1 through 12 as defined in the Siemens 840D
programming manual.
SiemensCycle97
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Use to execute a Siemens 840D thread turning cycle (CYCLE97). Parameters for this
cycle are programmed as a comma separated numeric list. The SiemensCycle97 macro
must be used with the "after-motion" option to insure all the cycle's parameters have
been processed before the cycle's threading motions are expanded. The thread endpoints
must be set by calling macros SiemensCycle97Xstart, SiemensCycle97Xend,
SiemensCycle97Zstart, and SiemensCycle97Zend prior to calling the SiemensCycle97
macro.

SiemensCycle97ArcIn
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the unsigned arc in extension for a Siemens 840D thread turning cycle (CYCLE97).

SiemensCycle97ArcOut
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the unsigned arc out extension for a Siemens 840D thread turning cycle (CYCLE97).

SiemensCycle97FinalAllowance
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the final allowance for a Siemens 840D thread turning cycle (CYCLE97).

SiemensCycle97FinishCuts
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the number of finish passes for a Siemens 840D thread turning cycle (CYCLE97).
SiemensCycle97RoughCuts
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the number of rough passes for a Siemens 840D thread turning cycle (CYCLE97).

SiemensCycle97ThreadStart
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the thread starting orientation (0 to 359.999 degrees) for multiple threads in a
Siemens 840D thread turning cycle (CYCLE97).

SiemensCycle97Type
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the type of machining (1 through 4) for a Siemens 840D thread turning cycle
(CYCLE97).

SiemensCycle97Xend
SiemensCycle97Xstart
SiemensCycle97Zend
SiemensCycle97Zstart
Function — TURNING CYCLES
Status — ACTIVE
Valid Inputs — Value
The 4 macros above are used to set the start and end points for a Siemens 840D thread
turning cycle (CYCLE97). X axis values are defined as radii.

SiemensCycleMillPocketCutType
Function — POCKET CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the milled pocket cut type for Siemens controls. Use instead of macro
CycleMillPocketCutType for Siemens controls.
SiemensEndlessFeedLinkOnOff
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
0 = Off
1 = On
Sets a flag which tells if the feedrate is dependent on the Siemens Endlessly Rotating
axis. The numeric value must be set to 0 (OFF) or 1 (ON), indicating whether the
dependency should be turned on or off).

SiemensEndlessFeedMode
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
1 = degrees per minute
2 = revolutions per minute
Sets the feedmode for the endless rotating axis. The numeric value must be set to 1
(degrees per minute) or 2 (revolutions per minute), indicating feedmode.

SiemensEndlessFeedRate
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Sets the feedrate for the Siemens Endlessly Rotating axis. The numeric value must be set
to the feedrate.

SiemensEndlessOnOffDir
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Text = rotary component register name
Value:
0 = Off
1 = On clockwise
-1 = On counterclockwise
Turns on or off the Siemens endless rotary feature. The text value must be set to the
corresponding Rotary component register name, and the value must be set to -1 (CCW), 0
(OFF), or 1 (CW), indicating on/off and direction.
SiemensEXECTAB
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.0.4
Valid Inputs — none
This macro implements the Siemens 840D EXECTAB command. This command is used
to execute motion stored in an array variable. The array variable is usually (but not
necessary) prepared by the CONTPRON command and must be filled in the format
specific for CONTPRON command.
For details about array data see Siemens Programming Manual, 06/2009 paragraph 15.2,
page 802, Generate contour table (CONTPRON). The EXECTAB word must be
specified in Word Format table as Type: Macro Sub Type: Text String. The input string is
in the form of a function call with parenthesis. The following is the valid command
syntax:
EXECTAB (Table_name[element_index])
Table_name — The name of the array variable with the stored motion data.
Element_index — The integer expression specifying the contour element in the array to
be executed.
For more details see Siemens Programming Manual, 06/2009 paragraph 15.5, page 817,
Execute the contour elements of a table block by block (EXECTAB).
Also see: SiemensCONTPRON and SiemensEXECUTE

SiemensEXECUTE
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added 7.0.4
Valid Inputs — none
This macro implements the Siemens 840D EXECUTE command. This command
completes contour preparation and returns VERICUT to normal execution mode
(processing motions). Command EXECUTE must be preceded by a CONTPRON
command and some motion blocks. The EXECUTE word must be specified in the Word
Format table as Type: Macro, Sub Type: Text String.
The input string is in the form of function call with parenthesis. Following is the valid
command syntax:
EXECUTE (Variable_name)
Variable_name — The name of the integer variable to be used to return the error status
after storing all contour elements.
Value 1 indicates that contour table was prepared error free.
Value 0 indicates errors.
The current implementation of EXECUTE checks only the size of the array used for
contour elements.
For more details see Siemens Programming Manual, 06/2009, paragraph 15.7, page 820,
Deactivate contour preparation (EXECUTE).
Also see: SiemensCONTPRON and SiemensEXECTAB

SiemensL137COffset
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — Value
Used to implement Siemens Polar interpolation. This macro is specific to the Siemens
L137 command. It causes the current shift offset for the A, or C axis, to be incremented
by the current position of this axis. The axis that will be adjusted is based on the value
passed to the SiemensActualSpindle macro (3 applies to the A axis, 4 applies to the C
axis, the default is 4.).

SiemensL137COffsetCancel
Function — CYLINDRICAL / POLAR
Status — ACTIVE
Valid Inputs — None
Used to cancel Siemens Polar interpolation. It removes the additional offset that was
added by macro SiemensL137COffset. The offset that is removed is based on the
SiemensActualSpindle setting (3 applies to the A axis, 4 applies to the C axis).

SiemensLoadToolRegister
Function — TOOLING
Status — ACTIVE
Valid Inputs — Value
This macro is used to support Siemens @320 command.
NOTE: This macro only works with the fourth parameter set to K7 or K8.
Example:
@320 R900 K1 R101 K7
If the fourth parameter is K7 look in the Tool Length Compensation table (ref. Tool
Length Compensation table in the Tables for Processing G-Codes section, in the
CGTech Help Library) at the register that is = to variable 101 and assign that value to
variable 900.
If the fourth parameter is K8 look in the Cutter Compensation table (ref. Cutter
Compensation table in the Tables for Processing G-Codes section, in the CGTech Help
Library) at the register that is = to variable 101 and assign that value to variable 900.
SiemensNurbsKnot
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Adds a Siemens specific incremental knot value.

SiemensNurbsProcess
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — None
This Siemens specific macro checks to see if the NURBS statement has been completed,
and if so, processes the NURBS statement.

SiemensPAROT
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Text, Value
0 = reset to the last applied working plane
1 = apply the calculated angles
This macro is typically called with the Siemens 840D PAROT or PAROTOF command.
This macro converts the "working plane" into real A, B, C angles that apply to the current
machine, and establishes a rotation plane matrix if needed. The resulting angles are then
stored in the specified variables. The text value passed to this macro contains the names
of the variables, and the mode which is basically read from the Siemens 840D
CYCLE800 parameter 4 (_MODE), for example "REALA REALB REALC #_MODE".
This macro uses $P_WPFRAME frame orientation and calculates the machine rotary
component position using the WorkingPlane2AbcType macro. The calculated angles are
stored in the variables assigned by supplied names and can be used to position machine
so the tool, relative to the work piece, is oriented as specified by frame. The input
override value 1 specifies that calculated angles are applied, values 0 is used to reset to
the last applied working plane.

SiemensPlaneOverrideArg
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to SiemensPlaneSelectionArg, except considers the Override Text field value
rather than the word.
SiemensPlaneSelection
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Resets the plane selection argument count to zero.

SiemensPlaneSelectionArg
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Processes the arguments for the Siemens G16 command. The general format for a
Siemens G16 command is: G16 X Y X Z D256, where the "word" for each of the
arguments determines the action to take. Therefore, the plane is set based on "X", "Y", or
"Z". The first 2 parameters set the motion plane. The third parameter specifies the axis in
which the tool length is to be applied, and the fourth parameter specifies whether the
additional offset is to be applied to either the tool length (tool length comp) or the cutter
comp.
This functionality is provided with the exception that the tool length (gage offset) is
always applied in the direction of the tool at the time the offset is applied (typically tool
change), and there are still unanswered questions about how the fourth argument is
applied.
Also see: SiemensPlaneOverrideArg

SiemensPolarAngle
Function — MOTION
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Version of PolarAngle used with the 840D ANG processing. When the ANG word
appears in an NC block, either none, one or both of the axes in the ZX plane may also be
programmed. This macro considers the context of the NC block. If no axes are
programmed the ANG word is considered ANG1 (first block of a two block contour
definition). If exactly one axis is programmed then it is either ANG1, or if it is the second
block of a two block contour definition, it is ANG2. If both axes are programmed then
ANG2 is assumed.
SiemensPolyT
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Value
Set the POLY T value.

SiemensPolyx
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Text, Value
Sets the X axis, ax, and the bx values based on the Siemens specific input text string
argument.

SiemensPolyy
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Text, Value
Sets the Y axis, ay, and the by values based on the Siemens specific input text string
argument.

SiemensPolyz
Function — NURBS POLY
Status — ACTIVE
Valid Inputs — Text, Value
Sets the Z axis, az, and the bz values based on the Siemens specific input text string
argument.

SiemensSetFrame
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added V7.1.2
Valid Inputs — Text
text = destination frame name
This macro is used to copy the data of one frame to another frame. It should be called
when the source frame variable is set or modified.
For example:
When $P_CHBFR[0] is modified, calling this macro with Override Text = $P_BFRAME,
the $P_BFRAME Frame will be updated as well.
The source frame is a variable where the macro is attached. The Override Text field is
used to specify the destination frame name. If this macro is called with none frame word,
or Override Text refers to none frame variable, no action takes place.
See also: SiemensBasicOriginFrame

SiemensShiftAngleA
SiemensShiftAngleB
Function — ROTATE 2D
Status — ACTIVE
Valid Inputs — Value
These 2 macros are used to specify the absolute rotation angle. The sum of Angle A and
Angle B is the total rotation angle that will be applied.

SiemensShiftOffsetA
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — None
Shifts the work coordinate system by the specified axis values. The values will be
interpreted as absolute. Only values specified on the block will be adjusted. (Shift Offset
0, ABSOLUTE/MODAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

SiemensShiftOffsetB
Function — SHIFT OFFSETS
Status — ACTIVE
Valid Inputs — None
Shifts the work coordinate system by the specified axis values. The values will be
interpreted as absolute. Only values specified on the block will be adjusted. (Shift Offset
1, ABSOLUTE/MODAL)
See "Notes about shift macros" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.

SiemensSpecifiedSpindle
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text, Value
Marks the specified spindle (numeric value) as being controlled by this controller. If the
spindle is the one that is currently being worked on (actual), then this controller will take
control of this spindle and call the RPMSpeed and ConstantSurfaceSpeed macros to
restore the corresponding spindle speed. (M*=33)

SiemensSpindleSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text, Value
Sets an internal Siemens spindle speed variable for the specified spindle. The spindle is a
numeric value specified by the Override Text value. If this head is the controlling head
for this spindle, then call the RPMSpeed and ConstantSurfaceSpeed macros to set the
internal spindle speed. (S*=*)

SiemensSubroutineCallDefine
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Use this macro to processes the Sinumerik L word as described in the Siemens Controller
Functions document.
If the last 2 digits are zero, the L word is being used to define a subroutine. The
remaining portion of the value represents the subroutine name. The remaining portion
will also be used to call the Sequence macro to update the sequence table and set the
current sequence number.
If the value is 95 or 96, a special Siemens turning cycle will be called. See Notes about
Lathe Canned Cycle Processing, in the Notes about Special Topics section, in the
CGTech Help Library for more details.
If the value is 97, a special Siemens threading cycle will be called. See Notes about
Lathe Canned Cycle Processing, in the Notes about Special Topics section, in the
CGTech Help Library for more details.
Otherwise, the last 2 digits represent the number of times the specified subroutine should
be called. The remaining portion of the value represents the subroutine name.

SiemensSystemFramesCancel
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
BFRAME = use to deactivate last programmed $P_BFRAME Frame variable
IFRAME = use to deactivate last programmed $P_IFRAME Frame variable
PFRAME = use to deactivate last programmed $P_PFRAME Frame variable
ALL = use to activate all settable/programmable Frames.
This macro is used to deactivate a specific Frame, or all programmable/settable Frames,
in VERICUT. When the specified Frame is deactivated its values are not reset, however
all transformations and offsets associated with Frame are not used and the cumulative
$P_ACTFRAME is modified accordingly to show total transformation of all active
Frames. The deactivated Frame remains inactive until it is re-activated using the
SiemensSystemFramesRestore macro, or is reprogrammed.

SiemensSystemFramesRestore
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — Text
BFRAME = use to activate last programmed $P_BFRAME Frame variable
IFRAME = use to activate last programmed $P_IFRAME Frame variable
PFRAME = use to activate last programmed $P_PFRAME Frame variable
ALL = use to activate all settable/programmable Frames.
This macro is used to activate specific, or all, Frames after the
SiemensSystemFramesCancel macro has been executed. One, or all,
programmable/settable Frames supported in VERICUT can be activated by this macro.
This macro is intended to support none modal cancel codes G53 and G153 on 840D
control.
Also see: SiemensSystemFramesCancel

SiemensTOFRAME
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text, Value
This macro is designed to support TOFRAME, TOFRAMEZ, TOFRAMEX,
TOFRAMEY, TOROT, TOROTZ, TOROTX or TOROTY functions specific to Siemens
Sinumerik 840D controls.
This macro creates a new $P_PFRAME Frame which coincides with the current tool
component orientation. The tool axis vector can be aligned with the Z, X or Y axis of the
Frame by using corresponding Text parameter. If the Text parameter is not specified, the
Z axis is aligned with the tool axis vector. When this macro is executed the old Frame
$P_PFRAME is saved for future use with TOROTOF function.
When called with "Override Value" set to 1, processing of the TOROT function is
activated. The option is used to orient the primary and secondary axes of the matrix
($P_PFRAME) created by the TOROT command.
When this option is not active, the primary axis orientation is defined by the rotation of
old matrix to a new position specified by TOROT command.
When option is active, the secondary axis of matrix is aligned with the Z-X plane vector,
where Z is the new matrix Z axis and X is the old matrix primary axis. This option is
equivalent to the 840D option set by variable X_AXES_IN_OLD_X_Z_PLANE.
For more details see Sinumerik 840D sl/840Di sl/840D/840Di/810D Fundamentals,
TOROT command.
Also see: SiemensTOROTOF and Siemens_P_PFRAME macros.

SiemensTOROTOF
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is designed to support TOROTOF function for Siemens Sinumerik 840D
control. This macro restores and activates old Frame $P_PFRAME saved when the
SiemensTOFRAME macro was executed.
Also see: SiemensTOFRAME and Siemens_P_PFRAME macros.

SiemensToVcAxisMapping
Function — MAPPING
Status — ACTIVE
Comments — Added V7.1.1
Valid Inputs — Text
This macro is used to map Siemens axes to VERICUT Component Type (Register).
When the Siemens 840D control has an axis which is not present in VERICUT as one of
12 available registers (X,Y,Z,A,B,C,U,V,W,A2,B2,C2) you can map that axis to an
available VERICUT register using this macro.
This enables supporting Siemens Frames and related commands where a Frame is set or
used. A valid input is text containing pairs of axes names, where the first (odd) word is
the Siemens axis name followed by space and the second (even) word is the VERICUT
register name. Up to 12 pairs can be specified in a macro call. No mapping is required if
the Siemens axes match a VERICUT default. This macro is sub-system specific.
Example:
The text entry AA A2 CC C2 - redirects Siemens AA axis to VERICUT A2 register
and the Siemens CC axis to to the VERICUT C2 register.
SiemensTRWorkCoord
Function — MACRO_WORK_OFFSETS
Status — ACTIVE
Comments — Added V7.0.4
Valid Inputs — Override Text
This macro is similar to the SiemensWorkCoord macro. It sets directly controlled Work
Offsets and the System IFRAME matrix based on current $P_IFRAME Frame values.
This macro should be used when $P_IFRAME frame rotary axis translate values (TR of
A, B or C) are changed by direct programming.
The translation of rotary axes is used to calculate a compound matrix where the Rotation
Plane values (RT X, Y or Z) are combined with TR values and rotary axis offsets are set
based on compound matrix rotation. This is specific for 840D control. The required input
is 3 variable names specified in the Override Text field, where the calculated rotary offset
values are to be stored. A space is used to separate the variable names.

SiemensWorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro sets directly controlled Work Offsets and the System IFRAME matrix based
on current $P_IFRAME Frame values. This macro should be used when $P_IFRAME
frame is changed by direct programming. The applicable Word/Address table entry is
illustrated below:

Also see: DEF Frame in the "Notes about the Siemens 840D Def command" in the
Notes about Special Topics section in the CGTech Help Library.

SiemensWorkCoordIndex
Function — WORK OFFSETS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
This macro is used to add , or modify, an entry in the Work Offsets table (ref. Work
Offsets table, in the Tables for Processing G-Codes section, in the CGTech Help Library)
when any Frame of $P_UIFR array is created, or modified. The index of $P_UIFR array
element, is added to the macro value argument, to determine the index into Work Offset
table where the new entry is to be added, or the existing entry that is to be modified.
Also see: DEF Frame in the "Notes about the Siemens 840D Def command" in the
Notes about Special Topics section in the CGTech Help Library.

Siemens_P_PFRAME
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — None
This macro is used to simulate the transformation of coordinates in VERICUT when
$P_PFRAME is modified. Frame $P_PFRAME is emulated in VERICUT using the
RotationPlane matrix and interface. Commands TRANS, ROT, ATRANS, AROT etc.
will automatically update $P_PFRAME if it is declared.
NOTE: When $P_PFRAME or $P_IFRAME is modified VERICUT automatically
updates $P_ACTFRAME (if this frame is declared in VERICUT).

SimpleForLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
This command is used to process a simple "for" loop of the form:
LOOP number
.
.
.
NEXT
The following Word Formats should be defined:
NEXT should be defined as a word of Type = "Macro", Sub Type = "None".
LOOP should be defined as a word of Type = "Macro", Sub Type = "Numeric".
Entries should be defined for NEXT and LOOP in the Word/Address table as illustrated
below:
SkipWordIsOptimizable
Function — OPTIPATH
Status — ACTIVE
Valid Inputs — Value
0 = blocks containing a SKIP character are not optimizable
Any non-zero value = the SKIP character is optimizable (Default)
Controls when a "SKIP" word is optimizable (e.g. "$"). Calling this macro with a value
of "0", indicates that blocks containing a SKIP character are not optimizable. Passing any
non-zero value indicates the SKIP character is optimizable. Optimizable is the default
condition for SKIP characters.

SpecialRotoTrans
Function — MISCELLANEOUS
Status — SPECIAL
Valid Inputs — Text, Value
This macro is passed the name of the rototrans.txt file. It will read the specified file and
set the G54 offset and the rotation matrix.
NOTE: This macro requires the rototrans.txt file to be in the exact syntax as defined
below.
The rototrans.txt program will look like the following:
$P_UIFR[1,X,TR]= 2.25
$P_UIFR[1,Y,TR]= 1.32
$P_UIFR[1,Z,TR]= 5.78
G54
ROT Z= 1.23
AROT X= 0.12
AROT Z= 0.92

SpecialRotoTransComp
Function — MISCELLANEOUS
Status — SPECIAL
Valid Inputs — Text, Value
This command will move and rotate the specified component. The initial position is being
defined by the Ball1 CSYS. The final position is being defined by the current G54 offset
and the current rotation matrix.
SpindleChanger
Function — MISCELLANEOUS
Status — SPECIAL
Valid Inputs — Value
Unloads the current spindle (if one exists), and loads the spindle specified with the
SpindleValue macro. This macro is a MasterCenter specific macro.

SpindleCompName
Function — MISCELLANEOUS
Status — REPLACED
Comment — Replaced by ActiveSpindleCompName in V6.0.
Valid Inputs — Text
Prior toV6, this macro set the internal spindle component name based off the incoming
text value. It was used with SpindleCompOnOff. In V6, this macro is automatically
replaced by ActiveSpindleCompName.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

SpindleCompOnOff
Function — MISCELLANEOUS
Status — REPLACED
Comment — Replaced by ActiveSpindleOnOff in V6.0.
Valid Inputs — Value
Prior to V6, this macro was passed a value of 1 for ON, and 0 for OFF. It set the spindle
component, specified by SpindleCompName, to either ON or OFF. It was only used with
boring bars and facing tools. In V6, this macro is automatically replaced by
ActiveSpindleOnOff.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

SpindleMotionCCW
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
If the spindle speed was set, outputs the APT "SPINDL/%n,CCLW" statement.
Otherwise, the APT "SPINDL/ON" statement is output. The SpindleMotionCCW macro
takes into consideration part side/tool side, and the settings of Disable Auto Direction
and Reverse Direction on the Modeling window:Component Attributes tab (ref.
Modeling window, Component Attributes tab in the VERICUT Help section, in the
CGTech Help Library), when determining which direction is CCW. If the spindle
component is on the part side, the spindle direction will be reversed.
This macro is equivalent to calling macro ActiveSpindleDir with Override Text = CCW,
and macro ActiveSpindleOnOff with Override Value = 1.
NOTES:
1. The SpindleMotionCCW macro should not be used when building new controls.
Macro ActiveSpindleDir should be used instead.
2. This macro now applies to the active spindle component. For compatibility
reasons, if the system is currently in "milling" mode (set by default, by macro
VC_ModeMilling, or by macro VC_ModeMillingComp), then macro
ActiveSpindleActiveTool will be automatically called to set the active spindle
component. This macro should be replaced by the new ActiveSpindle... macros.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

SpindleMotionCW
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
If the spindle speed was set, outputs the "SPINDL/%n,CLW" statement. Otherwise, the
APT "SPINDL/ON" statement is output. The SpindleMotionCW macro takes into
consideration part side/tool side, and the settings of Disable Auto Direction and Reverse
Direction on the Modeling window:Component Attributes tab (ref. Modeling window,
Component Attributes tab in the VERICUT Help section, in the CGTech Help Library),
when determining which direction is CW. If the spindle component is on the part side,
the spindle direction will be reversed.
This macro is equivalent to calling ActiveSpindleDir with Override Text = CW, and
ActiveSpindleOnOff with Override Value = 1.
NOTES:
1. The SpindleMotionCW macro should not be used when building new controls.
Macro ActiveSpindleDir should be used instead.
2. This macro now applies to the active spindle component. For compatibility
reasons, if the system is currently in "milling" mode (set by default, by macro
VC_ModeMilling, or by macro VC_ModeMillingComp), then macro
ActiveSpindleActiveTool will be automatically called to set the active spindle
component. This macro should be replaced by the new ActiveSpindle... macros.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
SpindleMotionOff
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — None
This macro outputs the APT "SPINDL/OFF" statement.
This macro is equivalent to calling ActiveSpindleOnOff with Override Value = 0.
NOTE: This macro now applies to the active spindle component. For compatibility
reasons, if the system is currently in "milling" mode (set by default, by macro
VC_ModeMilling, or by macro VC_ModeMillingComp), then macro
ActiveSpindleActiveTool will be automatically called to set the active spindle
component. This macro should be replaced by the new ActiveSpindle... macros.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

SpindleSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Text, Value
Sets the spindle speed to the input value, outputs a "SPINDL" command, updates the
Status window to have the specified spindle speed, and sets the spindle mode to RPM.
This macro is equivalent to calling macros RPMMode and ActiveSpindleSpeed.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

SpindleSpeedMax
Function — FEEDS & SPEEDS
Status — REPLACED
Comment — Replaced by ActiveSpindleMaxSpeed in V6.0.
Valid Inputs — Value
Prior to V6, this macro set the maximum spindle speed to the input value. In V6, this
macro is automatically replaced by macro ActiveSpindleMaxSpeed.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
SpindleSpeedMin
Function — FEEDS & SPEEDS
Status — REPLACED
Comment — Replaced by ActiveSpindleMinSpeed in V6.0.
Valid Inputs — Value
Prior to V6, this macro set the minimum spindle speed to the input value. In V6, this
macro is automatically replaced by macroActiveSpindleMinSpeed .
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.

SpindleValue
Function — ACTIVATION
Status — SPECIAL
Comment — Should only be used with SpindleChanger..
Valid Inputs — Value
Sets the spindle value which is to be loaded.
Also see: ActivateToolSubsystem

SpiralMotionOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
ON = turn on the special logic.
OFF = turn off the special logic.
This macro turns On/Off a special case logic to process spiral motions with greater
refinement, speed and smoothness. This macro would most commonly be used used by
grinder applications where a high level of accuracy and refinement is required.

StopOptional
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
If Tool Change By is set to "List" (ref. NC Program window in the VERICUT Help
section, in the CGTech Help Library.), and List Tool Change By is set to "Prog. Stop"
(ref. Tool Change List window in the VERICUT Help section, in the CGTech Help
Library), then this macro will cause a tool change to occur. The tool change will be based
off the tool list.
If Stop At is set to "Optional Stop" (ref. Motion window in the VERICUT Help section,
in the CGTech Help Library), this macro will cause processing to stop.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

StopProgram
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
If Tool Change By is set to "List" (ref. NC Program window in the VERICUT Help
section, in the CGTech Help Library.), and List Tool Change By is set to "Prog. Stop"
(ref. Tool Change List window in the VERICUT Help section, in the CGTech Help
Library), then this macro will cause a tool change to occur. The tool change will be based
off the tool list.
If Stop At is set to "Program Stop" (ref. Motion window in the VERICUT Help section,
in the CGTech Help Library), this macro will cause processing to stop.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

StopUnconditional
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
This macro will cause processing to stop. If this macro is invoked within an "IF"
condition, a check is done to determine that the "IF condition" is true before processing is
stopped. The calling of this macro will not be considered as a possible tool change event.
SubEndingSeq
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Value
This macro defines the ending sequence number for the current subroutine being called.
The value is non-modal. When the sequence number is reached within the subroutine, a
return from the subroutine is executed.
Also see: SubStartingSeq

SubroutineBlock
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
This macro defines the start of a subroutine. This macro is similar to
SubroutineSequence, except if the start of subroutine line was reached without being
called, it will immediately jump to the end of the subroutine.
NOTE: Use this macro to support the Acramatic DFS (define subroutine) command.

SubroutineName
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Sets the subroutine name that is then used by the CallNCMacro, or CallSub, macros.

SubroutineNameNumeric
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
Sets the subroutine name that is then used by the CallNCMacro, or CallSub, macros.
This macro also sets the subroutine name type to be NUMERIC.
This allows the following configuration, assuming the Type of Subroutine Name is set to
Numeric:
P * M 98 SubroutineName
< * M 98 SubroutineNameText
< * (G 65 66 66.1) SubroutineNameText

M 98 P * CallSub
M 98 < * CallSub
G 65 CallNCMacro
G 66 CallNCMacroMotion
G 66.1 CallNCMacroBlock
NOTE: The name is now always the argument for the action defined with the M98,
G65, G66, or G66.1. When the Name is set, the subroutine name type is also set, which is
then used by the CallSub, CallNCMacro, CallNCmacroMotion, and CallNCMacroBlock
macros.
See "Notes about Subroutine Names – Numeric vs Text" in the Notes about Special
Topics section, in the CGTech Help Library for additional information.

SubroutineNameText
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Text
Use the SubroutineNameText macro to set the subroutine name that is used by the
CallNCMacro and CallSub macros.
This macro also sets the subroutine name type to be TEXT.
See "Notes about Subroutine Names – Numeric vs Text" in the Notes about Special
Topics section, in the CGTech Help Library for additional information.

SubroutineParsingOptions
Function — SUBROUTINES
Status — ACTIVE
Comments — Added 7.1
Valid Inputs — Value
This macro enables the the use of special subroutine parsing options/logic. This macro
would typically be called during the "Start of Processing" event. Because of the extra
checks that are made, enabling the special parsing logic will slow down the parsing
process. It is therefore recommended that this macro only be used when it is known that it
is required based on the subroutine names that are used, and the control that is being
used.
Based on the input value, the following options are supported:
1 = If the Word "SubroutineName" exists, then for every word found during parsing,
if the next character is an alphabetic character, check if the entire string up to the
next white space matches an existing subroutine name. (Default)
2 = If the Word "SubroutineName" exists, then for every word found during parsing,
check if the entire string up to the next white space matches an existing
subroutine name. This means that for the line X1Y2Z3, VERICUT will check if
"X1Y2Z3", "Y2Z3", and "Z3" are existing subroutine names.
SubroutineSequence
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
Similar to the Sequence macro for jobs defined as a single pass. On multi-pass jobs, the
current location within the file is marked during the first pass as the beginning of a
subroutine.

SubroutineSequenceEnd
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Text, Value
This routine is identical to SubroutineSequence except it also marks the previous
subroutine, if any, as ended.
NOTE: A new routine was created to avoid causing problems with existing customers
where SubroutineSequence was being called for something other than the start of a
subroutine.

SubSpindleTransform
Function — MISCELLANEOUS
Status — OBSOLETE
Comments — This macro is no longer supported.
Valid Inputs — None
Causes a VERICUT/MATRIX command to be processed based on the auto-calculated
offset for the sub-spindle.
NOTE: This is a special purpose macro designed for use with pre-5.0 VERICUT
simulating a custom INDEX mill-turn NC machining center, and is NOT intended for
general use.

SubStartingSeq
Function — SUBROUTINES
Status — ACTIVE
Valid Inputs — Value
Use the SubStartingSeq macro to set the starting sequence number for a call into a
subroutine.
Also see: SubEndingSeq
SubsystemActivateTool
Function — ACTIVATION
Status — ALTERNATE
Comment — Use ActivateToolSubsystem
Valid Inputs — None
Activates the tool associated with the current subsystem. This command sets the active
tool based on the first tool it finds given the current subsystem. This command is
integrated with the Sync logic. This command should not be used if more then 1 tool
could exist for a given subsystem.

SurfaceSpeed
Function — FEEDS & SPEEDS
Status — ACTIVE
Valid Inputs — Value
Use the SurfaceSpeed macro to specify that the part spindle RPM's will be set such that
the surface speed of the tool will remain constant at the given rate. The rate is specified as
Feet Per Minute or Meters Per Minute.

SuspendCutting
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
The SuspendCutting macro stops the normal processing of the current block. This means
that cutting and positional updates will not occur.

Sync
Function — SYNC
Status — RENAMED
Comment — Renamed to: SyncMacro.

SyncCode
Function — SYNC
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
The SyncCode macro sets the current Sync value. This value is used by the SyncId
macro to cause the current head (also known as subsystem, program, system, or channel)
to wait until the specified head reaches the corresponding Sync value.
Previous macros like SyncMacro and SyncValue were based on a 2 sync head only
scenario. These macros caused a wait until the "other" head reaches a corresponding spot.

SyncId
Function — SYNC
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Causes the current head (also known as subsystem, program, system, or channel) to wait
until the specified head (specified as an index value; 1 to n) reaches the corresponding
Sync value. The Sync value needs to be set prior to this call. This Sync value is set by
calling the SyncCode macro.

SyncIds
Function — SYNC
Status — ACTIVE
Comment — Added V6.0.1
Valid Inputs — Value
Causes the current head (also known as subsystem, program, system, or channel) to wait
until the specified heads (specified as an index value; 1 to 9) reaches the corresponding
Sync value. This macro is called with a list of Sync IDs for its numeric value. For
example: 123 would sync heads 1, 2, and 3. Any Sync ID corresponding to itself would
be ignored. The Sync value needs to be set prior to this call. This Sync value is set by
calling the SyncCode macro.

SyncMacro
Function — SYNC
Status — ACTIVE
Valid Inputs — Text
SyncMacro causes the active head to wait at the current location until the other head
reaches the corresponding sync location.
If a text value of "ALL" is passed, the current input channel will sync with all other input
channels.
SyncMismatchHandling
Function — SYNC
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Head with lower sync value continues on
1 = Produce an error message and stop
This macro determines how a SyncValue mismatch should be handled. The default is to
have the head with the lower value continue on.

SyncTransfer
Function — SYNC
Status — ACTIVE
Valid Inputs — None
Causes the controlling/slave heads to swap.

SyncValue
Function — SYNC
Status — ACTIVE
Valid Inputs — Text, Value
The SyncValue macro sets the current Sync value. This will cause the current head to
wait until the other processes a Sync value that is greater than, or equal to, the specified
value. If a text value of "ALL" is passed, the current input channel will sync with all
other input channels.

SyntaxErrorOption
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0.2
Valid Inputs — Value
Value: use to activate or cancel the features of this macro.
0 = Cancel
1 = Activate
This macro allows controlling detection and output of error messages during the parsing
process of an input mcd code. This feature is designed for specific controls where the
NC code is not conventional.
Value = 0: Cancels detection and output of error messages controlled by this macro
(Default)
Value = 1: Activates the detection and output of the error message in cases where an
assignment is detected without an assign token.
This macro can be expanded in the future to control other types of errors detected during
the parsing process.
See also: SetPreProcessorType

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

TableIndex
Function — TABLES
Status — ACTIVE
Valid Inputs — Value
Use to set the index/register number of the table entry to be modified. Used with
SetTableValues and SetTableCoord. Default is 1. Use the Override Value field to specify
the table index number. TableIndex must be called before calling SetTableValues.

TableSubRegisterValue
Function — TABLES
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
Use to set the SubRegister value that is used with Tables. Currently, this is only used with
the Work Offset tables. The default is 1. This value is modal. This value will be used
with the following macros:
AdditionalWorkCoord
SecondaryRefWorkCoord
SecondaryWorkCoord
SetAbsWorkCoord
SetAdditionalWorkCoord
SetAdditionalWorkCoordNonModal
SetIncWorkCoord
SetWorkCoord
WorkCoord

TableValues
Function — TABLES
Status — ACTIVE
Valid Inputs — Value
This macro can be called up to nine times to store nine values. Used with the macro
SetTableValues. TableValues must be called before calling SetTableValues.
TangentialAngle
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
This macro defines the angle for a line/circle movement and must be used for a "CCA"
word.

TangentialCapture
Function — Tangential Approach and Exit
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Capture off
1 = Capture on
This macro turns off/on the action record storing capability needed for the Tangential
logic. This macro must be called after the ConversionInit macro and before any other
Tangential macros are called. It is recommended that this macro be called from the Start
of Processing event.

TangentialControlType
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Value
0 = Generic control type (default)
1 = Siemens control
This macro sets the control type. This macro must be called after the ConversionInit
macro. It is recommended that this macro be called from the Start of Processing event.

TangentialInit
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Approach (Default)
1 = Exit
This macro defines the type of tangential move (approach or exit) to be generated. The
default is 0 (approach).
TangentialMethod
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Line and Circle (Default)
1 = Quarter Circle
2 = Semicircle
3 = Helix for feeding
4 = Parallel to contour
5 = Vertical
This macro defines the tangential method. The default is 0 (line and circle).

TangentialMovement
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Rapid
1 = Feed
This macro defines the movement, rapid or linear, for the first movement of a two
movement tangential case. The second movement is always a feed.

TangentialPolar
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = the contour point is in Cartesian coordinates
1 = the contour point is in Polar coordinates
This macro is used to specify whether the contour point, in the APPR statement, is in
Cartesian or Polar coordinates. Use the Tangential Polar macro with an Override Value
of "0" to indicate that the contour point is in Cartesian coordinates. Use the Tangential
Polar macro with an Override Value of "1" to indicate that the contour point is in Polar
coordinates, and therefore needs be converted to Cartesian coordinates. The
TangentialPolar macro must be called using a value of "1" for the words PLT, PLN,
PCT and PLCT.
TangentialRadius
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
This macro defines the radius of the circle for tangential method [0,1,2,3] and one half
length of segment for tangential method [4,5].

TangentialStartZ
Function — TANGENTIAL APPROACH AND EXIT
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
This macro defines the height of the start point of the approach movement.

TapeCacheCheck
Function — TAPE LAYING
Status — OBSOLETE
Comment — Added V6.1
Valid Inputs — None
The TapeCache... macros were written specifically for the Electroimpact (EI) tape
formatted data. Before laying the tape, a list is given which defines the point at which
specific tows are to be turned on. Macro TapeCachePoint defines the point. Macro
TapeCacheTows specifies the tows that are to be turned on at this point. Macro
TapeCacheCheck checks to see if the current XYZ point matches the next point in the
"cache" list, and if so, turns on the specified tows.
NOTE: This macro only needs to be called if running in SYNC mode.

TapeCachePoint
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
The TapeCache... macros were written specifically for the Electroimpact (EI) tape
formatted data. Before laying the tape, a list is given which defines the point at which
specific tows are to be turned on. Macro TapeCachePoint defines the point. Macro
TapeCacheTows specifies the tows that are to be turned on at this point. Macro
TapeCacheCheck checks to see if the current XYZ point matches the next point in the
"cache" list, and if so, turns on the specified tows.
TapeCachePoint is passed a text value of "X", "Y", or "Z". This defines the coordinate
being passed.
TapeCacheTows
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
The TapeCache... macros were written specifically for the Electroimpact (EI) tape
formatted data. Before laying the tape, a list is given which defines the point at which
specific tows are to be turned on. Macro TapeCachePoint defines the point. Macro
TapeCacheTows specifies the tows that are to be turned on at this point. Macro
TapeCacheCheck checks to see if the current XYZ point matches the next point in the
"cache" list, and if so, turns on the specified tows.
TapeCacheTows subtracts 10000 from the value passed, and the resulting number is
then converted into binary. Each bit that is on corresponds to that Tow being turned on.
Therefore, a value of 10001 turns on the first tow on the right, and a value of 10003 turns
on the first two tows on the right.

TapeCourseTValue
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Value
This macro is used to define the course T Value, a parametric parameter that states how
far along the course we are. This is typically used with the pre-definition of when tows
are to be turned on and off.

TapeDensity
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
Although density is usually specified in units of weight/volume, this macro is expecting
the density to be specified in inches/pound (if the system units are inch), or mm/kg (if the
system units are mm). This value is used to display statistics on the weight of the tape
that has been laid. The default is 9552 in/lb. No unit conversion is made on this value.
The input values should be based on system units.
TapeHead
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text
This macro causes the statistics to now be applied to the head specified in the text field. If
this head has not previously been used, the head statistics will be initialized to default
values.
NOTE: Make sure the default values are set prior to calling this macro.

TapeHeadOnOff
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — value
Any value other than 1 = Off (Default)
1 = On
This macro was written specifically for the Electroimpact (EI) tape formatted data. A
value of 1 indicates that the Tape Head is in the "ON" state. Any other value marks the
Tape Head in the "OFF" state. The default is "OFF".

TapeHeadService
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — None
This macro causes the following statistics to be reset.
1. The number of cuts on this head since the last service.
2. The time since the last service (the time laying tape and traversing).
3. The time laying tape since the last service.
NOTES:
1. These statistics are kept on both the head and each tow. Both the head and tow
statistics are reset by this command.
2. This macro does not cause the tape to be reloaded. See TapeReloadTow and
TapeReloadAllTows.
TapeInitialLength
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro sets the default tape length. It is used when the TapeHead macro is called for
a new head, and when macro TapeReloadAllTows,or TapeReloadTow, is called. It is
used to track how much tape is left, and to cause an error and stop if you run out of tape.
Units are in either inches or mm. The default is 53712 inches (6 lb roll at 796 ft/lb).

TapeLayer
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro specifies the current tape layer.

TapeMTorresCourseID
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Value
This macro is used to define the course ID. This macro is specific to MTorres because it
is also being used to match up with the "tape_id" field in the corresponding Tow File.

TapeMTorresTowInv
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Value
By default, Tow 1 on the MTorres machine, is the right most tow when looking behind
the head in the direction of motion. This macro, when passed a value of 1, reverses the
order so that Tow 1 is the left most tow.
NOTE: When displaying Tow statistics, Tow 1 is always the left most tow. This macro
has no effect on this display. This macro is strictly used to interpret the input.
TapePath
Function — TAPE LAYING
Status — OBSOLETE
Comment — See macros TapeLayer and TapePly.
Valid Inputs — Text, Value
This macro was used early on and is now obsolete.

TapePly
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text
The ply is specified as a text value. This macro sets the current tape layer based on the
ply. The syntax of the ply must be in the form: aaaxxxbbb, where aaa represent non-
numeric values, xxx represent the numeric layer number, and bbb represents an identifier
for the ply, starting with a non-numeric value.
NOTE: This macro only uses the layer number.

TapeProjectOnOff
Function — TAPE LAYING
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
0 = Off
1 = On (Default)
This macro is used to turn On/Off the projection of tape onto the form or previous
material surface to support tape laying in the air, for example when creating restraining
bands. When an Override Value of "0" is used, tape is applied at the tool point and is not
projected to the form or previous material surface. Projection errors are not reported.
When an Override Value of "1" is used, the default, tape is projected to the form or
previous material surface.

TapeReloadAllTows
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — None
This macro causes the remaining length for all tows on the current head to be reset to the
default initial length. The head should be loaded, and the default initial length set prior to
calling this macro. See macros TapeHead and TapeInitialLength.
TapeReloadTow
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro causes the remaining length to be reset to the default initial length for the
specified tow. The tow is numbered 1-n starting with the left tow as seen from looking
down the tool axis while riding on the tool and positive X is on your right. To specify a
different length for each tow, call the macro TapeInitialLength prior to each call to this
macro.
NOTE: The head needs to be loaded prior to the call to this macro. See macro
TapeHead.

TapeSetCourse
Function — TAPE LAYING
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text
text value = name for the course
This macro will set the course name specified as the argument. This value is used and
shown in X-Caliper 'Information' and 'Tow Packet'. If this macro is not called for the
course, X-Caliper will not show the value.

TapeSetNewLayer
Function — TAPE LAYING
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
0 = increment layer by 1
Any other value = set layer number to value
This macro is only applicable if the Set Layer by NC Program feature is toggled "on"
(checked) on the Project Tree, Configure Setup: Motion tab. The layer in this context is
used for the color of the tape in Edit > Color and the "Layer :" value shown in X-
Caliper.
TapeSetPlyAngle
Function — TAPE LAYING
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Value
value = ply angle in degrees
valid inputs = 0, 45, 90, and -45 degrees Any other value will be ignored.
This macro will set the ply angle of the current layer. This value is used and shown in X-
Caliper 'Laminate Stack'. If this macro is not called for the layer, X-Caliper will not show
the value.

TapeSetSequenceID
Function — TAPE LAYING
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text
text value = name for the sequence id
This macro will set the sequence id specified as the argument. This value is used and
shown in X-Caliper 'Information' and 'Tow Packet'. If this macro is not called for the
sequence, X-Caliper will not show the value.

TapeThickness
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro specifies the tape thickness. The default is .0074 inches.

TapeTotalTows
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro specifies the total number of tows. The default is 12. This should be set prior
to calling the TapeHead macro.
TapeTowOff
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text, Value
If passed a text argument of "ALL", this macro will turn off all tows. Otherwise, it will
turn off the specified numbered tow.

TapeTowOn
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text, Value
If passed a text argument of "ALL", this macro will turn on all tows. Otherwise, it will
turn on the specified numbered tow.

TapeTows
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text
This macro is passed a string in the format of: [1-5, 8-17, 25-31], which specifies which
tows are turned on. This macro turns on and off all tows based on the input text string.
NOTE: This macro is limited to 32 tows.

TapeTowSwitches
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text
This macro is passed bit switches in the format of: 00011111001 specifying which tows
are turned on and off. A "1" indicates on, a "0" indicates off. Leading zeros do not need
to be specified. The bit switch farthest to the right corresponds to tow 1 which
corresponds to tow on the far left when looking down the tool axis while riding on the
tool and positive X is on your right.
TapeTowWidth
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Value
This macro sets the tow width. The default is .25 inches.

ThreadWire
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — None
Thread the wire EDM wire. This will cause the Wire to be displayed within the simulator,
and a "PPRINT/VERICUT-TC" statement to be printed. The height for the cutter will be
set to the maximum length of the wire based off of the vertical distance between the
guides, and the maximum angle.

Tool3dOffset
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
Turns on 3D Tool Correction to keep the tool tangent with the cutting surface. The actual
tool offset will vary based on the vector which is normal to the part surface at each given
point. This type of tool offset can only be used with standard bull nose and ball nose
cutters.
Also see: PartNormalX, PartNormalY, PartNormalZ, ToolVectorX, ToolVectorY,
ToolVectorZ, and Cancel3dToolOffset

Tool3dXOffset
Tool3dYOffset
Tool3dZOffset
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
These 3 macros are used to set the 3D offset in the X, Y, and Z directions, respectively.
This is a form of cutter compensation where the offset can be in 3D, and is specified
directly in the NC program file.
NOTE: These macros are not related to Tool3dOffset.
Also see: CutterComp3d, Unitize3DVector, and CutterCompOff
ToolChainExchange
Function — TOOLING
Status — ACTIVE
Valid Inputs — None
Unloads the tool currently in the spindle (if one is loaded), then loads the selected tool
from the toolchain into the machine's spindle. The unloaded tool is either placed in the
pocket just emptied by the new tool, or replaced into its original toolchain position
depending on the setting of Replace tool in its original pocket in the Toolchain window
(ref. Toolchain window the VERICUT Help section, in the CGTech Help Library).
If a ToolChainExchange macro is used before the amount of time to move the chain has
elapsed, then the chain is moved and the total job time is increased by the remaining time
required to position the toolchain. When the time to reposition the chain has elapsed
before the exchange occurs, the time to reposition the chain is not counted against the
total job time.
ToolChainExchange normally corresponds to the machine's tool load (M6) code.
NOTE: The ToolChainExchange macro DOES NOT provide any motion of tool
exchanger arms or components. It simply loads the selected tool into the spindle and
attaches the unloaded tool to the toolchain pocket.
Also see: ToolChainMotion, ToolChainFromCompName, ToolChainToCompName, and
UnloadToolToCompName.

ToolChainFromCompName
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text
Removes the tool from the specified component and attaches it to a toolchain pocket.
This toolchain pocket is either the pocket from which the selected tool was just loaded or
the tools original pocket, depending on the setting of Replace tool in its original pocket
in the Toolchain window (ref. Toolchain window the VERICUT Help section, in the
CGTech Help Library).

ToolChainMotion
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
Moves a selected tool in the chain to the exchange position. When a tool is selected by
calling macro ToolChainMotion, the time to move the toolchain is calculated using the
shortest direction of chain motion. The toolchains display is updated when cutting
motions have used the amount of time or when a command to load the selected tool is
processed. The ToolChainMotion macro normally corresponds to the controls T-code.
The macro ToolCode should be used before calling ToolChainMotion.
Also see: ToolChainExchange

ToolChainToCompName
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text
Removes the selected tool from the toolchain pocket and attaches it to the tool
changer component specified by the text override. Macro ToolCode should be used
before calling ToolChainToCompName to select the new tool.

ToolChange
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, None
When the modal Tool Number Method = Select Only (ref. Control Settings window:
Tooling tab in the Configuration menu section of VERICUT Help), unloads the current
tool (if one exists) and loads the new tool.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

ToolChangeAlpha
Function — TOOLING
Status — ACTIVE
Valid Inputs — None
Identical to macro ToolChange, except uses the Tool ID set by the macro
ToolCodeAlpha.
ToolChangeAlphaIfDifferentMachineSubroutine
Function — TOOLING
Status — ACTIVE
Comment — Added V7.1.2
Valid Inputs — Text, Value
Calls the ToolChangeAlphaMachineSubroutine macro only when the new tool id is
different from the current tool id.The new tool id is typically set with the ToolCodeAlpha
macro. The current tool id is based on the tool loaded in the current active tool
component.

ToolChangeAlphaMachineSubroutine
Function — TOOLING
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = the tool change G-Code (i.e. M6)
This macro is identical to the ToolChangeMachineSubroutine macro, except that it uses
the Tool ID set by the macro ToolCodeAlpha. When this macro is called (with M6 for
example), VERICUT will search for a subroutine named "toolchangealpha" in all
subroutine lists (Project Tree, Machine Settings window, Advanced Control Options
window, in that order). As soon as a subroutine named "toolchangealpha" is found, then
the subroutine will be executed.
Also see: ToolChangeMachineSubroutine

ToolChangeByToolNum
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, None
VERICUT executes a tool change based on the tool number set by the ToolCode macro.
This macro is identical to the ToolChange macro except that this macro will NOT
reference the Tool List.
NOTE: The Tool Number Method must be set to "Select Only" (ref. Control Settings
window: Tooling tab in the VERICUT Help section, in the CGTech Help Library ) for a
tool change to occur with this macro call.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.
ToolChangeIfDifferent
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
Calls the ToolChange macro only when the new tool number is different from the current
tool.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

ToolChangeIfDifferentMachineSubroutine
Function — TOOLING
Status — ACTIVE
Comment — Added V7.1.2
Valid Inputs — Text, Value
Calls the ToolChangeMachineSubroutine macro only when the new tool number is
different from the current tool. The new tool number is typically set with the ToolCode
macro. The current tool number is based on the last tool loaded.

ToolChangeMachineSubroutine
Function — TOOLING
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
Text = the tool change G-Code (i.e. M6)
When this macro is called (with M6 for example), VERICUT will search for a subroutine
named "toolchange" in all subroutine lists (Project Tree, Machine Settings window,
Advanced Control Options window, in that order). As soon as a subroutine named
"toolchange" is found, then the subroutine will be executed.
Also see: ToolChangeAlphaMachineSubroutine
ToolChangeNoRetract
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, None
Similar to ToolChange, except that the machine components will not retract to their tool
change locations.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

ToolChangeSave
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, None
Causes the previously saved tool number to be loaded.
See ToolCodeSave.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.

ToolCode
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
When the modal Tool Number Method = "Select Only" (ref. Control Settings
window: Tooling tab), set the new tool number to the input Override Value. But, when
"Select & Change" is the active choice, this macro sets the new tool number to the input
value and executes the corresponding tool change.
If the Override Text value = REPORT, then the macro will ONLY be executed during
the scan/report pass to get information needed to calculate tolerance, to build tool list, and
to generate reports. The macro will not, however, be executed during the run pass, which
means no tool will actually be loaded. This option will typically be used if a subroutine is
called to execute the tool change. It would be called in addition to the tool change
subroutine.
ToolCodeAlpha
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
Identical to ToolCode, except uses the text argument as the tool id rather than the
numeric argument as the tool number. Since this routine assumes the "tool code" is
alphanumeric, it sets the tool number to zero. This means that any feature in VERICUT
which references the tool number will not work.

ToolCodeSave
Function — TOOLING
Status — ACTIVE
Valid Inputs — None
Saves the current tool number.
Also see: ToolChangeSave.

ToolCutterComp
Function — CUTTER COMPENSATION
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Sets the cutter compensation amount for the current tool loaded in the active spindle. The
amount of cutter compensation is the value of the Cutter Compensation record saved with
the tool in the tool library. Each tool in the tool library can have multiple Cutter
Compensation records, each with a unique ID. The ID is input as a text string, but is
typically a numeric value. The numeric argument passed to this macro will be used to
match the Cutter Compensation ID in the tool library. For example, if D calls
ToolCutterComp with an argument of 15, then the value of Cutter Compensation ID
"15" is used as the cutter compensation amount. The default cutter comp value will either
be zero or the full radius of the tool depending on the setting of the Process Cutter
Comp option on the G-Code Settings window: Settings tab (ref. G-Code Settings
window: Settings tab in the VERICUT Help section, in the CGTech Help Library.
This macro DOES NOT use the Cutter Compensation table (ref. Cutter Compensation
table in the Tables for Processing G-Codes section, in the CGTech Help Library). It gets
the cutter compensation amount from the tool library file. If the Cutter Compensation ID
is not found, the Cutter Compensation value is zero, and no adjustment is made.
NOTE: This macro uses alpha-numeric Tool IDs and numeric Cutter Compensation
ID's.
See "Notes about Gage Offset and Cutter Compensation" in the Notes about Special
Topics section, in the CGTech Help Library, for additional information.

ToolLengthCompNeg
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — None
Sets the tool length offset mode to Negative.
Also see: GageOffsetDrivenPoint

ToolLengthCompOff
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — None
Turns off the tool length offset.
Also see: GageOffsetDrivenPoint

ToolLengthCompPos
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — None
Sets the tool length offset mode to Positive.
Also see: GageOffsetDrivenPoint

ToolLengthCompToolNum
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — None
Uses the current tool number to index into the Tool Length Compensation table (ref. Tool
Length Compensation table in the Tables for Processing G-Codes section, in the
CGTech Help Library). The corresponding value is used as the compensation amount
when Tool Length Compensation is active.
Also see: ToolLengthCompToolNumSubValue.
NOTE: The current tool number refers to the tool number that is specified in the NC
program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the Tool Library
file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help Library),
which is a string.
Also see: GageOffsetDrivenPoint

ToolLengthCompToolNumSubValue
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — None
Uses the current tool number and the specified SubValue (SubRegister) to index into the
Tool Length Compensation table (see the Tables for Processing G-Codes section, in
the CGTech Help Library). The corresponding value is used as the compensation amount
when Tool Length Compensation is active.
Also see: ToolLengthCompToolNum.
NOTE: The current tool number refers to the tool number that is specified in the NC
program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the Tool Library
file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help Library),
which is a string.
Also see: GageOffsetDrivenPoint

ToolLengthCompUpdate
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — None
Updates the Tool Length Compensation amount. It assumes that Tool Length Comp
(pos/neg) has previously been turned on.
Also see: GageOffsetDrivenPoint

ToolLengthCompValue
Function — TOOL OFFSETS
Status — ALTERNATE
Valid Inputs — Value
Uses the input value to index into the Tool Length Compensation table (see the Tables
for Processing G-Codes section, in the CGTech Help Library). The corresponding value
is used as the compensation amount when Tool Length Compensation is turned on.
Also see: GageOffsetDrivenPoint
ToolLengthCompValueCombo
Function — TOOL OFFSETS
Status — ALTERNATE
Comments — Added V7.1.3
Originally intended for just the NUM controller
Valid Inputs — Value
Uses the input value to index into the Tool Length Compensation table (ref. Tool Length
Compensation Table in the Tables for Processing G-Codes section, in the CGTech Help
Library). The values for SubRegister 1 and SubRegister 2 will be added together and
used as the compensation amount when Tool Length Compensation is turned on.
NOTE: This macro only references the Tool Length Compensation table, and does not
reference the TLS file. Therefore, this macro, although new, is seen as OBSOLETE
except for the NUM control.
See ToolLengthCompNeg, ToolLengthCompOff, ToolLengthCompPos, and
ToolLengthCompUpdate as ways to turn Tool Length Compensation on and off.

ToolLengthCompValueDirect
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
Sets the Tool Length Compensation value to the specified input value. The value is used
as the compensation amount when Tool Length Compensation is turned on.
ToolLengthOffsetValue
Function — TOOL OFFSETS
Status — SPECIAL
Valid Inputs — Value
Sets the tool offset value based off of the corresponding entry in the Tool Length
Compensation table (ref. Tool Length Compensation Table in the Tables for
Processing G-Codes section, in the CGTech Help Library). This value is modal.

ToolNoseCompApply
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — No longer needed.
Valid Inputs — None
This macro is no longer functional as of V6.0. If called, it will produce the following
warning message: "Macro ToolNoseCompApply is obsolete in V6.0".
NOTES:
1. ToolNoseComp will be automatically applied when cutter compensation is
applied with a non-zero value.
2. The amount of the ToolNoseComp will typically be set automatically based on
the tool definition. This value is set when the gage offset is retrieved from tool
definition. This value can be overridden by calling macros ToolNoseCompValue,
ToolNoseCompToolNum, or ToolNoseCompToolNumSubValue.

ToolNoseCompCancel
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — None
Turns off tool nose compensation.

ToolNoseCompToolNum
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — None
Uses the current tool number to index into the Tool Nose Compensation table (see the
Tables for Processing G-Codes section, in the CGTech Help Library), which then
specifies the XYZ tool nose compensation that is to be applied. These values are typically
only active while in cutter compensation mode.
NOTE: The current tool number refers to the tool number that is specified in the NC
program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the Tool Library
file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help Library),
which is a string.
Also see: ToolNoseCompToolNumSubValue

ToolNoseCompToolNumSubValue
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Value
Uses the current tool number and the specified SubValue (SubRegister) to index into the
Tool Nose Compensation table (see the Tables for Processing G-Codes section, in the
CGTech Help Library). The corresponding values are used as the XYZ tool nose
compensation that is to be applied. These values are typically only active while in cutter
compensation mode.
NOTE: The current tool number refers to the tool number that is specified in the NC
program file (T1M6, T0101, &), NOT to the Tool Id that is specified in the Tool Library
file (ref. Tool Library file in the VERICUT Help section, in the CGTech Help Library),
which is a string.
Also see: ToolNoseCompToolNum

ToolNoseCompValue
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Value
Specifies the index into the Tool Nose Compensation table (ref. Tool Nose
Compensation table in the Tables for Processing G-Codes section, in the CGTech Help
Library), which then specifies the XYZ tool nose compensation that is to be applied.
These values are typically only active while in cutter compensation mode.

ToolOffsetAptAdj
Function — TOOL OFFSETS
Status — OBSOLETE
Comment — Use GageOffsetDrivenPoint
Valid Inputs — None

VERICUT workpiece view does not support the concept of multiple driven points for a
given tool. However, machine views do. This macro allows Gage Offset table (ref. Gage
Offset table in the Tables for Processing G-Codes section, in the CGTech Help Library)
to drive a secondary offset on the tool, while the tool position is still based on the driven
point defined by the Tool Library file. The Gage Offset is calculated by:
GAGEPOINT_OFFSET - DRIVENPOINT_OFFSET.

ToolOffsetAptAdj2
Function — TOOL OFFSETS
Status — REPLACED
Comment — Replaced by ToolOffsetAptAdj.
Valid Inputs — None
No longer used. If this macro is found in an NC control configuration, it is automatically
replaced with ToolOffsetAptAdj.
NOTE: ToolOffsetAptAdj has since become obsolete and should be replaced by
GageOffsetDrivenPoint.
ToolOffsetIndex
Function — TOOL OFFSETS
Status — NOT RECOMMENDED
Comment — Use GageOffsetDrivenPoint
Valid Inputs — Value
Specifies the entry in the Gage Offset table (ref. Gage Offset table in the Tables for
Processing G-Codes section, in the CGTech Help Library) that is to be used to specify
the distance from the driven point of the tool to the spindle face. This macro will need to
be called to actually update the offset.

ToolOffsetRegisterName
Function — TOOL_OFFSETS
Status — ACTIVE
Comment — Added V6.2.1
Valid Inputs — Text
Typically, a tool has a Z offset, and this offset is applied to the first component that
travels along the Z axis, starting at the Tool, going up to the Base, and then back down to
the Stock. If this is not the proper component to apply the Z offset, then
ZToolOffsetCompName macro can be called to specify the proper component directly.
This macro has been created as an alternative way to specify the component in which a
tool offset should be applied.
Typically, the input text value will be a register (X, Y, Z, U, V, W). The software will
then look to see which axis the corresponding component travels along.
NOTE: The register corresponds to the "Component Type" within a Component.
If a text value of "V" is specified, and V moves along the Z axis, then Z tool offsets will
be applied to the V component.
NOTE: This macro can be used to set the corresponding X, Y, and Z offset
components.
If a text value of "RESET" is specified, the direct specification of the Tool Offset
Components for X, Y, and Z, will be deleted, and the software will search for the first
corresponding component up from the Tool.
Also see: XToolOffsetCompName, YToolOffsetCompName, and
ZToolOffsetCompName.
ToolOffsetUpdate
Function — TOOL OFFSETS
Status — NOT RECOMMENDED
Comment — Use GageOffsetDrivenPoint
Valid Inputs — Value
Updates the gage offset based off of the register value specified by the ToolOffsetIndex
macro. VERICUT first checks for a corresponding entry in a Gage Offset table (ref. Gage
Offset table in the Tables for Processing G-Codes section, in the CGTech Help Library).
Otherwise, if the specified register value is non-zero it uses the gage offset defined for the
tool in the Tool Library. If the gage offset is (0,0,0) and the ApplyTurretOffset macro
value is 2, the turret offset is also cleared.

ToolOffsetUpdate2
Function — TOOL OFFSETS
Status — REPLACED
Comment — Replaced by ToolOffsetUpdate.
Valid Inputs — Value
No longer used. If ToolOffsetUpdate2 is found in an NC control configuration, it is
automatically replaced with ToolOffsetUpdate.
NOTE: ToolOffsetUpdate is no longer recommended and should be replaced by
GageOffsetDrivenPoint.

ToolRetract
Function — TOOLING
Status — ACTIVE
Valid Inputs — None
Retract the tool along its tool axis. If the ToolRetractDistance macro value is (>=0), it
will retract this distance or until the first axis limit is reached. If the
ToolRetractDistance value is negative, the tool will retract until one of the XYZ axes
reaches its axis limit.

ToolRetractDistance
Function — TOOLING
Status — ACTIVE
Valid Inputs — Value
Sets the tool retract distance (Override Value = distance to retract). A negative value
means to retract until one of the XYZ axes reaches its limit. This value is used with
macro ToolRetract. This value is modal. The default value is -1.
NOTE: To make the distance value non-modal, this macro can be called a second time
after motion with a value of -1.
ToolSideOffsetMultiplier
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V6.0.3
Valid Inputs — Text, Value
Sets a multiplier for the tool offset. It is intended to give the capability to inverse the
direction of the offset in case the internal calculation has it going the wrong direction.
The text value is used to specify which axis to apply the multiplier (X, Y, or Z). The
numeric value passed to this macro specifies the multiplier.
NOTE: This macro should only be used in rare situations as directed by CGTech
Technical Support.

ToolVectorX
ToolVectorY
ToolVectorZ
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
Use these 3 macros to set the X, Y, and Z components of the tool vector.
NOTE: These macros are redundant and may be deleted in the future.
Also see: Tool3dOffset

Touch
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Turns on "Move until you touch" for the current block. Default touch component is the
active tool (see TouchComponentName). The axes move until the touch component
arrives at the programmed location, or when the object contacts something.
If the Override Text value begins with "RETURN=", then the string following the equal
sign will be interpreted as a variable name in which the return code from the Touch
motion will be returned. A return code value of 1 means that a "hit" occurred and a return
code value of 0 means that a "hit" did not occur.
If four variable names are supplied then the first variable name will contain the return
code, and the next three variable names are used to return the X, Y and Z coordinates of
the contact point location in the stock coordinate system. The specified variable names
are modal. The variable does not need to be pre-defined.
NOTE: The Touch macro only supports linear axis motion.
TouchComponentName
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
text value = component name
Specifies the "Touch" component used by the Touch macro. Default is the active tool
component. Use this when moving a component such as a tail stock or steady rest into
"contact" with another component, such as the stock. Use the Override Text field to
specify the component name. The TouchComponentName must be specified prior to
calling the Touch macro.
The algorithm used approximates the hit location based on the current model tolerance
and other factors. When any portion of the touch component contacts any other
component, the axes are moved to that location. Standard collision logic is used to
determine if any other component hits something during the touch motion, but the motion
continues to the touch destination.
NOTE: The TouchStockComponent macro and TouchComponentName macro are
mutually exclusive. Calling the TouchComponentName macro, when the
TouchStockComponent macro is active, will automatically set the
TouchStockComponent flag to false.

TouchStockComponent
Function — MISCELLANEOUS
Status — ACTIVE
Comments — Added V7.1.2
Valid Inputs — Value
0 = get back the component defined by the previous call to
TouchComponentName
1 = set the flag for touch to stop if any component, touches any stock component,
while moving
Calling this macro with an Override Value of 1 will set the flag to have touch stop if any
component, touches any stock component, while moving.
Calling this macro with an Override Value of 0 will get back the component defined by
the previous call to the TouchComponentName macro to be the interested component for
touch.
NOTE: The TouchStockComponent macro and TouchComponentName macro are
mutually exclusive. Calling the TouchComponentName macro, when the
TouchStockComponent macro is active, will automatically set the
TouchStockComponent flag to false.
TravelLimitErrorReporting
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
Value = error reporting mode
0 = error reporting for all motion (Default)
1 = no error reporting for rapid motions
Use to define the travel limit error reporting mode. An override value of "0" produces
error reporting for all motion (default). An override value of "1" prohibits error reporting
during a rapid motion.

TravelLimitGroup
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
value = group ID
Use to specify the travel limits group to activate. (ref. to G-Code settings window:
Travel Limits tab, in the VERICUT Help section, in the CGTech Help Library).

TriceptDriveCenterpost
Function — MISCELLANEOUS
Status — SPECIAL
Comment — Added V6.1
Valid Inputs — Text, Value
0 = tool tip mode (Default)
1 = center post mode
This macro is specific to the new Tricept machine. This machine has 2 modes in which it
can be driven. The default mode is by specifying the XYZ of the tool tip, and a fictitious
ABC angle. The second mode is by driving the center post directly. This macro is used to
switch between these 2 modes. A value of 1 switches to center post mode, and a value of
zero switches to the default tool tip mode.
TripodArmLength
Function — MISCELLANEOUS
Status — SPECIAL
Comment — Added V6.1
Valid Inputs — Value
This is a special macro created for the Tripod machines. This macro specifies the distance
from the center of the tool platform to a ball joint.
NOTE: The distance to each of the ball joints must be the same.

TripodRodLength
Function — MISCELLANEOUS
Status — SPECIAL
Comment — Added V6.1
Valid Inputs — Value
This is a special macro created for the Tripod machines. This macro specifies the distance
of the rods that connect the tool platform to the machine.
NOTE: The length of each rod must be the same in order to get proper simulation.

TurnOnOffCompTravelLimits
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text, Value
Text = component
Value:
1 = turn travel limit checking On
Any other value = turn travel limit checking Off
This macro gives the capability to turn off travel limits for the specified component. The
default is to adhere to the travel limit settings on the G-Code Settings window, or
Machine Settings window: Travel Limits tab. A value of 1 restores this setting, any other
value turns travel limit checking off.
For travel limits to be checked, the Overtravel Detection On switch must be toggled
"on", the component Ignore switch must be toggled "off" (ref. G-Code Settings
window: Travel Limits tab, or Machine Settings window: Travel Limits tab, in the
VERICUT Help section, in the CGTech Help Library), and this switch must be on.
Specify the component in the Override Text field.
TurnOnOffGageOffset
Function — TOOL OFFSETS
Status — ACTIVE
Comment — This macro is intended to replace ApplyGageOffset
Valid Inputs — Text, Value
Text
IMMEDIATE = immediately apply or cancel the offset
Value
0 = Off (Default)
Any other value = On
This macro is intended to be used when in Tool Length Compensation Mode. A numeric
value of "0" turns "Off" the Gage Offset. Any other value turns "On" the Gage Offset.
The default is to not apply the gage offset when in Tool Length Compensation Mode.
Example:
G43 calls TurnOnOffGageOffset with Override Value = "1" (to turn on the gage
offset)
G49 calls TurnOnOffGageOffset with Override Value = "0" (to turn off the gage
offset)
Enter IMMEDIATE in the text field to immediately apply or cancel the offset. Using this
option causes the change in offsets to take place immediately, which then causes motion,
even if there is no motion axis being programmed on the block.

TurnOnOffGagePivotOffset
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
Text
IMMEDIATE = immediately apply or cancel the offset
Value
0 = Off (Default)
Any other value = On
This macro turns On/Off the offset from the Tool component to the rotary pivot point. A
value of "0" turns "Off" this offset, and any other value turns "On" this offset. The
default is to not apply this offset.
Enter IMMEDIATE in the text field to immediately apply or cancel the offset. Using this
option causes the change in offsets to take place immediately, which then causes motion,
even if there is no motion axis being programmed on the block.
The rotary pivot point is defined as the origin of the first parent rotary (if there is only
one), or the intersection of the axes of the first 2 rotary components up from the tool (if
there are more than one tool side rotary component). If there are two (or more) parent
rotary components and the axes do not intersect, the rotary pivot point is defined as the
second parent rotary.
This feature can be used with RTCP. When used with RTCP, this Gage Pivot Offset will
be used rather then the RTCP Pivot Offset. Being in RTCP mode is not a requirement to
activate this offset. This feature can now be used rather than using the ApplyTurretOffset
macro.
The TurnOnOffGagePivotOffset approach is the preferred method for handling the tool
to pivot offset. It has many advantages over the traditional approach. The advantages are
all associated with the new approach establishing a "relational" offset between the pivot
point and the current active tool component origin.
As described above, this approach assumes a specific pivot point based on the machine
configuration. In some cases, this pivot point might not be the pivot point that you want
to define. In these instances use PivotOffsetCompName to define the component
containing the desired pivot point.
In addition, this approach also assumes the offset to be between the pivot point and the
current active tool component origin. In some cases, the current active tool component
origin might not produce offset from the pivot point that you want to define. In these
instances use PivotOffsetCompNameB to define something other than the active tool
component origin.
NOTE: It is expected that the TurnOnOffGagePivotOffset macro will replace the
ApplyGagePivotOffset and the ApplyGagePivotOffsetCurrent macros.

TurnOnOffMessage
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0.2
Valid Inputs — Text, Value
This macro gives the capability to turn off messages that are displayed within VERICUT.
The text field specifies the native text tag of the message. A value of zero turns the
message off, and a value of 1 turns the message on. Currently "CmsZeroRadiusCircle:
ignoring circle statement with zero radius" is the only message that is supported. To turn
this message this message off, call:
TurnOnOffMessage with a Text Value of CmsZeroRadiusCircle, and a value of 0.
NOTES:
1. Message is listed in the non-english resource files (VcRes.local). The format is:
"native text tag":"message".
2. Although this macro can be called anywhere, it will typically be called during the
Start of Processing event.
TurnOnOffRealTimeClock
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
0 = Off (Default)
any other value = On
Turns on and off a real time clock. A value of zero turns the clock "Off". All other values
turn the clock "On". The default is "Off". If the clock is turned on, the real time will be
calculated for each block. The time to process the block will be stored in the variable
CGT_REAL_TIME. The units of the variable will be in seconds. The concept is to
support the following type of NC program logic:
#3001 = 0
While (#3001 < 2000) DO1
END1
The above loop would sit and wait for 2000 milliseconds.
IF #3001 was tracking milliseconds, then the following should be added to the "End of
Block Processing" event (after BlockFinish).
Variable 3001 = #3001 + (#CGT_REAL_TIME * 1000)
NOTE: The TurnOnOffRealTimeClock macro may produce different results in
VERICUT depending on whether the simulation plays continuously or you "single step"
through the simulation. This is because the macro represents the real processing clock of
the machine. When the simulation plays continuously, 10, 15 or more blocks of code
could be processed in a millisecond. When single stepping block by block, only 1, 2 or
possibly 3 blocks per second will be processed. As a result, the actual time recorded can
be very different.

TurnOnOffSubsystemTravelLimits
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text, Value
Text = subsystem ID
Value
1 = turns travel limit checking On (Default)
Any other value = turns travel limit checking off
This macro gives the capability to turn off travel limits for all components within the
specified subsystem. The default is to adhere to the travel limit settings on the G-Code
Settings window, or Machine Settings window: Travel Limits tab. A value of 1 restores
this setting, any other value turns travel limit checking off.
For travel limits to be checked, the Overtravel Detection On switch must be toggled
"on", the component Ignore switch must be toggled "off" (ref. G-Code Settings
window: Travel Limits tab, or Machine Settings window: Travel Limits tab, in the
VERICUT Help section, in the CGTech Help Library), and this switch must be on.
Use the Override Text field to specify the subsystem ID.

TurnOnOffTravelLimits
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
1 = turns travel limit checking On (Default)
Any other value = turns travel limit checking off
This macro gives the capability to turn off travel limits for all components within the
current subsystem. The default is to adhere to the travel limit settings on the G-Code
Settings window, or Machine Settings window: Travel Limits tab. A value of 1 restores
this setting, any other value turns travel limit checking off.
For travel limits to be checked, the Overtravel Detection On switch must be toggled
"on", the component Ignore switch must be toggled "off" (ref. G-Code Settings
window: Travel Limits tab, or Machine Settings window: Travel Limits tab, in the
VERICUT Help section, in the CGTech Help Library), and this switch must be on.

TurretActivateTool
Function — TOOLING
Status — OBSOLETE
Comment — Use TurretToolChange
Valid Inputs — Text, Value
he specified tool index as the active tool, Updates the status window to reflect status for
the active tool, and initializes the turret offset.
NOTE: APT output for reverse postprocessing is generated from the active tool.
DO NOT call this macro using the Word/Address function (ref. Word/Address window
in the VERICUT Help section, in the CGTech Help Library). Instead, use the
TurretToolChange macro as it automatically calls all macros needed to change tools
connected to Turret components.

TurretIndex
Function — TOOLING
Status — OBSOLETE
Comment — Use TurretToolChange
Valid Inputs — Value
Rotates the turret so that the specified tool index number is in cutting position. This
macro will then search for a tool with the specified index number (index number only
applies to tools that are connected to a turret). If an entry exists for the specified tool
index in the Turret Rotations table (ref.Turret Rotations table in the Tables for
Processing G-Codes section, in the CGTech Help Library), the corresponding value will
be used as the absolute angle of this tool. If an entry does not exist, the angle will be
calculated based off of the XAXIS/ZAXIS matrix for the associated tool. The register
name of the corresponding turret will be used to rotate the turret into position. The
Rotary control settings determine the direction (CW, CCW) of motion. While the turret
is being rotated, no APT will be generated. An APT GOTO will be generated at the final
position.
DO NOT call this macro using the Word/Address function (ref. Word/Address window
in the VERICUT Help section, in the CGTech Help Library). Instead, use the
TurretToolChange macro as it automatically calls all macros needed to change tools
connected to Turret components.

TurretLoadTool
Function — TOOLING
Status — OBSOLETE
Comment — Use TurretToolChange
Valid Inputs — Value
For a turret, a tool is not actually "loaded", but instead is indexed for cutting. This macro
is used with turret machines and does the following: cancels cycles (if active), resets the
motion type to "Rapid", sets the machining type (Mill vs. Turn) based on the type of tool
loaded, and issues a LOADTL command to load the tool for cutting.
DO NOT call this macro using the Word/Address function (ref. Word/Address window
in the VERICUT Help section, in the CGTech Help Library). Instead, use the
TurretToolChange macro as it automatically calls all macros needed to change tools
connected to Turret components.

TurretRetract
Function — TOOLING
Status — OBSOLETE
Comment — Use TurretToolChange
Valid Inputs — None
Causes the Turret to retract to the tool_change retract position. All corresponding tool
change modals/table values are used to determine if the retract should actually occur,
which components should retract, and to what retract position.
DO NOT call this macro using the Word/Address function (ref. Word/Address window
in the VERICUT Help section, in the CGTech Help Library). Instead, use the
TurretToolChange macro as it automatically calls all macros needed to change tools
connected to Turret components.
TurretRotationOffset
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Value
This macro is used when a single tool connected to a Turret component is oriented in
multiple positions during the simulation. The macro specifies the delta angle between the
normal cutting position and the new cutting position. This angle is then used to cause
proper the Turret indexing.

TurretToolChange
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
When the specified Tool component, with the specified Tool Index value is found in the
NC machine configuration, VERICUT automatically calls the following macros:
TurretRetract, TurretIndex, TurretActivateTool, TurretLoadTool.
These macros are not called if the specified Tool component is already active, or if the
specified Tool component/ Tool Index value combination is not found.
This command is the recommended way of indexing a tool on a turret. It includes a call to
TurretActivateTool, which will set the active tool based on the current subsystem and the
specified Tool Index. This macro is integrated with the Sync logic.
NOTE: When reading a pre-5.1 Control file, The TurretToolChange macro will
automatically replace the above 4 macros, when the 4 macros are found together (in any
order). This is important, because the order of these 4 macros is now critical.

TurretToolChangeAlpha
Function — TOOLING
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Text
This macro searches all tools on the current turret (based on subsystem) for a tool with a
matching toolid (specified by the text value). If one is found, TurretToolChange will be
called with the corresponding Tool index number.
TurretToolChangeByToolNum
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
This macro searches all tools on the current turret (based on subsystem) for a tool with a
matching toolid (specified by the numeric value). If one is found, TurretToolChange will
be called with the corresponding Tool index number.

Type2Begin
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This macro was created to handle K&T Type II commands. This macro gets called during
the "Start of Type II command" events. This macro initializes a couple values, and
keeps track of the number of active Type II commands that are currently being processed.
Also see: Type2End

Type2BEQLabel
Function — TYPE2
Status — ACTIVE
Comment — BEQ does not use the standard text or numeric inputs.
It does, however, use other type II inputs.
Type II "Equal" logical-if true, then branch to a specified label. This macro expects three
Type2 arguments: 2 numeric and 1 text (in any order). It will compare the 2 numeric
values and if the condition is true, a branch will be made to the specified label.
N1090 (BEQ,E13,0,LB01) => Interpret as: if variable E13 is Equal to the value "0",
then branch to label "LB01".
By default, GotoLabel is automatically called to execute the branch.
The macro Type2GotoLableFunction can be used to control branching. If it is passed an
Override Value of "0", GotoLabel is used. Passing an Override Value of "1" causes
CinciGotoLabelName to be used instead.

Type2BGELabel
Function — TYPE2
Status — ACTIVE
Comment — BGE does not use the standard text or numeric inputs.
It does, however, use other type II inputs.
Similar to Type2BEQLabel, except "Greater Than or Equal" logic applies.
Type2BGTLabel
Function — TYPE2
Status — ACTIVE
Comment — BGT does not use the standard text or numeric inputs.
It does, however, use other type II inputs.
Similar to Type2BEQLabel, except "Greater Than" logic applies.

Type2BLELabel
Function — TYPE2
Status — ACTIVE
Comment — BLE does not use the standard text or numeric inputs.
It does, however, use other type II inputs.
Similar to Type2BEQLabel, except ""Less Than or Equal" logic applies.

Type2BLTLabel
Function — TYPE2
Status — ACTIVE
Comment — BLT does not use the standard text or numeric inputs.
It does, however, use other type II inputs.
Similar to Type2BEQLabel, except "Less Than" logic applies.

Type2BNELabel
Function — TYPE2
Status — ACTIVE
Comment — BNE does not use the standard text or numeric inputs.
It does, however, use other type II inputs.
Similar to Type2BEQLabel, except "Branch if Not Equal" logic applies.

Type2CLS
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
A genericType II subroutine call with no arguments.
Type2CommentAllArgs
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs. They do,
however, use other type II inputs.
This is a Type 2 macro which can accept any number of arguments. The text string
associated with each argument will be concatenated together and will be processed as a
control comment and passed to VERICUT as a "PPRINT".

Type2DFS
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
A generic Type 2 subroutine definition with the ability to jump over the subroutine if it is
being defined and not called. This macro should be passed one argument which is the
subroutine name. Additional arguments are ignored.

Type2End
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This macro was created to handle K&T Type II commands. This macro gets called during
the "End of Type II command" events. This macro decrements the number of active Type
II commands that are currently being processed.
Also see: Type2Begin

Type2Goto
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This is a Type 2 macro which expects one argument. This argument can either be a label
or a sequence number (a label will take precedence). This macro executes a branch to the
specified location.
Type2GotoLabelCond
Function — TYPE2
Status — ACTIVE
Comment — Added V6.0
Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This macro supports the TYPE II GOTO command that is in the form: (GTO, label
[,conditional]). When searching for the specified label, the search will begin at the
beginning of the current program or subprogram. If the conditional exists, the branch to
the specified label will only be executed if the conditional is TRUE. If the conditional
does not exist, the branch to the specified label will be executed unconditionally. The
type II word format for this macro is "T V".

Type2GotoLabelFunction
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
Controls branching by "Type2...Label" macros. If it is passed a value of "0", GotoLabel is
used. Passing a value of "1" causes CinciGotoLabelName to be used instead.

Type2If
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This is a Type 2 macro which expects one argument. If the argument equates to TRUE,
the corresponding statement will be executed. This routine might be G&L specific.

Type2IfBlock
Function — TYPE2
Status — ACTIVE
Comment — Added V6.0
Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This macro supports the TYPE II IF command that is in the form: (IF, conditional). This
is a type Type II version of the IfBlock macro. The general format of the NC code will
look as follows:
(IF, &.)
.
.
(ELSE)
.
.
(ENDIF)
The ElseBlock and EndIfBlock macros should be used to handle the corresponding ELSE
and ENDIF statements. The type II word format for this macro is "V".

Type2Label
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This is a Type 2 macro which expects one argument. The argument is the label name that
is to be applied to the current block.

Type2OpMsg
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This is a Type 2 macro which expects one argument. The argument is the operator
message that is to be printed to the console.

Type2OpMsgAllArgs
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This is a Type 2 macro which can accept any number of arguments. The text string
associated with each argument will be concatenated together and will be printed as an
INFO message.
Type2OpMsgStop
Function — TYPE2
Status — ACTIVE
Comment — Type2 macros do not use the standard text or numeric inputs.
They do, however, use other type II inputs.
This is a Type 2 macro which has one optional argument. The argument is the operator
message that is to be printed to the console. This macro will also cause the processing of
the MCD file to stop.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

UAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to UAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, CAxisIncreMotion, VAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

UAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to UAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, CAxisMachineMotion,
VAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion
UAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its UAxisMachineMotion counterpart, except that it also adds in the offset from
the Machine Reference Location (ref. Machine Reference Location table in the Tables
for Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to
the machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
CAxisMachineRefMotion, VAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

UAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the U value used to process the machine's U component. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
CAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

Unitize3DVector
Function — CUTTER COMPENSATION
Status — ACTIVE
Valid Inputs — Value
0 = No
1 = Yes (Default)
Sets a flag to determine whether the vector associated with 3D tool offsets should be
unitized or not.
Also see: CutterComp3d, Tool3dXOffset, Tool3dYOffset, Tool3dZOffset, and
CutterCompOff

UnitsInch
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Sets the units mode to Inch.
UnitsMetric
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Sets the units mode to Metric.

UnloadTool
Function — TOOLING
Status — ACTIVE
Valid Inputs — None
Unloads the current tool.

UnloadToolNoRetract
Function — TOOLING
Status — ACTIVE
Valid Inputs — None
Similar to UnloadTool, except that the machine components will not retract to their tool
change locations.

UnloadToolToCompName
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text
Unloads the current tool and attaches it to the specified component (normally a tool
changer return arm).

UnMountTool
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text
Un-mounts the current tool from the specified tool component (Override Text = name of
the tool component).
NOTES:
1. This is NOT a tool change.
2. Un-mounting the tool DOES NOT change the active tool, execute a tool change
retract, increment the number of tools, or update tool offsets. It is strictly a way to
un-mount the tool. Typically, his will be used with a tool changer.
Also see: MountTool
UnMountToolIndex
Function — TOOLING
Status — ACTIVE
Valid Inputs — Text, Value
Un-mounts the current tool from the specified tool component (specified by the tool
index value (Override Value = tool index value) and subsystem (Override Text =
subsystem of tool component).
NOTES:
1. This is NOT a tool change.
2. Un-mounting the tool DOES NOT change the active tool, execute a tool change
retract, increment the number of tools, or update tool offsets. It is strictly a way to
un-mount the tool. Typically, this will be used with a tool changer.
Also see: MountToolIndex

Unsupported
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Prints a warning message that the specified word/value pair is unsupported.

UntilLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Used with a REPEAT UNTIL loop, and is associated with the UNTIL word. If the
expression associated with UNTIL word is false, this macro will cause a jump back up to
the line following the corresponding REPEAT command. Currently, this macro is only
valid when used with the Sin840D REPEAT command.
See "Notes about the Siemens 840 CASE and REPEAT commands" in the Notes
about Special Topics, in the CGTech Help Library.

UpdateAxisValues
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
This macro causes the internal axis positions for a subsystem to be updated based on the
current position of the machine. This macro was specifically designed to work with the
CoupleAxisOn/Off macros. After turning the coupling off, the subsystem that was in a
wait state while its corresponding components were being moved, should then call this
macro.
UpdateIPZ
Function — PROGRAM ZERO
Status — OBSOLETE
Comment — Use the Program Zero tables and UpdatePZ
Valid Inputs — Value
This macro is passed an index into the Input Program Zero (Special Z) table (ref. Input
Program Zero (Special Z) table in the Tables for Processing G-Codes section, in the
CGTech Help Library) via the Override Value field. Use this macro to specifically set
the internal values for the Input Program Zero offset; a capability that is mainly useful
when working with a "spindle changer" type of machine and running in Tool Tip mode.
NOTES:
1. This DOES NOT change any of the table values. The new value for IPZ (Special
Z) can be seen using Modals/Debug/Debug Offsets.
2. This macro should probably be executed after motion or on a block by itself.
Also, since the internal value for Input Program Zero (Special Z) is being
modified, this method will probably not work when running in Tool Length
Comp mode.

UpdateModalMacroVar
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value

This macro is identical to MacroVar (which sets a block variable), except this macro
updates the modal variables that were previously set with a call to CallNCMacroMotion
or CallNCMacroBlock.

UpdatePZ
Function — PROGRAM ZERO
Status — SPECIAL
Valid Inputs — Value
This macro is passed an index into the Program Zero table (ref. Program Zero table in
the Tables for Processing G-Codes section, in the CGTech Help Library) via the
Override Value field. Use this macro to specifically set the internal values for the
Program Zero offset; a capability that is mainly useful when working with a "spindle
changer" type of machine and running in Tool Tip mode.
UpdateRotaryOffsets
Function — SHIFT WORK PZ
Status — ACTIVE
Valid Inputs — None
Updates rotary pivot offset values that may have changed due to turning RTCP on/off.

UpdateVariable
Function — VARIABLES
Status — ACTIVE
Comment — Added V7.1
Valid Inputs — Text
This macro is a replacement of the variables for the events list type of 'End of
Processing', 'Start of Block Process', and 'End of Block Process'. The macro takes in a
single text value but it should be in a particular structure.

As an example, in the fan15it.ctl control, there is a variable 3001 being set as the
millisecond value of the real time. This variable is set with an expression "#3001 +
(#CGT_REAL_TIME * 1000)". Also, it is given a description as "Milliseconds". To
convert the above into an text value for the new macro, simply concatenate the variable
name, expression, and description with semicolons separating each. "3001;#3001 +
(#CGT_REAL_TIME * 1000);Milliseconds". The second semicolon is optional as
description may not exist in all variables.

UpdateVariableBlockProcessing
Function — VARIABLES
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text
This macro is similar to the UpdateVariable macro, except that it will only be used in
the following types of events: "Start of Block Processing" and "End of Block
Processing". Unlike the UpdateVariable macro, however, the variable associated with
this macro does NOT have to be pre-defined. It will auto create when there is no such
variable at the time this macro is called.

uvw_axis
Function — MAPPING
Status — RENAMED
Comment — Renamed to: UvwAxis
UvwAxis
Function — MAPPING
Status — ACTIVE
Valid Inputs — None
This macro establishes the following mapping (Axis values to XYZ point values).
The <= => symbol used below represents a two way mapping. Axis to a point coordinate
and point coordinate back to the axis.
U axis <= => X Point
V axis <= => Y Point
W axis <= => Z Point
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: AxisMappingXtoU, CirclePresentAxis, CyclePresentAxis, PlaneAxisMapping,
Register Mapping and XyzAxis.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ValueArgument
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Specifies a value that is to be added to the list of value arguments.

VariableArgument
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text, Value
Specifies a variable that is to be added to the list of variable arguments. The content of
the variable is also added to the list of value arguments.

VarsUpdateMacroVars
Function — SUBROUTINES
Status — ACTIVE
Comment — Added V6.0
Valid Inputs — Value
0 = Off (Default)
1 = allow variables 1-33 to update the modal macro vars
When this macro is passed with a value of 1, it will allow variables 1-33 to update the
modal macro vars. Passing a value of 0 turns off this feature. Zero is the default.
Typically, this would be turned on with a G66.1 and turned off with a G67.

VAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to VAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion,
WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

VAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to VAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, CAxisMachineMotion,
UAxisMachineMotion, WAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

VAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its VAxisMachineMotion counterpart, except it also adds the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
CAxisMachineRefMotion, UAxisMachineRefMotion, WAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion
VAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the V value used to process the machine's V component. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
CAxisMotion, UAxisMotion, WAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion

VC_LoadFix
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Outputs a "DISPLAY_FIXTURES" PPRINT.

VC_ModeMilling
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Use this macro to tell VERICUT to switch to Milling mode. For milling, a spinning tool
removes material when in contact with Stock/Fixture. The Default Machining Mode
specifies which machining mode is assumed at the start of processing. (Ref. File menu >
Properties: General tab, in the VERICUT Help section, in the CGTech Help Library)
Using this macro affects how all defined Stock components are machined. To change the
machining mode of individual Stock components by component name, use the
VC_ModeMillingComp macro instead.
NOTE: These VC_Mode... macros can now be replaced with
ActiveSpindleCompName and ActiveSpindleOnOff. The main difference is that using the
VC_Mode... macros produce a "PPRINT/VERICUT-MODAL:MACHTYPE" APT
statement, and using the ActiveSpindle... macros produce a "SPINDLE" APT statement.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
Also see: VC_ModeMillingComp, VC_ModeTurning, and VC_ModeTurningComp
VC_ModeMillingComp
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Same as described above for VC_ModeMilling , except uses the Override Text string
value to specify the name of the single Stock component to mill.
Using this macro affects how specified individual Stock components are machined. To
change the machining mode of all defined Stock components at once, use the
VC_ModeMilling macro instead.
NOTE: These VC_Mode... macros can now be replaced with
ActiveSpindleCompName and ActiveSpindleOnOff. The main difference is that using the
VC_Mode... macros produce a "PPRINT/VERICUT-MODAL:MACHTYPE" APT
statement, and using the ActiveSpindle... macros produce a "SPINDLE" APT statement.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
Also see: VC_ModeMilling, VC_ModeTurning, and VC_ModeTurningComp

VC_ModeTurning
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Use this macro to tell VERICUT to switch to Turning mode. For turning, a Spindle spins
the Stock/Fixture assembly and a stationary tool (not spinning) removes material when in
contact with Stock/Fixture. The Default Machining Mode specifies which machining
mode is assumed at the start of processing. (Ref. File menu > Properties: General tab,
in the VERICUT Help section, in the CGTech Help Library)
Using this macro affects how all defined Stock components are machined. To change the
machining mode of individual Stock components by component name, use the
VC_ModeTurningComp macro instead.
NOTE: These VC_Mode... macros can now be replaced with
ActiveSpindleCompName and ActiveSpindleOnOff. The main difference is that using the
VC_Mode... macros produce a "PPRINT/VERICUT-MODAL:MACHTYPE" APT
statement, and using the ActiveSpindle... macros produce a "SPINDLE" APT statement.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
Also see: VC_ModeTurningComp, VC_ModeMilling and VC_ModeMillingComp
VC_ModeTurningComp
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Text
Same as described above for VC_ModeTurning, except uses the Override Text string
value to specify the name of the single Stock component to turn.
Using this macro affects how specified individual Stock components are machined. To
change the machining mode of all defined Stock components at once, use the
VC_ModeTurning macro instead.
NOTE: These VC_Mode... macros can now be replaced with
ActiveSpindleCompName and ActiveSpindleOnOff. The main difference is that using the
VC_Mode... macros produce a "PPRINT/VERICUT-MODAL:MACHTYPE" APT
statement, and using the ActiveSpindle... macros produce a "SPINDLE" APT statement.
See "Notes about spindle configuration in V6" in the Notes about Special Topics
section, in the CGTech Help Library, for additional information.
Also see: VC_ModeTurning, VC_ModeMilling and VC_ModeMillingComp

VC_UnloadFix
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — None
Outputs a "REMOVE_FIXTURES" PPRINT.

ViperCourseDist
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
This macro is specific to the Cincinnati Viper Tape machine. It defines the instantaneous
distance for the current course (since starting to lay this piece of tape).
NOTE: Although this appears to be a fairly generic value, internally, this value is
important to various calculations specific to Viper.
ViperTowCut
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
This macro is specific to the Cincinnati Viper Tape machine. It defines the tows that are
currently being cut, or has been cut. Tows that are currently being cut will run out in
distance specified by the ViperTowPrefeedDist macro.
For example: T2063
Each bit is associated with a tow. 2063 converted into base 16 is: 80F. This value
corresponds to 4 tows on the low side, and 1 tow on the high side.

ViperTowPinch
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
This macro is specific to the Cincinnati Viper Tape machine.
It defines the tows that are to be restarted. The tow will actually start being laid in the
distance specified with the ViperTowPrefeedDist macro.
For example: Sa2048
Each bit is associated with a tow. 2048 converted into base 16 is: 800. This value
corresponds to tow 12.

ViperTowPrefeed
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
This macro is specific to the Cincinnati Viper Tape machine. It defines the distance that a
tow should be pre-fed the ViperTowPrefeedDist prior to the "headon" command.
Subtracting the specified value from the ViperTowPrefeedDist will give you the
distance the head will need to travel before the tow actually starts laying tape.
The specific tow is referenced by A-M, O-Z, and a-g
Example: Text value = "A2.9B2.9C.5D2.5E2"
ViperTowPrefeedDist
Function — TAPE LAYING
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Value
This macro is specific to the Cincinnati Viper Tape machine. It sets the distance from the
point where the tape is cut to the point where tape is pressed onto the part. The default is
2.9 inches.
See also: ViperTowCut

VirtualXAxis
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Allows you to drive a non-orthogonal X axis with virtual values based on an orthogonal
coordinate system.
This macro is passed in the offset angle (about the Z axis) that the X axis is rotated.
When called with a non-zero value, this macro will establish a rotation plane which will
allow for virtual XYZ values to be input. When called with a value of zero, the rotation
plane will be cancelled, and the axis will be driven directly.
NOTE: This macro and VirtualYAxis are mutually exclusive.

VirtualYAxis
Function — MISCELLANEOUS
Status — ACTIVE
Valid Inputs — Value
Allows you to drive a non-orthogonal Y axis with virtual values based on an orthogonal
coordinate system.
This macro is passed in the offset angle (about the Z axis) that the Y axis is rotated.
When called with a non-zero value, this macro will establish a rotation plane which will
allow for virtual XYZ values to be input. When called with a value of zero, the rotation
plane will be cancelled, and the axis will be driven directly.
NOTE: This macro and VirtualXAxis are mutually exclusive.
VirtualZAxisABDynamic
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — Value
0 = On
1 = Off
Turns On, and Off, the dynamic calling of the VirtualZAxisABRotary macro. If the ABC
angles are being calculated from IJK points, then the VirtualZAxisABRotary macro
needs to be called after the A and B angles have been set. This is done by calling this
macro. A value of 0 turns this feature on, a value of 1 turns this feature off.

VirtualZAxisABRotary
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V7.0.1
Valid Inputs — None
This macro is used to establish a virtual Z axis using rotation planes. The input angle is
defined by the local AB axis value. The AAxisMotion and BAxisMotion macros are used
to specify incremental/absolute, and must be called prior to calling this macro. These
angles define the angles at which the real Z axis is offset from the virtual orthogonal Z
axis.

VirtualZAxisADynamic
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Value
0 = On
1 = Off
This macro turns on, and off, the dynamic calling of the VirtualZAxisARotary macro. If
the ABC angles are being calculated from IJK points, then the VirtualZAxisARotary
macro needs to be called after the A angle has been set. This is done by calling this
macro. A value of 0 turns this feature on, a value of 1 turns this feature off.
VirtualZAxisARotary
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — None
Use to establish a virtual Z axis using rotation planes. The input angle is defined by the
local A-axis value. The AAxisMotion macro is used to specify incremental/absolute, and
must be called prior to calling this macro. This angle defines the angle at which the real
Z-axis is offset from the virtual orthogonal Z axis.

VirtualZAxisBRotary
Function — Miscellaneous
Status — Active
Valid Inputs — None
Establish a virtual Z axis using rotation planes. The input angle is defined by the local B
axis value. The BAxisMotion macro is used to specify incremental/absolute, and must be
called prior to calling this macro. This angle defines the angle at which the real Z axis is
offset from the virtual othogonal Z axis.

VirtualZAxisDynamic
Function — Miscellaneous
Status — Active
Valid Inputs — Value
0 = On
1 = Off
Turns On, and Off the dynamic calling of the VirtualZAxisBRotary macro. If the ABC
angles are being calculated from IJK points, then the VirtualZAxisBRotary macro needs
to be called after the B angle has been set. This is done by calling this macro. A value of
0 turns this feature on, a value of 1 turns this feature off.

VoltageOff
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — Text
Controls when a SPINDLE/OFF statement is output during wire EDM machining.
VoltageOn
Function — WIRE EDM
Status — ACTIVE
Valid Inputs — Text
Controls when a SPINDLE/ON statement is output during wire EDM machining.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

WarningMacro
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.0.1
Valid Inputs — Text
Enables you to configure warning messages and conditions.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion,
VAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

WaterJetOnOff
Function — MISCELLANEOUS
Status — ACTIVE
Comment — Added V6.2
Valid Inputs — Value
0 = Off
1 = On
This macro is macro is used for the simulation of Water Jet cutting. Call this macro with
Override Value = 1 to turn the water jet "On" so that the water jet is visible in
VERICUT, cuts material, and undergoes the appropriate collision checks. Call with
Override Value = 0 to turn the water jet "Off" so that it becomes invisible in the
VERICUT display, does not cut material, and is not used in the collision checking.

WAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to WAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
WAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to WAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, CAxisMachineMotion,
UAxisMachineMotion, VAxisMachineMotion, XAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

WAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its WAxisMachineMotion counterpart, except that it also adds the offset from
the Machine Reference Location (ref. Machine Reference Location table in the Tables
for Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to
the machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
CAxisMachineRefMotion, UAxisMachineRefMotion, VAxisMachineRefMotion,
XAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

WAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the W value used to process the machine's W component. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
CAxisMotion, UAxisMotion, VAxisMotion, XAxisMotion, YAxisMotion, ZAxisMotion,
and WAxisMotionNoCycle
WAxisMotionNoCycle
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Same as WAxisMotion, except the value is never interpreted as a cycle depth value.

WAxisZeroTracking
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the W value used to process the machine's W component on a Zero-Tracking
machine.
In general for Zero Tracking, the local Z value + the local W value = the programmed
value. Another way to state this is that the programmed value drives the tool tip to the
specified distance in Z from the Program Zero point.
If both Z and W are specified on a block, the Secondary axis is driven to its specified
Machine Axis location, and Primary axis is driven to the location as specified above.
Also see: WPrimaryTrackingAxis, ZPrimaryTrackingAxis, and ZAxisZeroTracking

WhileLoop
Function — BRANCHING
Status — ACTIVE
Valid Inputs — Value
Sets the while condition to the input value.
This command is used with DoLoop to process a "while/do" loop of the form:
While (expression) DO1
.
.
.
END1
The following Word Formats should be defined:
WHILE, DO and END should be defined as a word of Type = "Macro", Sub Type =
"Numeric".
() represent words of type left and right precedence.

Entries should be defined for WHILE, DO, and END in the Word/Address table as
illustrated below:
WorkCoord
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
Updates the work coordinate system based off of the values in the Work Offsets table
(ref. Work Offsets table in the Tables for Processing G-Codes section, in the CGTech
Help Library). The input value is used as an index into this table. Any non-negative
number is valid. Outputs an error message if the corresponding table entry does not exist,
and "ERROR" is specified as the Text value.

WorkCoordA2Value
WorkCoordAValue
WorkCoordB2Value
WorkCoordBValue
WorkCoordC2Value
WorkCoordCValue
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
These WorkCoord... macros are used to set values for the A2, A, B2, B, C2, and C axes
for use with various Work Coordinate System Offset macros. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
When a WorkCoord[*]Value macro is called with an Override Text value of
"MIRROR", and the corresponding axis set to mirror, the input value will be mirrored.
Also see: WorkCoordUValue, WorkCoordVValue, WorkCoordWValue,
WorkCoordXValue, WorkCoordYValue, and WorkCoordZValue
WorkCoordIndex
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Value
Sets the Register value that is used with the Work Offset tables.
The default is 1. This value is non-modal. This value will be used
with the following macros:
AdditionalWorkCoord
SecondaryRefWorkCoord
SecondaryWorkCoord
SetAbsWorkCoord
SetAdditionalWorkCoord
SetAdditionalWorkCoordNonModal
SetIncWorkCoord
SetWorkCoord

WorkCoordUValue
WorkCoordVValue
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Value
The macros above are used to set values for the U and V axes for use with various Work
Coordinate System Offset macros. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: WorkCoordA2Value, WorkCoordAValue, WorkCoordB2Value,
WoorkCoordBValue. WorkCoordC2Value, WorkCoordCValue, WorkCoordWValue,
WorkCoordXValue, WorkCoordYValue, and WorkCoordZValue

WorkCoordWithMotion
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Value
This macro should be passed a value of zero or one. A value of zero means that the work
offset should be applied immediately. A value of 1 means that the offset will be applied
with motion on the corresponding axis. The default value is 1. This macro affects all
macros which set, or cancel, the base, primary, or secondary work offsets.
NOTE: In the case of Fadal, a call to this macro could be made during start of
processing.
WorkCoordWValue
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Value
The macros above are used to set values for the W axis for use with various Work
Coordinate System Offset macros. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: WorkCoordA2Value, WorkCoordAValue, WorkCoordB2Value,
WoorkCoordBValue. WorkCoordC2Value, WorkCoordCValue, WorkCoordUValue,
WorkCoordVValue, WorkCoordXValue, WorkCoordYValue, and WorkCoordZValue

WorkCoordXValue
WorkCoordYValue
WorkCoordZValue
Function — WORK OFFSETS
Status — ACTIVE
Valid Inputs — Text, Value
Sets values for the X, Y, and Z axes for use with various Work Coordinate System Offset
macros. A macro exists for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
When a WorkCoord[*]Value macro is called with an Override Text value of
"MIRROR", and the corresponding axis set to mirror, the input value will be mirrored.
Also see: WorkCoordA2Value, WorkCoordAValue, WorkCoordB2Value,
WoorkCoordBValue, WorkCoordC2Value, WorkCoordCValue, WorkCoordUValue,
WorkCoordVValue and WorkCoordWValue

WorkingPlane
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
This macro is identical to the WorkingPlane2Abc macro except that it establishes a
working plane matrix instead of a rotation plane matrix. This macro converts the
"working plane" into real A, B, C angle that applies to the current machine, and
establishes a working plane matrix if necessary. The resulting angles are then stored in
the specified variables. The text value passed to this macro contains the names of the
variables, typically for Heidenhain, this will be set to "120 121 122". This macro makes
use of the WorkingPlane2AbcType as defined below. The input value defines how the
"working plane" was defined.
Valid Override Values (input types):
Override Value = 0 Rotation Plane Angles and offsets.
These values are set with the following macros:
RotationPlaneAngle1
RotationPlaneAngle2
RotationPlaneAngle3
RotationPlaneIncAngle1
RotationPlaneIncAngle2
RotationPlaneIncAngle3
RotationPlaneXPoint
RotationPlaneYPoint
RotationPlaneZPoint
RotationPlaneIncXPoint
RotationPlaneIncYPoint
RotationPlaneIncZPoint
Override Value = 1 X and Z Vectors.
These vectors are set with the following macros:
PlaneAxisVectorX
PlaneAxisVectorY
PlaneAxisVectorZ

WorkingPlane2Abc
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Text, Value
This macro converts the "working plane" into real A, B, C angle that applies to the
current machine, and establishes a rotation plane matrix if necessary. The resulting angles
are then stored in the specified variables. The text value passed to this macro contains the
names of the variables, typically for Heidenhain, this will be set to "120 121 122". This
macro makes use of the WorkingPlane2AbcType as defined below. The input value
defines how the "working plane" was defined.
Valid Override Values (input types):
Override Value = 0 Rotation Plane Angles and offsets.
These values are set with the following macros:
RotationPlaneAngle1
RotationPlaneAngle2
RotationPlaneAngle3
RotationPlaneIncAngle1
RotationPlaneIncAngle2
RotationPlaneIncAngle3
RotationPlaneXPoint
RotationPlaneYPoint
RotationPlaneZPoint
RotationPlaneIncXPoint
RotationPlaneIncYPoint
RotationPlaneIncZPoint
Override Value = 1 X and Z Vectors.
These vectors are set with the following macros:
PlaneAxisVectorX
PlaneAxisVectorY
PlaneAxisVectorZ

WorkingPlane2AbcSolution
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.1
Valid Inputs — Text, Value
1 = Closest distance
2 = Negative solution for the first rotary (first rotary from the tool)
3 = Positive solution for the first rotary
4 = Use the small value solution for the specified rotary axis
5 = Use the large value solution for the specified rotary axis
Anytime you convert a tool axis vector (IJK) to the corresponding 2 angles (A-C, B-C,
...), there are 2 possible solutions. This macro selects the algorithm which will be used to
determine the best solution. This setting is non-modal, and must be called prior to calling
macro WorkingPlane2Abc. The default setting is closest distance.
When using an Override Value of 2, or 3, the solution requested will be used unless it
violates travel limits. If this macro is passed "FORCE" as a text string, it will pick the
specified solution regardless of travel limits.
The "FORCE" option with an Override Value of 2, or 3, (Negative or Positive solution) is
not well defined for Linear tables.
Using an Override Value of 4 will cause VERICUT to use the small value solution for
the specified rotary axis. Using an Override Value of 5 will cause VERICUT to use the
large value solution for the specified rotary axis. Override Values 4, and 5, are specific to
Sinumerik 840D controls.

WorkingPlane2AbcType
Function — ROTATION PLANE
Status — ACTIVE
Valid Inputs — Value
1 = Generic A-C. A Nutator may exist on the table.
2 = Generic B-C. A Nutator may exist on either head or table
3 = Special A-C table on table machine with a horizontal head. A nutator on the
table is NOT supported.
4 = Generic B-A.
5 = Special double angle BC nutator support for DMG DMU 50 eVo Linear
machines. Supports any angles on the nutator.
99 = Universal (Default)
Typically called during the "Start of Processing" event, this macro controls the type of
conversion required to convert a rotated coordinate system into ABC rotations.
Conversion type is specified via Override Value.
There are two classes of conversion routines, "Generic" and "Specific". Specific
conversion types are meant for a very specific machine/control configuration. Generic
conversion types are for any machine/control that follows simple rules.
Generic conversion types:
• Assume that if the rotaries are set to "Absolute", then the direction will be set to
"Shortest Distance".
• When converting to ABC, typically there are 2 solutions. The Generic routines
will choose the solution which requires the smallest total rotary travel.
• Assume that the control will be configured to handle any RTCP/RPCP issues.
• Assume that the only rotation applied to components will be on nutator
components.
• Are based on the order that the rotaries appear starting at the Tool, and ending
with the Stock. This means that an A on C head machine can use the same
Generic conversion type as an A head/C table machine, or a C on A table
machine. These 3 machine configurations would all be described as "A-C".
• Travel limits will be obeyed.
• If the tool angle is (0,0,1), the C angle will be set to match the input C angle.
Valid Override Values (conversion types):
1 = Generic A-C. A Nutator may exist on the table.
2 = Generic B-C. A Nutator may exist on either head or table
3 = Special A-C table on table machine with a horizontal head. A nutator on the table
is NOT supported. It is assumed that the NC program has been posted for a
horizontal head machine (Tool along the machines Y axis).
4 = Generic B-A.
5 = Special double angle BC nutator support for DMG DMU 50 eVo Linear
machines. Supports any angles on the nutator.
99 = Universal (Default)
The new universal logic is based on a machine configuration where 2 rotary
components represent 2 degrees of freedom. When the rotation axes of the rotary
components are orthogonal (axes are independent) the conversion is satisfied for
any IJK values.
If the rotation axes are not orthogonal, then only a subset of all IJK values can be
satisfied. Although the angle may vary, it must remain constant after the machine
is build in order for this logic to work. In other words, if a dormant rotary
component is present between the 2 active rotary components, it must remain
unchanged during processing. This restriction can be changed in future if needed.
The universal method supports both linear, and absolute, rotary axis motion (ref.
Control Settings window: Rotary tab in the Configuration menu section of
VERICUT Help, in the CGTech Help Library), and reversal of the rotary
component's motion direction (ref. Reverse Direction on the Configure
Component window, Component Type: All Motion Axes, in the Project Tree
section of VERICUT Help, in the CGTech Help Library).
It adheres to "travel limits" unless Ignore is toggled "On" for a component on
the Travel Limits tab for either the G-Code Settings window, or the Machine
Settings window (ref. Collision and Travel Limits window: Travel Limits
tab in the Project Tree section, or Machine Settings window: Travel Limits tab,
in the Configuration menu section, of VERICUT Help, in the CGTech Help
Library).

WorkingPlane2AbcVertAxisRule
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V6.2
Valid Input — Value
0 = no special rules (use the previous position),
1 = apply the special logic specific to Sinumerik 840D controls
This macro is used to specify when to use an optional set of rules, specific to Sinumerik
840D controls, is used for calculating the second rotary axis position. The Sinumerik
840D control requires that the rotation of the second rotary axis be in a specific direction.
For situations where the tool axis vector is parallel to the second rotary axis, the position
of the second rotary axis is irrelevant, so the previous rotary position can be applied (no
new rotation of the axis). Use an Override Value of 0.
For all other cases, use an Override Value of 1 to invoke the special logic specific to
Sinumerik 840D controls where the rotation of the second rotary axis is restricted to a
specific direction.

WorkingPlaneCancel
Function — ROTATION PLANE
Status — ACTIVE
Comment — Added V7.0.3
Valid Inputs — None
Cancels the working plane put into effect via the WorkingPlane macro.
WPrimaryTrackingAxis
Function — MOTION
Status — ACTIVE
Valid Inputs — None
This macro marks the W-axis as the primary axis and the Z-axis as the secondary axis on
a zero tracking machine.
Also see: ZPrimaryTrackingAxis, ZAxisZeroTracking, and WAxisZeroTracking

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

XAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to XAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V and W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion,
VAxisIncreMotion, WAxisIncreMotion, YAxisIncreMotion, ZAxisIncreMotion

XAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to XAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, CAxisMachineMotion,
UAxisMachineMotion, VAxisMachineMotion, WAxisMachineMotion,
YAxisMachineMotion, ZAxisMachineMotion

XAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its XAxisMachineMotion counterpart, except that it also adds the offset from the
Machine Reference Location table (ref. Machine Reference Location table in the
Tables for Processing G-Codes section, in the CGTech Help Library). Thus, motion is
relative to the machine's reference location. A macro exists for each motion axis: A, B, C,
A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
CAxisMachineRefMotion, UAxisMachineRefMotion, VAxisMachineRefMotion,
WAxisMachineRefMotion, YAxisMachineRefMotion, ZAxisMachineRefMotion

XAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the X value used to process the machine's X component. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
CAxisMotion, UAxisMotion, VAxisMotion, WAxisMotion, YAxisMotion, ZAxisMotion

XAxisMultiplier
Function — MOTION
Status — ACTIVE
Comment — Added V6.2.2
Valid Inputs — Value
Value = Multiplier to be applied to the XAxisMotion macro
This macro defines a multiplier that is used by the XAxisMotion macro. This multiplier is
currently only used by the XAxisMotion macro. Typically, this macro will be called
when transitioning between programming in radius mode and diameter mode.
If you have a .5 multiplier on the X word or the Word/Address entry, then this macro
would be pass a value of 2 when changing to radius mode, and a 1 when changing to
diameter mode.
If you do not have a multiplier on the X word or the Word/Address entry, then this macro
would be pass a value of 1 when changing to radius mode, and a .5 when changing to
diameter mode.
The default value is zero, which means to ignore the multiplier.
NOTE: If a multiplier is defined, and Debug Macro Arguments is turned on, you will
see the following results:
Debug: MACRO: XAxisMotion, WORD:X, TEXTSTR=5., VALUE=5
Debug: ADJUSTED X VALUE=2.5 (XAxisMultiplier)
XLeadRate
Function — MOTION
Status — ALTERNATE
Comment — See also Turning Thread Cycles
Valid Inputs — Value
Use this macro to set the distance to move along the X-axis per revolution while
threading. If 2 or more axes are in motion, the lead rate of the axis which is moving the
greatest distance will be used.

XRelationalOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
Specifies the name of the component to which the "X offset" is applied for offsets
specified as relational (using Select From/To Locations).
Important Limitation: During the reset, the Machine Zero Offset, the Program Zero
Offset, the Base Work Offset, and the default Work Offset is set. This occurs prior to the
"Reset" event. This means that these macros will not affect the initial settings of these
offsets.
NOTE: Calling UpdatePZ after ZRelationalOffsetCompName could be used to force
the update of the Program Zero offset.
Also see: YRelationalOffsetCompName and ZRelationalOffsetComName

XRetractSpecifiedpoint
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the retract level X position.

XToolOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Text
Specifies the name of the component to which the "X tool offset" is applied.
Also see: YToolOffsetCompName and ZToolOffsetCompName
xyz_axis
Function — MAPPING
Status — RENAMED
Comment — Renamed to: XyzAxis

XyzAxis
Function — MAPPING
Status — ACTIVE
Valid Inputs — None
This macro establishes the following mapping (Axis values to XYZ point values).
The <= => symbol used below represents a two way mapping. Axis to a point coordinate
and point coordinate back to the axis.
X axis <= => X Point
Y axis <= => Y Point
Z axis <= => Z Point
The above is equal to the default mapping.
See "Notes on Register Mapping" in the Notes about Special Topics section, in the
CGTech Help Library, for additional information.
Also see: AxisMappingXtoU, CirclePresentAxis, CyclePresentAxis, PlaneAxisMapping,
Register Mapping and UvwAxis.

XyzPos
Function — MOTION
Status — ACTIVE
Comments — Added V7.1
Valid Inputs — Text, Value
Sets the X, Y, or Z values used to define the tool position in a Cartesian coordinate
system. The specified tool tip position is defined in the robot base coordinate system by
default. You can specify any coordinate system to transform input position to desired
origin and orientation using the SetRobotCsys macro. Note that if the robot tool tip is
programmed using this macro the robot motion is assumed to be linear. By default, this
macro detects the X,Y or Z based on the Word.
Using an Override Text value of "X,Y,Z" enables you to indicate that the first 3
parameters of an APT GOTO/ statement is to be applied to X, Y or Z. For example, the
APT statement GOTO/1,2,3,4,5,6 will result in X1 Y2 Z3. Any other value entered in the
Override Text field is ignored.

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
YAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to YAxisMotion except it ignores the Absolute/Incremental mode setting, and
increments by the value specified. A macro exists for each motion axis: A, B, C, A2, B2,
C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion,
VAxisIncreMotion, WAxisIncreMotion, XAxisIncreMotion, ZAxisIncreMotion

YAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to YAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, CAxisMachineMotion,
UAxisMachineMotion, VAxisMachineMotion, WAxisMachineMotion,
XAxisMachineMotion, ZAxisMachineMotion

YAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its YAxisMachineMotion counterpart, except that it also adds the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
CAxisMachineRefMotion, UAxisMachineRefMotion, VAxisMachineRefMotion,
WAxisMachineRefMotion, XAxisMachineRefMotion, ZAxisMachineRefMotion
YAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the Y value used to process the machine's Y component. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
CAxisMotion, UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion, ZAxisMotion

YLeadRate
Function — MOTION
Status — ALTERNATE
Valid Inputs — Value
Sets the distance to move along the Y axes per revolution while threading. If 2 or more
axes are in motion, the lead rate of the axis which is moving the greatest distance will be
used.

YRelationalOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
Specifies the name of the component to which the "Y offset" is applied for offsets
specified as relational (using Select From/To Locations).
Important Limitation: During the reset, the Machine Zero Offset, the Program Zero
Offset, the Base Work Offset, and the default Work Offset is set. This occurs prior to the
"Reset" event. This means that these macros will not affect the initial settings of these
offsets.
NOTE: Calling UpdatePZ after ZRelationalOffsetCompName could be used to force
the update of the Program Zero offset.
Also see: XRelationalOffsetCompName and ZRelationalOffsetComName

YRetractSpecifiedpoint
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value

Sets the retract level Y position.


YToolOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Text
Specifies the name of the component to which the "Y tool offset" is applied.
Also see: XToolOffsetCompName and ZToolOffsetCompName

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ZAxisIncreMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Similar to ZAxisMotion, except that it ignores the Absolute/Incremental mode setting,
and increments by the value specified. A macro exists for each motion axis: A, B, C, A2,
B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisIncreMotion, AAxisIncreMotion, B2AxisIncreMotion,
BAxisIncreMotion, C2AxisIncreMotion, CAxisIncreMotion, UAxisIncreMotion,
VAxisIncreMotion, WAxisIncreMotion, XAxisIncreMotion, YAxisIncreMotion

ZAxisMachineMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Similar to ZAxisMotion, except it ignores all transformations and is used to move a
component to an absolute position within the machine coordinate system. A macro exists
for each motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMachineMotion, AAxisMachineMotion, B2AxisMachineMotion,
BAxisMachineMotion, C2AxisMachineMotion, CAxisMachineMotion,
UAxisMachineMotion, VAxisMachineMotion, WAxisMachineMotion,
XAxisMachineMotion, YAxisMachineMotion

ZAxisMachineRefMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as its ZAxisMachineMotion counterpart, except it also adds the offset from the
Machine Reference Location (ref. Machine Reference Location table in the Tables for
Processing G-Codes section, in the CGTech Help Library). Thus, motion is relative to the
machine's reference location. A macro exists for each motion axis: A, B, C, A2, B2, C2,
X, Y, Z, U, V, W.
Also see: A2AxisMachineRefMotion, AAxisMachineRefMotion,
B2AxisMachineRefMotion, BAxisMachineRefMotion, C2AxisMachineRefMotion,
CAxisMachineRefMotion, UAxisMachineRefMotion, VAxisMachineRefMotion,
WAxisMachineRefMotion, XAxisMachineRefMotion, YAxisMachineRefMotion

ZAxisMotion
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Sets the Z value used to process the machine's Z component. A macro exists for each
motion axis: A, B, C, A2, B2, C2, X, Y, Z, U, V, W.
Also see: A2AxisMotion, AAxisMotion, B2AxisMotion, BAxisMotion, C2AxisMotion,
CAxisMotion, UAxisMotion, VAxisMotion, WAxisMotion, XAxisMotion,
YAxisMotion

ZAxisMotionNoCycle
Function — MOTION
Status — ACTIVE
Valid Inputs — Text, Value
Same as ZAxisMotion, except the value is never interpreted as a cycle depth value.

ZAxisZeroTracking
Function — MOTION
Status — ACTIVE
Valid Inputs — Value
Sets the Z value used to process the machine's Z component on a Zero-Tracking machine.
In general for Zero Tracking, the local Z value + the local W value = the programmed
value. Another way to state this is that the programmed value drives the tool tip to the
specified distance in Z from the Program Zero point.
If both Z and W are specified on a block, the Secondary axis is driven to its specified
Machine Axis location, and Primary axis is driven to the location as specified above.
Also see: WPrimaryTrackingAxis, ZPrimaryTrackingAxis, and WAxisZeroTracking
ZLeadRate
Function — MOTION
Status — ALTERNATE
Valid Inputs — Value
Sets the distance to move along the Z axes per revolution while threading. If 2 or more
axes are in motion, the lead rate of the axis which is moving the greatest distance will be
used.

ZPrimaryTrackingAxis
Function — MOTION
Status — ACTIVE
Valid Inputs — None
Marks the Z as the Primary axis and the W as the Secondary axis on a zero tracking
machine.
Also see: WPrimaryTrackingAxis, ZAxisZeroTracking, and WAxisZeroTracking

ZRelationalOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Comment — Added V7.0
Valid Inputs — Text
Specifies the name of the component to which the "Z offset" is applied for offsets
specified as relational (using Select From/To Locations).
Important Limitation: During the reset, the Machine Zero Offset, the Program Zero
Offset, the Base Work Offset, and the default Work Offset is set. This occurs prior to the
"Reset" event. This means that these macros will not affect the initial settings of these
offsets.
NOTE: Calling UpdatePZ after ZRelationalOffsetCompName could be used to force
the update of the Program Zero offset.
Also see: XRelationalOffsetCompName and YRelationalOffsetComName

ZRetractSpecifiedpoint
Function — DRILL CYCLES
Status — ACTIVE
Valid Inputs — Value
Sets the retract level Z position.
ZToolOffsetCompName
Function — TOOL OFFSETS
Status — ACTIVE
Valid Inputs — Text
Specifies the name of the component to which the "Z tool offset" is applied.
Also see: XToolOffsetCompName and YToolOffsetCompName

ZTranslateStockComp
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — No longer needed with new Pickoff Spindle capabilities
Valid Inputs — None
Specifies the name of a Stock component in which the turning "PROFILE" primitive is to
be translated. This macro is typically used when simulating pick-off spindle operations.

ZTranslateValue
Function — MISCELLANEOUS
Status — OBSOLETE
Comment — No longer needed with new Pickoff Spindle capabilities
Valid Inputs — None
Specifies the "Z" amount that a turning "PROFILE" primitive is to be translated. This
macro is typically used when simulating pick-off spindle operations.

ZWBTiltTableLength
Function — MISCELLANEOUS
Status — SPECIAL
Valid Inputs — Value
Designed for use with NC machines that use two linear axes connected at opposing ends
of a table that act as a "pseudo-rotary" table. Such a machine has Z, W, B axes which act
together to cause table tilt action. You can call this macro during the "Start of
Processing" event, and pass it an Override Value equal to the length of a tilting table.
This is then used as a flag to correct the B rotary value based on Z and W during rotary
moves.
NOTE: The setting of the B value through the user interface is still required, even
though the G-Code tool path on contains Z and W axis commands (no B commands
present).

Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
VERICUT Macros

*** This page intentionally left blank. ***

367

You might also like