Issue 87 
Summer 2011 
Copyright 2011, CNC Concepts, Inc. 

June 20, 2011
Dear Subscribers,
Welcome to issue number eightyseven!
Recently we’ve been receiving so many
suggestions and example programs related to custom macro that it
would take several issues to catch up with them all.
I’ve decided to devote this issue of the
optional stop to showing four interesting custom macros. And
thanks to the people who submitted them!
I hope you enjoy it. In the next issue, I’ll go back to the
regular format.
Mike Lynch



Product Corner:
Updates to CNC curriculum materials – and two new
curriculums!
All of the instructor materials for our eight
curriculums are now provided on two CDrom discs and
available – free of charge – to any instructor who
teaches CNC classes. These curriculums utilize student
materials (manuals and possibly workbooks) that must be
purchased from us. Curriculums include:

Machining Center Setup and
Operation

Machining Center Programming

Machining Center Programming,
Setup, and Operation

Turning Center Setup and
Operation

Turning Center Programming

Turning Center Programming,
Setup, and Operation

Getting More From Your CNC
Machines

Parametric Programming For CNC
Machine Tools
A startup presentation (invoked from the root folder of
each disc) makes it easy to navigate all materials
related to each curriculum – and includes promotional
information to help you decide which curriculum is right
for you and instructional information to help you learn
how to teach with the curriculums.
As always, instructor materials for all curriculums
include PowerPoint presentations. Most include lesson
plans. And some curriculums include an instructor’s
manual. The PowerPoint presentations for each curriculum
include a startup slide and a presentation links slide
for each lesson to make it easy to navigate the main
topics. Lesson plans and other written materials are
provided on the discs in the form of Adobe Acrobat (.pdf)
files that you can view from your computer or print for
a more portable reference.
For the setup and operation and programming curriculums,
we now provide computerbased testing. An inexpensive
testing program called Quiz Builder is used – and the
source files for the test are provided (Quiz Builder
sells for $199.00). This means you can modify and/or add
test questions and select a reporting method that suits
your needs. Note that we still maintain our current
method of testing – test pages in the setup and
operation and programming student manuals. And for
programming, programming activities are not included in
the computer based testing.
We’ve also added two curriculums for more advanced
topics. The Getting More From Your CNC Machines
curriculum will help you teach more advanced CNC
classes. Lessons include basic premises, who are you,
machine utilization must dictate personnel utilization,
setup reduction principles, setup reduction techniques,
cycle time reduction principles, and cycle time
reduction techniques.
So if you are currently using our curriculums – and even
if you’re not – if you are teaching CNC classes, be sure
to request this free update. Simply send your request to
lynch@cncci.com – and of course, include your name and
company’s or school’s shipping address.
Top of page

Macro Maven: Improving the fixture offset
recording custom macro
Suggested by
Alejandro Garcia of Extreme Machine, Inc.
In a previous
issue of The Optional Stop newsletter, we published a
custom macro to record the settings for fixture offsets
one through six (G54 through G59). The custom macro
actually creates a program that will allow the user to
reset fixture offsets to their current values at some
future date. It does so by outputting the commands
through the communications port using a DPRNT command.
While this
program is very helpful, we recently had a request for
doing the same thing with the extended fixture offset
option (when users have a total of 54 fixture offsets).
What follows is the program that does this – outputting
the standard fixture offsets (G54 though G59) as well as
the additional 48 fixture offsets. And again, a program
is created that – when reloaded and executed once – will
reset all fixture offset registers to their current
settings.
Two notes:
First, the
program uses system variables to attain fixture offset
settings. As you know, system variables vary from one
Fanuc control model to another. This program is for a
16M control. You’ll have to determine which system
variables are related to your control if it is not a 16M
and modify the program accordingly.
Second, and in
similar fashion, the L word of G10 (which is being used
to reload fixture offsets) also varies from one Fanuc
control model to another. You will have to determine
which L word is related to the extended fixture offset
option and modify the program accordingly.

O9069(OUTPUT ALL FIXTURE OFFSETS)

(*************)

(G54 THRU
G59)

(THEN)

(G54.1P1
THRU G54.1P48)

(************)

#9=6.(SET
NO. OF FIXTURE OFFSETS  MAX VALUE=6)

#18=4.(SET
NO. OF AXIS REGISTERS  MAX VALUE=15)

#4=1.(INITIALIZE FIXTURE OFFSET COUNTER)

POPEN(OPEN
THE OUTPUT PORT)

DPRNT[]

