Vericut Macros

246
VERICUT Macros Go to CGTech Help Library VERICUT Macros Macros - listed alphabetically The macros which can be referenced via groups in the Word/Address window, and the "Events" advanced control options are listed below in alphabetical order.  NOTES: 1. Use of the Probe macro requires a CNC Machine Probing license. 2. For information on special keywords CGTECH_MACRO and CGTECH_VAR REAL, see About Simulating Subroutines  in the Using VERICUT  section. Using VERICUT  can be found in the CGTech Help Library. 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 t hat 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 Renamed to: Tool3dOffset 3dToolXOffset, 3dToolYOffset, 3dToolZOffset 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 Similar to AAxisMotion except it ignores the Absolute/Incremental mode setting, and increments by the value specified. A2AxisMachineMotion 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.

Transcript of Vericut Macros

VERICUT Macros
Macros - listed alphabetically
The macros which can be referenced via groups in the Word/Address window, and the "Events" advanced control options are listed below in alphabetical order.
 NOTES:
1.  Use of the Probe macro requires a CNC Machine Probing license. 2.  For information on special keywords CGTECH_MACRO and CGTECH_VAR
REAL, see About Simulating Subroutines in the Using VERICUT  section.
Using VERICUT  can be found in the CGTech Help Library.
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
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
Similar to AAxisMotion except it ignores the Absolute/Incremental mode setting, and increments by the value specified.
A2AxisMachineMotion
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.
8/19/2019 Vericut Macros
A2AxisMachineRefMotion
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.
A2AxisMotion
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.
AAxisIncreMotion
Similar to AAxisMotion except it ignores the Absolute / Incremental mode setting, and increments by the value specified.
AAxisMachineMotion
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.
AAxisMachineRefMotion
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.
AAxisMotion
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.
AbBlockInit
Initializes Allen-Bradley specific variables. This macro should be called along with the standard BlockInit macro at the "Start" or "Block Processing" event.
AbsoluteShift
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).
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 3/246
VERICUT Macros
See "Notes about shift macros" in the Notes about Special Topics section, in the CGTech Help Library, for additional information.
AbsoluteShiftModal
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
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.
ABType2CLS
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
Controls the length of the accel block output during optimization for motions in a corner. When called with an Override 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
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 of the axis (1-12) or a text value of "All" to activate. Each axis is associated with a numeric value as follows:
1 = X axis 2 = Y axis 3 = Z axis
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 4/246
VERICUT Macros
4 = A axis 5 = B axis 6 = C axis 7 = U axis 8 = V axis
9 = W axis10 = A2 axis 11 = B2 axis 12 = C2 axis 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
Calls ActivateToolSubsystem with the component number that was pre-selected with PreToolCompSelect.
ActivateToolSubsystem
Activates the tool component based on the specified numeric value (Override Value = tool index) and the current subsystem.
ActivateSpindle
Activates the Tool component with "Tool Index Number" equal to the value specified by
the SpindleValue macro. Intended to replace the ActiveTool1-5 macros.
ActiveSpindleActiveTool
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. 
8/19/2019 Vericut Macros
ActiveSpindleCompName
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
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, in the Modeling window, Component Attributes tab, 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
http://slidepdf.com/reader/full/vericut-macros 6/246
VERICUT Macros
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
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. 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
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. 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
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 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.
http://slidepdf.com/reader/full/vericut-macros 7/246
VERICUT Macros
See "Notes about Spindle Configuration in V6" in the Notes about Special Topics  section, in the CGTech Help Library, for additional information.
ActiveTool
Activates the Tool component with "Tool Index Number" equal to the value specified by this macro. 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
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 Updates the work coordinate system based on values retrieved from the Work Offsets
table (see the Tables for Processing G-Codes section, in the CGTech Help Library). The work coordinate index is used as an index into this table.
AlarmSignal
Similar to ErrorMacro, except it concatenates the Override Text string and Override
Value. It also looks to see if the "if condition" (if present) was true. This produces a simple generic alarm message with an error code:
Error: <Override Text>: <Override Value>
ApplyGageOffset
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 an Override 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
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 8/246
VERICUT Macros
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 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
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
This macro is identical to the ApplyGagePivotOffset macro except that it sets the Gage Pivot Offset flag only for the current subsystem.
ApplyPivotOffset 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.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 9/246
VERICUT Macros
 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
