Quote Originally Posted by HalfRapid View Post
Hello all,

*2" dia with 1.250" thru hole around .187(9) wide/thick

T0303(MDT/partoff)
G0 X2.010 Z.1
G0 Z0.0
G1 X1.250 F.004


G0 X2.020 Z.1
G1 X2.010 Z0.0 F.02
G92 X2.010 Z0.0
M98 P1 L8(spacer count)
G53 O0
G90
G97 S650
G0 X13 Z10

M30

O1(Internal SUB)

G1 Z.000 F.02
G1 X2.000 F.002
G1 Z-.015
G1 X1.970 Z0.0
G0 X2.010
G0 Z-.292
G1 X2.000
G1 X1.970 Z-.307 F.002
G1 X1.200 F.0025
G0 X2.010
G92 X2.010 Z0.0
G90
M99
If you want the Safest, Easiest method, then you're not going to like the answer. Using Macro Variables and setting them via a Single Macro Call Block, or have the Variables grouped together at the Start of the program is much Safer and Easier than making edits to the program, where there is an increased potential for errors.

1. Local (Internal) Subprograms are not called in the way you have shown with M98 P1, they're called with a Q address and a sequence number, for example:
M98 Q100 will call the Local Subprogram starting with N100

2. Local Subprograms don't start with an "O" program number, they start with a Sequence Number (N).

3. G53 requires an axis address, not the "O" character.

4. Using the Child Workshift Offset G52 is safer and easier than G92.

5. Unless the control is set to use G Code System B, or C (the default is G Code System A), G50 will be used, not G92

Regards,

Bill