DPRNT[O1010]

DPRNT[]

DPRNT[M00]

WHILE[#4LE#9]DO1(WRITE A FIXTURE OFFSET PROGRAM)

#33=5200.+[#4*20.](SET FIXTURE
OFFSET POINTER #)

#24=#[#33+1.](GET THE XAXIS REGISTER DATA)

25=#[#33+2.](GET THE YAXIS
REGISTER DATA)

#26=#[#33+3.](GET THE ZAXIS REGISTER DATA)

#2=#[#33+4.](GET THE BAXIS REGISTER DATA)

DPRNT[G90*G10*L2*P#4[10]*X#24[34]*Y#25[34]*Z#26[34]*B#2[43]]

#4=#4+1.(INCREMENT FIXTURE OFFSET COUNTER)

END1


(OUTPUT
G54.1P1 THRU P48 WO)


#9=48.(SET
NO. OF FIXTURE OFFSETS  MAX VALUE=48)

#18=4.(SET
NO. OF AXIS REGISTERS  MAX VALUE=15)

#4=0.

DPRNT[]

DPRNT[M00]

WHILE[#4LT#9]DO2(WRITE A FIXTURE OFFSET PROGRAM)

#33=7000.+[#4*20.](SET FIXTURE OFFSET POINTER #)

#24=#[#33+1.](GET THE XAXIS REGISTER DATA)

#25=#[#33+2.](GET THE YAXIS REGISTER DATA)

#26=#[#33+3.](GET THE ZAXIS REGISTER DATA)

#2=#[#33+4.](GET THE BAXIS REGISTER DATA)

#5=#4+1

DPRNT[G90*G10*L20*P#5[20]*X#24[34]*Y#25[34]*Z#26[34]*B#2[43]]

#4=#4+1.

(INCREMENT
FIXTURE OFFSET COUNTER)

END2

DPRNT[]

DPRNT[M30]

PCLOS(CLOSE
THE OUTPUT PORT)

M30
Top of page

Macro Maven:
Another custom macro to truncate decimal places
By Tom
Sorrentino
I was reading "The Optional Stop
newsletter, Issue 85", particularly the "Macro Maven:
Rounding or truncating to a specific number of decimal
places" article.
This seems to be a long method of
doing this task. Below is what I found that does the
same functions, but in a simpler method (below SET V).
I've added features of input checking. See M set below
for example. It will be read as M0.
The custom macro:

O1000

(INPUTCHECKS)

#13=[FIX[ABS[#13]]]

(GET POSITIVE INTEGER OF M#13
REGARDLESS OF INPUT)

IF [#13EQ#0] THEN #3000=101

(MNOTDEFINED)

IF [#13LT0] OR [#13GE2] THEN
#3000=102

(MOUTOFRANGE)

#7=[FIX[ABS[#7]]]

(GET POSITIVE INTEGER OF D#7
REGARDLESS OF INPUT)

IF [#7EQ0] OR [#7EQ#0] THEN
#3000=102

(DNOTDEFINED)

IF [#7LT1] OR [#7GE5] THEN
#3000=103

(DOUTOFRANGE)

#22=[FIX[ABS[#22]]]

(GET POSITIVE INTEGER OF V#22
REGARDLESS OF INPUT)

IF [#22EQ0] OR [#22EQ#0] THEN
#3000=104

(VNOTDEFINED)

IF [#22LT100] OR [#22GE149] THEN
#3000=105

(VOUTOFRANGE)

(DETERMINE D VALUE)

IF [#7EQ1] THEN #102=10

(USE 10 FOR 0.X0000)

IF [#7EQ2] THEN #102=100

(USE 100 FOR 0.0X000)

IF [#7EQ3] THEN #102=1000

(USE 1000 FOR 0.00X00)

IF [#7EQ4] THEN #102=10000

(USE 10000 FOR 0.000X0)

(SET V)

IF [#13EQ0] THEN
#[#22]=[FIX[#19*#102]/#102]

(ROUNDUP)

IF [#13EQ1] THEN
#[#22]=[FUP[#19*#102]/#102]

(TRUNCATED)

GOTO 9999

(NOTES)

(S=VALUE TO BE ALTERED)

(M=0TRUNCATED, M=1ROUNDEDUP)

(D=DECIMAL PLACE TO WORK TO)

(V=VARIBLE TO PLACE RESULT)

(G65 P1000 S#121 M1.0 D2.0
V100.0)

N9999

M99
Top of page

Macro Maven: A
fixture offset calculator custom macro
By Brian Glick of Vermeer
Corporation
Here is a macro I developed to allow
operators to calculate their own fixture offsets right
on the machine. The macro tracks any point on the work
piece as it indexes on the rotary axis.
I have an Excel spreadsheet that does
this (probably similar in function to the one offered on
this site), but the operators have to go find one of the
programmers so we can calculate their offsets for them.
Meanwhile, the machine is sitting idle. Using this macro
the operator can accomplish this without leaving the
machine.
Macro instructions for the following example: After
touching off the origin of the part on side B270 using
work offset G54 you need to calculate the machine
coordinates of that same point when the pallet is
rotated to B290 using work offset G55.
1. Touch off the main origin that
will be used to calculate all the other offsets and
enter this value into the correct work offset. We will
use G54 for an example.
2. Pull up the macro in Edit mode and
enter the work offset number that you just used. This is
the offset the macro will read from to perform the
calculations. Follow the formatting instructions
provided by the comments in the macro. #100 = 54.
3. Enter the Baxis angle that the
machine is at when touching off the first work offset.
#101=270.
4. Enter the work offset you want to
write your new work offset to. #102 = 55.
5. Enter the Baxis angle for the
offset you need to calculate. #103 = 290.
6. Reset to the beginning of the
program and run the macro. It will read the values out
of G54 and calculate them for B290 and write the new
values into G55
Note: You can use offsets G54G59 and G54.1 P1P48 with
this macro. I have it set up to calculate one offset at
a time, but it would be possible to have it perform
several. If you prefer that no one edited the macro you
could remove the first four lines and have the operator
enter the values directly into the variables on the
macro variable page. This macro requires that variables
#530 and #531 are set to equal the machine coordinates
for the center of rotation on the X and Z respectively.
These two variables are located in the macro itself. Do
not change them on the macro variable page or the
program will overwrite them. These values will be
different from machine to machine so do not copy the
macro from one machine to another without changing these
variables in the body of the macro.
Abbreviations:
OP = Original position
NP = New position
C.O.R = Center of rotation

O8111 (FIXTURE OFFSET CALCULATOR)

(OPERATOR EDITS THE NEXT FOUR
VARIABLES)

(G54=54., G55=55.,ETC.)

(G54.1 P1=1., P2=2., ETC.)

#100=54. (ENTER ORIGINAL WORK
OFFSET)

#101=270. (ENTER ORIGINAL B AXIS
VALUE)

#102=55. (ENTER NEW WORK OFFSET)

#103=290. (ENTER NEW B AXIS
VALUE)

(DO NOT EDIT BELOW THIS LINE)

(CENTER OF ROTATION
VALUES—MACHINE SPECIFIC)

#530=20.67 (X VALUE CENTER OF
ROTATION FOR MACHINE)

#531=40.565 (Z VALUE CENTER OF
ROTATION FOR MACHINE)

IF[#101NEFUP[#101]] GOTO100
(Checks to make sure B value is a whole number)

IF[#103NEFUP[#103]] GOTO100
(Checks to make sure B value is a whole number)

IF[#100LT1.] GOTO110 (Checks to
make sure offset value is not less than one)

IF[#102LT1.] GOTO110 (Checks to
make sure offset value is not less than one)

IF[#100GT59.] GOTO110 (Checks to
make sure offset value is not greater than 59)

IF[#102GT59.] GOTO110 (Checks to
make sure offset value is not greater than 59)

IF[#101GT359.] GOTO120 (Checks to
make sure B value is not greater than 359)

IF[#102GT359.] GOTO120 (Checks to
make sure B value is not greater than 359)

N5

(DETERMINE WORK OFFSET TO READ
FROM)

(DETERMINE SYSTEM VARIABLES FOR
G54G59)

IF[#100LT54.] GOTO10

#104=#10054. (SETS #104 TO
G54=0, G55=1...)

#105=20.*#104

#106=#[5221.+#105]

#107=#[5222.+#105]

#108=#[5223.+#105]

GOTO15

N10

(DETERMINE SYSTEM VARIABLE FOR
G54.1 P148)

#104=#1001. (SETS #104 TO G54.1
P1=0, P2=1, P3=2...)

#105=20.*#104

#106=#[7001.+#105]

#107=#[7002.+#105]

#108=#[7003.+#105]

N15 (CALCULATE X POSITION FROM
C.O.R.)

IF[#106LT#530] GOTO20

#110=[#106#530]*[1.]

GOTO25

N20

#110=#530#106

N25 (CALCULATE Z POSITION FROM
C.O.R.)

IF[#108LT#531] GOTO30

#111=#108#531

GOTO35

N30

#111=[#531#108]*[1.]

N35 (CALCULATE RADIUS OF
ROTATIONC.O.R. TO O.P.)

#112=SQRT[[#110*#110]+[#111*#111]]

(FIND ANGLE OF ABOVE LINE FROM 0
DEG.)

#113=ACOS[#110/#112]

(IF Z POSITION IS NEGATIVE FROM
C.O.R. SUBTRACT)

(ANGLE FROM 360 DEGREES)

IF[#111LT0] GOTO40

#114=#113

GOTO45

N40

#114=360.#113

N45

#115=#103#101 (DEGREES TRAVELED
ON B AXIS)

#116=#114#115 (ADD DEGREES TO
ANGLE FROM ABOVE)

IF[#116LT0] GOTO50 (IF ANGLE IS
NEGATIVE ADD 360 DEG TO IT)

#117=#116

GOTO55

N50

#117=360.+#116

N55

#118=#112*COS[#117] (B.C. X
LOCATION FOR NEW POSITION)

#119=#112*SIN[#117] (B.C. Z
LOCATION FOR NEW POSITION)

#120=#530#118 (SHIFT X LOCATION
BASED ON COORDINATES FOR C.O.R.)

#121=#531+#119 (SHIFT Z LOCATION
BASED ON COORDINATES FOR C.O.R.)

N60

(DETERMINE WORK OFFSET TO WRITE
NEW OFFSETS TO)

(DETERMINE SYSTEM VARIABLES FOR
G54G59)

IF[#102LT54.] GOTO70

#124=#10254. (SETS #124 TO
G54=0, G55=1...)

#125=20.*#124

#126=5221.+#125

#127=5222.+#125

#128=5223.+#125

GOTO75

N70

(DETERMINE SYSTEM VARIABLE FOR
G54.1 P148)

#124=#1021. (SETS #124 TO G54.1
P1=0, P2=1, P3=2...)

#125=20.*#124

#126=7001.+#125

#127=7002.+#125

#128=7003.+#125

N75 (WRITE OFFSET)

#[#126]=#120

#[#127]=#107

#[#128]=#121

GOTO999

(ALARMS)

N100#3000=100(B_AXIS_INCREM)

N110#3000=110(WORK_OFFSET_OUT_RANGE)

120#3000=120(B_AXIS_OUT_RANGE)

N999 M30
Top of page

Macro Maven:
Threepoint arc center macro
By Brian Glick of Vermeer
Corporation
This is a macro I wrote to be able to
find the center of an arc from three points. This gives
3point touch off capability to machines that did not
come with this feature – even if your machine doesn’t
have a touch probe. A simple edge finder can be used.
Basically what this does is allows the machine operator
to touch three separate points on an arc (with the edge
finder) and the custom macro will automatically write
the machine coordinates representing the center of the
arc into the specified work offset.
The macro uses the ACOS function
which not all controllers support, so the first thing
you need to determine is whether this function works on
your machine. To do this, go into MDI and enter the
following equation #100=ACOS[.5] and hit cycle start. If
the controller supports this function it will return a
value of 60 in variable #100 and you are in business; if
not, it will most likely alarm out with “MACRO FORMAT
ERROR”. We have a Fanuc 16MB that will read it and 16MA
that will not.
If your machine does not support ACOS
(arc cosine), you will have to modify the custom macro.
Remember, ACOS renders the angle from the cosine
function. All machines with custom macro do support the
ATAN (arc tangent) function – which renders the angle
from the tangent (side opposite divided by the side
adjacent). While it will require more calculations, you
should be able to modify the custom macro to use the
ATAN function to get the data you need.
To use this program follow these instructions:
1. Load program and enter the work
offset you want to use on the first line where #140=?.
Follow the format instructions provided in the comments.
2. Load edge finder into spindle.
(Light up point finder works best)
3. Put in Memory mode and press cycle
start
4. Program stops on M0
5. Put control into Handle mode and
touch first point on arc.
6. While keeping edge finder in place
go back to Memory mode and press cycle start. The
current position of the machine will be recorded and the
program will stop on the next M0.
7. Repeat steps 5 and 6 for the
second and third points.
8. The macro will write the
coordinates to the center of the arc into the offset
specified at the beginning of the program
This macro works on the basis of
creating lines between the adjacent points found in the
steps above. For example: a line connecting point 1 and
point 2 and a line connecting point 2 and point 3. These
lines are then bisected and the intersection of the
bisecting lines is the center of the arc. Sounds easy,
but there is a lot of trigonometry going on to find all
the needed information.
You can also use the macro to measure
the radius of the arc. The radius value from the center
of the arc to the center of the tool is entered into
variable #532 and then all you need to do is add the
radius of the edge finder to this value if touching off
the ID of an arc, or subtract it if touching the OD.
This will give you an accurate measurement of the arc.
Very helpful if you have a partial radius or something
that is difficult to measure normally.
NOTE: Any points on
the arc will work. You can touch 3 places close together
or far apart. The further apart the more accurate you
will be, but you can pretty much use this on any arc
that is big enough to touch in three places. I would
suggest touching the points in order CW or CCW although
it seems to work if mixed up in any order. The program
checks the radius of each point and if it falls out of a
specified tolerance (I have it set at .005” but I have
not seen any difference more than .0005”) in relation to
each other the macro alarms out. This macro can write to
offsets G54G59 and G54.1 P1P48.
I have added comments to the various
lines to show what is going on in the body of the macro.
Here are the definitions for some of my abbreviations.
P1 = 1st point
P2 = 2nd point
P3 = 3rd point
M1 = midpoint of line p1 – p2
M2 = midpoint of line p2 – p3
C1 = center of arc

O8110 (3 POINT ARC CENTER)

#140=54. (OPERATOR ENTER OFFSET)

(G54=54., G55=55.,ETC.)

(G54.1 P1=1., P2=2., ETC.)

IF[#140LT1.] GOTO501

IF[#140LT54] GOTO10

#141=#14054. (SETS #141 TO
G54=0, G55=1...)

GOTO15

N10

#141=#1401. (SETS #141 TO G54.1
P1=0, P2=1, P3=2...)

N15

M0 (TOUCH 1ST POINT)

N16 (P1)

#100=#5021 (STORE MACHINE ABS
POSITION)

#101=#5022

M0 (TOUCH 2ND POINT)

N17 (P2)

#102=#5021 (STORE MACHINE ABS
POSITION)

#103=#5022

M0 (TOUCH 3RD POINT)

N18 (P3)

#104=#5021 (STORE MACHINE ABS
POSITION)

#105=#5022

#106=[#100+#102]/2. (M1 X VALUE)

#107=[#101+#103]/2. (M1 Y VALUE)

#108=[#102+#104]/2. (M2 X VALUE)

#109=[#103+#105]/2. (M2 Y VALUE)

#1=ABS[#100#102]

#2=ABS[#101#103]

#110=SQRT[[#1*#1]+[#2*#2]] (P1P2
LENGTH)

#1=ABS[#102#104]

#2=ABS[#103#105]

#111=SQRT[[#1*#1]+[#2*#2]] (P2P3
LENGTH)

#112=#110/2. (M1P2 LENGTH)

#113=#111/2. (P2M2 LENGTH)

#1=ABS[#106#108]

#2=ABS[#107#109]

#114=SQRT[[#1*#1]+[#2*#2]] (M1M2
LENGTH)