Sets a flag specifying whether the current rotation plane should be applied to the IJKvector associated with the IJK to ABC conversion.1 = Yes, 0 = No. The default is No.
ApplyTurretOffset
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 an Override 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
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
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
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 as an Override Value. 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.
Also see: "Notes about system variables" in the Notes about Special Topics section, in the CGTech Help Library.
8/19/2019 Vericut Macros
AutosetTableAxisVars
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 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. 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.
AutosetToolLengthCompVars
Reads the Tool Length 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 as an Override Value. 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 Input Program Zero table (see 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.
8/19/2019 Vericut Macros
AutoUpdateIPZ
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 (see 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
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 (see the Tables for Processing
G-Codes section, in the CGTech Help Library) offset.
AxisMappingXtoU
This macro maps the programmed X-axis to the machines U-axis. It is designed for use when a U-axis facing head is programmed with X-axis commands. An Override Value  of "1" turns the mapping "On" and an Override Value of "0" turns the mapping "Off".
AxisPriorityOnOff
Turns On and Off the settings in the Axis Priority table. If passed a value of 0, the Axis Priority setting 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.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 12/246
VERICUT Macros
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
Similar to BAxisMotion except it ignores the Absolute/Incremental mode setting, and increments by the value specified.
B2AxisMachineMotion
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.
B2AxisMachineRefMotion
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.
B2AxisMotion
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.
BaseWorkOffsetValues
Sets the base work offset-an offset that is added to any current work offset. The XYZ
offset is specified with the WorkCoord[axis]Value macros.
BAxisIncreMotion
Similar to BAxisMotion except it ignores the Absolute/Incremental mode setting, and increments by the value specified.
BAxisMachineMotion
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.
BAxisMachineRefMotion
Same as its BAxisMachineMotion 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.
8/19/2019 Vericut Macros
BAxisMotion
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.
BiDirVarsAbsIncr
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 Override 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
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
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.
BlockFinish
Default event macro for the "End of Block Processing" event.
BlockInit
Default event macro for the "Start of Block Processing" event.
BlockSkipAnywhere
Allows the block skip character to be anywhere in the block. This macro should be called during the "Reset" event with an Override 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.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 14/246
VERICUT Macros
 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.
BlockSkipSwitch1
Controls when block skip Switch 1 is on or off (ref. Project menu > Processing Options
> G-Code > Settings: Block Skip tab). An Override Value of "1"=On, "0"=Off.
BlockSkipSwitchOff
Turns off the specified Block Skip switch. Valid values are 0-9. (ref. Project menu > Processing Options > G-Code > Settings: Block Skip tab).
 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 GUIsettings.
BlockSkipSwitchOn
Turns on the specified Block Skip switch. Valid values are 0-9. (ref. Project menu >
Processing Options > G-Code > Settings: Block Skip tab).
 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
Sets the ZAxisMotion, the CycleRapidLevelValue, and the CycleStepValue based on the format of a Bosch Type II Cycle command.
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
Similar to CAxisMotion except it ignores the Absolute/Incremental mode setting, and increments by the value specified.
C2AxisMachineMotion
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.
8/19/2019 Vericut Macros
C2AxisMachineRefMotion
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.
C2AxisMotion
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.
CallNCMacro
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
Sets the mode to call an NC Macro on every block.
CallNCMacroCancel
CallNCMacroMotion
Sets the mode to call an NC Macro on every block with motion.
CallSub
Calls the machine code subroutine specified via the SubroutineName macro.
CallSubCurrent
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
Calls the machine code subroutine specified with the input value.
8/19/2019 Vericut Macros
CallTextSubName
Similar to CallSubName, except the subroutine name is interpreted as text, regardless of the Type of Subroutine Names control setting. Use the Configuration menu > Word
Format function, 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
Configuration menu > Word/Address to configure the SubroutineName macro to call this macro.
For additional information on the Word Format window and the Word Address window, see the VERICUT Help section in the CGTECH Help Library.
Cancel3dToolOffset
Also see: Tool3dOffset.
CancelAllWorkOffsets
Cancels the shift offset (Fanuc G92), the work coordinate offset (G54-59), and the Base offset (MAHO).
CancelShiftOffsets
CancelWorkOffsets
CAxisIncreMotion
Similar to CAxisMotion except it ignores the Absolute/Incremental mode setting, and increments by the value specified.
CAxisMachineMotion
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.
CAxisMachineRefMotion
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
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 17/246
VERICUT Macros
Processing G-Codes section, in the CGTech Help Library)). Thus, motion is relative to the machine's reference location.
CAxisMotion
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.
CGTechVarDefMacro
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.
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.
ChangeSubsystemID
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
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.
See "Notes about shift macros" in the Notes about Special Topics section in the CGTech
 Help Library, for additional information. 
8/19/2019 Vericut Macros
ChangeWorkCoordZWTracking
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
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.
CinciBlockInit
Cincinnati specific macro that sets internal values used by CinciCondLeftParen,
CinciCondRightParen, CinciCondLeftBracket, and CinciCondRightBracket  conditional functions. This macro should be called along with the standard BlockInit  macro at the "Start or Block Processing" event.
CinciGotoLabelName
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
Calculate the center of rotation based off of the specified center and the mode set by CinciRotateXYZMode.
8/19/2019 Vericut Macros
CinciRotateXYZMode
A, Cincinnati (Acramatic 950) specific, macro that sets a parameter which indicates how rotation center positions should be interpreted.
Cinci_5axisToolLengthComp Turns On/Off a special Cincinnati form of 5-axis tool length compensation. A value of 1=On, 0=Off.
CircleCenterReset
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
Sets the XYZ coordinates of the center of a circle, respectively. The Circles control settings determine how these values are interpreted.
CircleCenterZWTracking
CircleCurveFitQuadrants
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
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.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 20/246
VERICUT Macros
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
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 atreset 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
When called with Override Value of "1", supports processing circles using the linear axes present in the circle motion block. This macro should be called during the "Start of
Processing" event, and is intended for use by controls on NC machines that have colinearaxes and perform circular motions.
Examples follow:
CircleRadius
Sets the radius of a circle. A negative value specifies that an arc of at least 180 degrees should be generated.
CircleRadiusLarge
Sets the radius of a circle such that an arc of at least 180 degrees will be generated. The input value is sign independent.
8/19/2019 Vericut Macros
ClampCompName
Specifies the name of a clamp component (text value). This macro is typically used to clamp parts during pick-off spindle operations.
Also see: ClampOnOff .
ClampOnOff
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 (see ClampOnOff  above) 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
This macro allows machine simulation collision checking to be temporarily suspended and restarted. The CollisionCheckOnOff  macro is ignored when Collision Detection, on the Configuration menu > Machine Settings: Collision Detect tab, is toggled "Off". Machine simulation collision checking is turned "Off" when used with an Override Value of "0", and "On" when used with an Override Value of "1".
CollisionDiagonalSize
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 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 an Override Value of "0", while "1" turns collision checking on again.
 NOTE:  "Near Miss" tolerances are not supported for collision checking against the cut
model. The accuracy of collisions with the cut stock is dependent on the "Cutting Tolerance".
CollisionSpecialComp
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.
ConditionalEndOfBlock
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.
8/19/2019 Vericut Macros
ConnectCompName
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. Specify the component name in the Override Text field.
ConnectToCompName
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. Specify the component name in the Override Text field.
 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 on the Word Address window, see the see the VERICUT Help  section, in the CGTech Help Library.