(FIGURE ANGLES OF SSS TRIANGLE
MADE BY M1, P2, M2)

(LAW OF COSINES)

#1=[[#113*#113]+[#112*#112][#114*#114]]/[2.*#113*#112]

#115=ACOS[#1] (1ST ANGLEP2)

#2=[[#112*#112]+[#114*#114][#113*#113]]/[2.*#112*#114]

#116=ACOS[#2] (2ND ANGLEM1)

#117=[180.#115]#116 (3RD
ANDGLEM2)

(FIGURE ADJACENT ASA TRIANGLE
MADE BY M1, M2, C1)

(LAW OF SINES)

#118=90.#116 (1ST ANGLE M1)

#119=90.#117 (2ND ANGLE M2)

#120=[180.#118]#119 (3RD ANGLE
C1)

#121=[#114*[SIN[#119]]]/SIN[#120]
(M1C1 LENGTH)

#122=[#121*[SIN[#118]]]/SIN[#119]
(M2C1 LENGTH)

#1=ABS[#100#106]

#2=ABS[#101#107]

#123=ATAN[#1]/[#2] (FIND ANGLE
M1P1 FROM Y AXIS)

(DETERMINE WHICH QUADRANT VECTOR
M1P1 IS AIMING FOR)

(TO DETERMINE THE CORRECT ANGLE
FROM 0 DEGX POSITIVE AXIS)