ConstantSurfaceSpeed
ConstantSurfaceSpeedMode Sets the current mode to Constant Surface Speed.
ConversionFinish
Default event macro for the "End of Processing" event. Typically, added event macros should be placed before this macro.
8/19/2019 Vericut Macros
ConversionInit
Default event macro for the "Start of Processing" event. Typically, added event macros should be placed after this macro.
CoolantFlood
Sets the coolant type to "Flood" outputs the APT "COOLNT/FLOOD" statement.
CoolantMist
Sets the coolant type to "Mist" and outputs the APT "COOLNT/MIST" statement.
CoolantOff
CoolantOn
Turns on the coolant and outputs the APT "COOLNT/ON" statement.
CornerMode
Defines the type of "auto-corner" to be generated, if any.
Options are:
1 - for CHAMFER2 - for RADIUS
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.
CornerValue
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.
CoupleAxisOn
CoupleAxisOn, CoupleAxisOff are used to control "coupling" of two motion axes, where commands to drive one axis, drives both axes.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 25/246
VERICUT Macros
CoupleAxisOn is passed an Override Text 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.
CoupleAxisOff
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 UpdateAxisValues.
CurveFitOnOff
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. An Override Value of "1" turns curve fitting ON and an Override 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.
CutterComp3d
Also see: Tool3dXOffset, Tool3dYOffset, Tool3dZOffset, Unitize3DVector, CutterCompOff  
CutterCompDoubleLong
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
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
8/19/2019 Vericut Macros
CutterCompOffHold
If the CutterCompOffHold value is 0, then process G40 command with or without motion on line.
If the CutterCompOffHold value is 1, then process G40 command with motion on line
immediately or hold G40 command until line with motion is encountered.
CutterCompLeft
Sets the cutter compensation to be Left. Also see: CutterCompRight, CutterCompOff  
CutterCompLong
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 
Also see: CutterCompRight, CutterCompLeft, CutterComp3d 
CutterCompOffLookAheadX
CutterCompOffLookAheadY
CutterCompOffLookAheadZ
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
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.
CutterCompRight
Sets the cutter compensation to be Right. Also see: CutterCompLeft, CutterCompOff  
8/19/2019 Vericut Macros
CutterCompShort
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
Temporarily suspends radius compensation for one block. It must be called with Process after Motion toggled "On". This macro was implemented to support the Heidenhain M98 open contours function, but might have other applications.
CutterCompToolNum
Uses the current tool number to index into the Cutter 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 CDC is turned on.
Also see: CutterCompToolNumSubValue.
 NOTE:  The current tool number refers to the tool number that is specified in the MCD
file (T1M6, T0101, &), NOT  to the Tool Id that is specified in the TLS file which is a string.
CutterCompToolNumSubValue
Uses the current tool number and the specified SubValue (SubRegister) to index into the Cutter Compensation table (see 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.Also see: CutterCompToolNum.
 NOTE:  The current tool number refers to the tool number that is specified in the MCD
file (T1M6, T0101, &), NOT  to the Tool Id that is specified in the TLS file which is a string.
CutterCompValue
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 in cutter compensation mode (e.g. G41,G42).
CutterCompValueDirect
Sets the cutter compensation value to the input value. The corresponding value is used as the compensation amount when CDC is turned on.
8/19/2019 Vericut Macros
Cut/remove the EDM wire. This will output a "LOADTL/0" statement.
CycleBoreShiftFlags
The boring cycles support 5 areas in which a shift may occur. These are:
Value 1
Value 3
 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
CycleBoreShiftValue
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).
CycleBoreSpindleOnOffFlags
This command specifies the spindle condition in 10 different positions. The positions are: either side of the shifts defined in the CycleBoreShiftFlags macros.
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.
CycleClearanceDistance
Sets the cycle clearance distance. This overrides the default control setting.
8/19/2019 Vericut Macros
CycleDepthInv
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
CycleDwellTime
Sets the dwell time for a cycle. Dwell time is measure in revolutions or seconds (dependent on the feed mode).
CycleIgnore
Sets a flag which causes the cycle to not be executed on the current block.
CycleIncDepthType
Sets how an incremental Cycle Depth value is to be interpreted.
1 = Relative to the Rapid Level 2 = Relative to the Initial Level 3 = Relative to the Part Surface
CycleIncRapidType
Sets how an incremental Cycle Rapid value is to be interpreted.
1 = Relative to the Rapid Level
2 = Relative to the Initial Level 3 = Relative to the Part Surface
CycleInitialOnMotion
Specifies whether the cycle "Initial Point" should be initialized on each motion. 0 = FALSE (Default) 1 = TRUE
8/19/2019 Vericut Macros
Center abscissa for milled threads in the active motion plane.
CycleMillCenterOrdinate
Center ordinate for milled threads in the active motion plane.
CycleMillPocketAngle
Sets the rotation angle in degrees with respect to the positive X-axis for a rectangular  pocket.
CycleMillPocketBottomAllowance
Sets the amount of bottom stock to remain after roughing motions. The remaining bottom stock is removed during finishing motions. Also see: CycleMillPocketSideAllowance 
CycleMillPocketBottomZ
Sets the depth for the pocket specified by a Z-axis position.
CycleMillPocketBoundarySub
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
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
Sets the corner radius for a rectangular pocket and the major radius for a circular pocket. Default is tool radius.
CycleMillPocketCutDirection
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
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 31/246
VERICUT Macros
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
Sets the type of motions for the pocket.
Override 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, and 4 for finish bottom and sides (no roughing).
 NOTE:  Use macro SiemensCycleMillPocketCutType  for Siemens controls.