(QUADRANTS ARE NOT NUMBERED IN
STANDARD FORMAT)

(X+Y+ IS 1, XY+ IS 3, XY IS 4,
X+Y IS 2)

IF[#100LT#106] GOTO30

#5=1.

GOTO35

N30#5=3.

N35

IF[#101LT#107] GOTO40

#5=#5

GOTO45

N40#5=#5+1.

N45

IF[#5EQ3.] GOTO50

IF[#5EQ4.] GOTO55

IF[#5EQ2.] GOTO60

IF[#5EQ1.] GOTO65

N50

#124=90.+#123

GOTO100

N55

#124=270.#123

GOTO100

N60

#124=270.+#123

GOTO100

N65

#124=90.#123

(M1C1 LINE NEEDS ROTATED CW OR
CCW TO GET CORRECT

ANGLE FROM 0 DEG)

N100

#7=90. (ROTATES CW FIRST)

#33=0 (FLAG)

GOTO170

N165#7=90. (ROTATES CCW)

#33=1 (FLAG)

N170

#125=#124+#7 (UPDATES ANGLE)

#126=#121*COS[#125] (X B.C.
LOCATION OF C1 BASED OFF RADIUS M1C1 AND ANGLE #125
M1=0,0)

#127=#126+#106 (SHIFTS CENTER OF
B.C. ON THE X TO CORRECT VALUE OF M1 AND GIVES
CORRECT X VALUE FOR C1)

#128=#121*SIN[#125] (Y B.C.
LOCATION OF C1 BASED OFF RADIUS M1C1 AND ANGLE #125
M1=0,0)

#129=#128+#107 (SHIFTS CENTER OF
B.C. ON THE Y TO CORRECT VALUE OF M1 AND GIVES
CORRECT Y VALUE FOR C1)

#1=ABS[#100#127]

#2=ABS[#101#129]

#130=SQRT[[#1*#1]+[#2*#2]]
(DETERMINE RADIUS OF CIRCLE FROM C1 TO P1)

#1=ABS[#102#127]

#2=ABS[#103#129]

#131=SQRT[[#1*#1]+[#2*#2]]
(DETERMINE RADIUS OF CIRCLE FROM C1 TO P2)

#1=ABS[#104#127]

#2=ABS[#105#129]

#132=SQRT[[#1*#1]+[#2*#2]]
(DETERMINE RADIUS OF CIRCLE FROM C1 TO P3)

(CHECKS TO MAKE SURE THREE RADIUS
VALUES ARE THE SAME WITHIN .005 TOLERANCE)

(IF NOT IT GOES BACK AND FLIPS
THE M1C1 LINE THE OTHER WAY AND THEN GOES
THRU THE CHECKS AGAIN.)

IF[[ABS[#130#131]]GT.005]
GOTO300

IF[[ABS[#130#132]]GT.005]
GOTO300

IF[[ABS[#131#131]]GT.005]
GOTO300

#530=#132 (STORES RADIUS)

N200

GOTO400

N300

IF[#33EQ0] GOTO165 (READS FLAG TO
SEE IF IT HAS CHECKED ANGLE BOTH WAYS IF SO IT GOES
TO ALARM)

GOTO500

N400

(DETERMINE SYSTEM VARIABLES FOR
G54G59)

IF[#140LT54.] GOTO450

#135=20.*#141

#136=5221.+#135

#137=5222.+#135

#[#136]=#127 (WRITE OFFSET)

#[#137]=#129

GOTO999

N450

(DETERMINE SYSTEM VARIABLE FOR
G54.1 P148)

#135=20.*#141

#136=7001.+#135

#137=7002.+#135

#[#136]=#127 (WRITE OFFSET)

#[#137]=#129

GOTO999

N500 #3000=100(ERROR)

N501 #3000=101(OFFSETERROR)

N900

N999

M30
Top of page







The Optional Stop newsletter
is published quarterly by CNC Concepts, Inc. and is distributed
free of charge to people subscribing to our (email) distribution
list and to those downloading it from our website (www.cncci.com).
Information is aimed at CNC users and instructors teaching live
CNC classes. All techniques given in this newsletter are
intended to help CNC people. However, CNC Concepts, Inc. can
accept no responsibility for the use or misuse of the techniques
given.
To subscribe:
Simply email us (newsletter@cncci.com) and let us know
you'd like to be added to our distribution list.
To
unsubscribe: Respond to this email, typing REMOVE in
the subject. Please accept our apologies if we have
disturbed you.