CycleMillPocketDepth
Sets the relative depth for the pocket from top of the stock to bottom of the pocket.
CycleMillPocketFinishFeed
Sets the cutting feedrate for finishing pocket motions. Default is 1/2 of the roughing feedrate.
CycleMillPocketFinishStepover
Sets the X or Y in-feed between finishing pocket cuts.
CycleMillPocketInsideRadius
Sets an inside radius for circular pockets when a pre-drilled hole at the pocket center is used. Default is zero.
CycleMillPocketLength
Sets the length along the X-axis for a rectangular milled pocket.
CycleMillPocketMaxCutDepth
Sets the maximum in-feed depth for each pocket level until final pocket depth is reached.
CycleMillPocketPlungeFeed
Sets the in-feed feedrate along the Z-axis for plunging into the material.
8/19/2019 Vericut Macros
CycleMillPocketRefPlane
Sets the absolute Z-axis position for the top of the pocket stock.
CycleMillPocketRetractPlane
Sets the absolute Z-axis position where cycle motions will start and end.
CycleMillPocketRoughFeed
Sets the cutting feedrate for roughing pocket motions. Defaults to last feedrate in effect when cycle is called.
CycleMillPocketSafeDistance
Sets the distance above the pocket stock to the retract plane.
CycleMillPocketSideAllowance
Sets the amount of side stock to remain after roughing motions. The remaining side stock is removed during finishing motions. Also see: CycleMillPocketBottomAllowance  
CycleMillPocketSpeed
Sets the spindle speed used with the pocket cutting motions.
CycleMillPocketStepover
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
Selects the type of pocket and processes the cutting motions.
Override Value: 0 = rectangular,
1 = circular 2 = boundary is defined in a subroutine.
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 two (2) for the HAAS control. 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
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 33/246
VERICUT Macros
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
Sets the width along the Y-axis for a rectangular milled pocket.
CycleMillThread
Activates thread milling cycle. Must be called after all parameters are set or with the after motion option.
CycleMillThreadDir
Direction for milled threads. Value is 2 for CW or 3 for CCLW (defaults to 2 if not specified).
CycleMillThreadFeed
CycleMillThreadID
 Nominal inside diameter of the thread. (See Siemens 840D CYCLE90 documentation)
CycleMillThreadOD
 Nominal outside diameter of the thread. (See Siemens 840D CYCLE90 documentation)
CycleMillThreadPitch
CycleMillThreadToolTeeth
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
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.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 34/246
VERICUT Macros
 NOTE:  Not all controls require this. Therefore, this error checking must be turned on.
By default, it is off.
CyclePresentAxis
Similar to CirclePresentAxis. 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 X, Y, and Z axes will always 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 1, the axis present on the cycle command will be used for initial point, part surface calculations, square off, and pecking motions.
CycleRapidLevelInitial
Similar to CycleRapidLevelValue, except that the value is specified by the current X, Y, or Z axis value, depending on the current plane.
CycleRapidLevelInv
Similar to CycleRapidLevelValue, except that the value is negated if the rapid value is to be interpreted as incremental.
CycleRapidLevelKeep
This macro is called to apply the cycle rapid level instated via the CycleRapidLevelValue macro (see above) to cycles executed on command. This macro
must be called during initialization ("Start of Processing" event).
CycleRapidLevelValue
CycleRapidLevelValueMult
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
CycleRapidType
Specifies how the Cycle Rapid value is to be interpreted.
8/19/2019 Vericut Macros
CycleRetractInitial
Sets the retract level position based of the current X, Y, or Z position (depending on the current plane).
CycleRetraction
Set the Cycle Retract value. This is typically used when the retract level is an incremental distance from the clearance plane.
CycleRetractSpecifiedpoint
Sets the retract level position to be the specified value, independent of the current plane.
CycleRetractSpecifiedZT
CyclesBore
CyclesBoreDrag
CyclesBoreOrient
CyclesCancel
CyclesDrill
8/19/2019 Vericut Macros
CyclesExecute
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. Configuration menu > Control Settings: 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
Toggles the Cycle Execute control setting (ref. Configuration menu > Control Settings: 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" set to No, 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" set to Yes.
 NOTE:  If X, Y or Z movement is not part of the block, the system automatically
executes the CyclesExecute macro instead.
CyclesExecuteOnMotionOnOff
Toggles the Cycle Execute control setting (ref. Configuration menu > Control
Settings: Cycles tab) between "As Commanded" and "On Motion". When called with an
Override Value of "0" the system is set to "As Commanded" mode, and when called with an Override 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
CyclesMill
CyclesTap
8/19/2019 Vericut Macros
CycleStepUpValue
Sets the Cycle Step Up value. Use in cycle "Deep" mode.
CycleStepValue
Sets the Cycle Step Down value. Use in cycle "Deep" mode.
CyclesThru
CycleSubroutineOff
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.
CycleSubroutineOn
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.
CycleSubroutineOnNoMotion
Same as CycleSubroutineOn, except doesn't automatically turn motion on for the current block.
CycleTurnAdjustEndPoint
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
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
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.
8/19/2019 Vericut Macros
 NOTE:  The offset represented by CycleTurnAllowanceX is a "radius" value.
CycleTurnCutDepth
Specifies the cut depth for each roughing pass. This macro is also used with groovingcycles to specify the cut peck depth.
CycleTurnEndSeq
Specifies the sequence number of the last motion block used to define the work shape  profile being cut by the turning cycle.
CycleTurnFeed
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
Used to define a final X axis position after the cycle is executed. (Not required by most controls)
CycleTurnFinalZ
Used to define a final Z axis position after the cycle is executed. (Not required by most controls)
CycleTurnFinish
Selects a single pass alone 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
CycleTurnGrooveAngle
Specifies the amount of slope for a grooving cycle with an angled bottom.
CycleTurnGrooveDepth
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.
8/19/2019 Vericut Macros
CycleTurnGrooveEnd
Defines the bottom of the groove. (Either an Z value for I.D./O.D. grooves or an X value for facing grooves).
CycleTurnGrooveEscape 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
CycleTurnGrooveRelief
Retract distance after each cutting peck motion during groove cycles. Some NC controlsdefine this value as a controller word. It can be set as an Override Value in VERICUT (during "Start of Processing" event).
CycleTurnGrooveStep
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
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
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
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.
CycleTurnRoughCut
http://slidepdf.com/reader/full/vericut-macros 40/246
VERICUT Macros
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
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
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
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
Specifies the first block sequence number for the motions defining the stock geometry.
CycleTurnStartSeq
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. Project menu > Processing Options > G-Code > Settings: 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 function with defined words: N, N_GOTO_LABEL, N_GOTO_SEQ and N_LABEL.
CycleTurnStockX
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.
8/19/2019 Vericut Macros
CycleTurnStockZ
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.
CycleTurnThread
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.
No override = execute all threading passes with retracts and returns to cycle start  position.
Override Value = 1, execute only the final thread pass with retract and return to the cycle start position. This is typically used with a G92 word address. Override Value = 2, execute only the final thread pass and suppress retract and return to the cycle start position. This is typically used with a G32 or G33 word address. Override Value = 4, should be used with the Fanuc G92 single pass thread cycle. This override causes the G92 threading cycle to remain active allowing additional  blocks of the G92 cycle to be simulated until canceled by another G-code.
Also see: "Notes about simulating lathe threading" in the Notes about Special Topics  section, in the CGTech Help Library.
CycleTurnThreadAngleTaper
CycleTurnThreadFinish
Specifies the quantity of finish passes. If not specified, default is to make one pass.
CycleTurnThreadFirstCut
CycleTurnThreadHeight
CycleTurnThreadLead
When used on a threading block the feed value defines the thread lead distance.
8/19/2019 Vericut Macros
CycleTurnThreadMinCut
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.
CycleTurnThreadTaper Specifies the distance of taper in X-axis direction (signed value, radius).
CycleUvDepth
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 are interpreted as motion).
CycleXyzDepth
Specifies whether or not X, Y, or Z is used to specify cycle depth.
0 = NO 1 = YES
CycleZeroTrackingAdjOnOff
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.
0 = Do not adjust 1 = Adjust for Zero tracking
CylindricalDiameter
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
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.
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 43/246
VERICUT Macros
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
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 under Events, Start of Processing. 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
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 under Events, Start of Processing. 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
DebugMacro
Debugging macro that prints the corresponding word, the string associated with the value,
and the value to the DEBUG destination.
DefaultWire
Sets the current tool number to be the default wire EDM tool number.
8/19/2019 Vericut Macros
DefineCsys
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
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.
DisableWorkShiftOffsets
Disables the current Work and Shift offsets. The current values are saved, and can be enabled via a call to EnableWorkShiftOffsets.
DoLoop
Sets the input file locations of the do loop. During the first pass, the locations are saved. During the second pass, the locations are restored. There is no limit for the number of do- loops permitted within a G-code program. This command is used with WhileLoop to process a "while/do" loop of the form:
While (expression) DO1 . . . END1
8/19/2019 Vericut Macros
http://slidepdf.com/reader/full/vericut-macros 45/246
VERICUT Macros
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 asillustrated below:
Dwell
DwellMacro
Causes a dwell to occur. Typically called by G04, this macro must be called after theDwellTime macro. Dwell length is determined by the DwellTime variable value and the current feed mode (IPM/MMPM, IPR/MMPR):
DwellRevolutions  Similar to DwellMacro, except the dwell time value is always interpreted as revolutions.
DwellSeconds
Similar to DwellMacro, except the dwell time value is always interpreted as seconds.
DwellTime  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
8/19/2019 Vericut Macros
DynamicWorkOffsets
Controls when "dynamic work offsets" are applied (e.g. G54.2). When called with an Override Value of "1", work, shift, and Program Zero offsets are rotated based on the rotation that is applied to the stock. An Override 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
Controls the dynamic work offset mode: contouring vs. non-contouring. When passed an OverrideValue 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
Controls the coordinate system in which work offsets are dynamically rotated. When called with an Override Value of "1", dynamic work offsets are rotated based on the rotations specified within the local coordinate system. When passed an Override Value  of "0" (default), dynamic work offsets are rotated based on the actual rotation of the stock component.
 NOTE:  This command is dependent on dynamic work offsets being turned on using the DynamicWorkOffsets macro.
DynamicWorkOffsetsTypes
Determines which work offsets should be dynamically rotated. When passed an OverrideValue 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.
8/19/2019 Vericut Macros
DynamicWorkOffsetsWithMotion
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:  Th