Sie sind auf Seite 1von 31

Custom Macro

Subject: Machine Tools


Staff: Su-Jin Kim sujinkim@gnu.ac.kr
School: Gyeongsang National University

1. What is custom macro?

(1) Main program


It calls O9001 program with input variables #1=50., #2=30., #3=-20.
ex)
G65 P9001 A50. B30. C-20.;

(2) Custom macro program


ex)
O9001;
G1 X#1 Y#2;
Z#3;

M99;

2. Variable

(1) Local variable #1~#33


main address A B C … Z
macro variable #1 #2 #3 … #26

(2) Common variable: #100~#1999, #500~#999

(3) System variable: #1000~

3. Operation
Basic: = + - * / ex) #33=#31+#32;
Function: SIN[] ASIN[] COS[] ACOS[] TAN[] ATAN[] SQRT[] ABS[] ex) #32=SIN[#31];
4. Flow
(1) IF[#31 EQ #32] GOTO 130; (#31과 #32가 같으면 N130번 줄로 가기)
(2) Loop
WHILE[#31 GT #32] DO 1; (#31이 #32보다 큰 동안 END 1까지 반복)
…;
END 1;
[#i EQ #j] 같으면
[#i NE #j] 다르면
[#i GT #j] 크면
[#i LT #j] 작으면
[#i GE #j] 크거나 같으면
[#i LE #j] 작거나 같으면

[이하 참고자료]
ost CNC controls have an optional feature known as Custom Macro B or User Macro. This a powerful
programming language that allows programs to be written using variables instead of fixed numbers. The
language includes structures for conditional and unconditional program branching, repetitive looping and
mathematical equations.

It's Like Having BASIC Built into Your Control


Custom Macro is similar to the BASIC language on a PC, but don't worry if you've never written a
BASIC program. With the Programming Unlimited manual you will learn everything you need to be
comfortable with Custom Macro.

Custom Macro is used along with the standard "G" codes to enhance your flexibility when programming.
With Custom Macro, you are no longer limited to writing a fixed tool path program. You can use
mathematical and trigonometric functions to calculate end points. This makes family of part or complex
shape programming possible. For example, if you needed to program a parabolic shape, Custom Macro is
the obvious choice. You would write a loop that calculates the new end point for each axis and the
program would do the rest.

Not Just Tool Paths


But Custom Macro is not limited to tool path generation. The real power of Custom Macro is that it
allows you to interact with the machine. For example, you can write a program that updates the
coordinate system automatically or opens the RS232C port and outputs data while the program is running.
If you want to add automatic clamping or inspection probes, you need to understand Custom Macro.

With a Custom Macro program, the instructions are written using variables and these variables can be
changed each time the program is called. For example, if a program is stored in memory to drill a bolt
circle, that program can be used with any main program to drill any size or pattern bolt circle. All that is
required is for different variables to be defined when the sub program (macro) is called. To see an
example of a custom macro program click one of the example links at the top of this page. You can also
checkout our Tips and Tricks page to see examples of Custom Macro in action.
Fixture Indicating Example (tip - save this page and then print it out for reference)

This example will use system variables to update the coordinates of new fixtures in
the G54-G59 fixture offsets. After positioning over the old zero point you will
indicate the new fixture and update the proper coordinate system (G54-G59). This
is easy to do with system variables. For example:

O0001(INDICATING PROGRAM);
G90G80G40G49G17G20;
N1G0G54G43H1X0Y0Z3.3;
#103=#5003; {Store Current Z Point}
#33=1; {Initialize Loop Counter TO 1}
#130=20; {Initialize Coordinate Counter TO 20}
#3006=1(INDICATE);
#104=#5003; {Store Manually Moved Z Point}
#5221=#5021; {Set New X Coordinate}
#5222=#5022; {Set New Y Coordinate}
G0Z#103; {Return to Initial Point}
WHILE[#33LT6]DO1; {Set Loop for Six Fixtures}
G0G[54+#33]X0Y0; {Position To Next Fixture Zero}
G0Z[#104+.3]; {Rapid Above Boss}
G1Z#104F10.0; {Feed the Indicator to the Boss}
#3006=1(MANUALLY INDICATE FIXTURE);
#[5221+#130]=#5021; {Reset X Coordinate}
#[5222+#130]=#5022; {Reset Y Coordinate}
G0Z#103; {Rapid to Initial Point}
#130=#130+20.0; {Increment Count to Next Coordinate System}
#33=#33+1; {Increment Counter}
END1; {End the Loop}
#3006=1(REMOVE INDICATOR);
G0G91G28Z2.0M9;
M30;
How It Works

When Cycle Start is pressed the machine rapids to the X0, Y0 of the old fixture, and the "Z" axis point set
in line N1. The #3006=1(INDICATE) halts the program and displays the prompt "INDICATE" on the
CRT screen. It does not matter what current screen is displayed. The screen will change to the
"OPERATOR MESSAGE" screen (System 10, 11, 15, 16-18 only).

You then mount your indicator and manually indicate the new fixture. The Z axis position that is dialed
becomes the new "Z0". The X and Y axis can be moved any amount necessary. Then instead of getting
the new location and manually entering it into the proper coordinate system, you simply go back into
"memory" and press Cycle Start.

The current machine position is loaded into the proper coordinates, the head rapids to the initial point and
moves to the next coordinate system. The head then rapids to .3" above the point set manually at G54. It
feeds the final .3" to protect the indicator.

After the last fixture is indicated, the #3006=1(REMOVE INDICATOR) causes the screen to change to
the "OPERATOR MESSAGE" screen and display the message. The first time you use this program is
scary, but it saves time after you are familiar with it. This program could be easily modified to use an
edge finder instead of an indicator. You can see that the standard CNC programming language doesn't
have this type of power.

The following figure shows a typical setup with six parts on a pallet. The fixture macro would be used to
indicate all six fixtures without having to manually enter the new locations for X0 and Y0. This is the
next best thing to buying a Renishaw probe!
The Bolt Circle Example (tip - save this page and then print it out for reference)

A bolt circle program is a good example of what Custom Macro can do. Looping, Trigonometry, IF-
GOTO, Local and Common variables are all used in this example. The bolt circle macro makes it quick
and easy to program a circular pattern of holes. Any of the "G" code drilling cycles can be used with the
bolt circle command. The pattern can be centered anywhere on the part and the first hole can be at any
angle. The information needed to use the command is listing in the following table:

X
X axis center of the Bolt Circle.
Y Y axis center of the Bolt Circle.
Z Depth to drill or bore the hole.
R Reference point above part.
D Diameter of bolt circle.
C "G" code to be used. Any standard Drilling or Boring Cycle can be use.
H Number of holes in the pattern.
A Starting angle of first hole from the X axis.
F Feed rate to be used.
T Dwell value if G82 cycle is used.
Q Peck interval if G73 or G83 peck drilling cycle is used.

A value for T and Q are not required for a G81 drilling cycle. All other addresses are necessary to drill the
pattern. This macro works with any control that has a macro B style language. The manual shows how
to write better error traps for newer controls.

Alarm Generation
If a required address is not given an alarm will occur when the command is executed. See the bottom of
the program for a list of the alarms. This is one advantage of Custom Macro, you can put error traps in
your cycles!

How the Cycle Works


The tool will rapid to the first hole. The cycle selected by "C" will be executed. The tool will return to the
reference point given by "R" if G99 is in effect or to the initial point if G98 is in effect. The tool will then
rapid to the next hole. The sequence will be repeated until all holes are completed. The complete
command for a 2.0” diameter bolt circle centered at X0.0 Y0.0 drilling 1.0” deep referenced .1” above the
part with 4 holes starting at 45 degrees would be:
G65 P9010 X0 Y0 Z-1. D2. R.1 C81. A45. H4. F10.

The macro program for the bolt circle is:

O9010(BOLT HOLE MACRO)


IF[#7EQ#0]GOTO2001
IF[#11EQ#0]GOTO2002
IF[#9LT#0]GOTO2003
IF[#3EQ#0]GOTO2004
IF[#18EQ#0]GOTO2005
#100=1
#27=#7/2.0
G0X[[COS[#1]*#27]+#24]Y[[SIN[#1]*#27]+#25]
G#3Z#26R#18F#9Q#17P#20
#101=360/#11
N1WHILE[#100LTABS[#11]]DO1
X[[[COS[[#101*#100]+#1]*#27]+#24]]Y[[[SIN[[#101*#100]+#1]*#27]+#25]]
#100=#100+1
END1
G0T02006
N2001#3000=1(NO DIAMETER GIVEN)
N2002#3000=2(NO HOLES GIVEN)
N2003#3000=3(NO FEED RATE "F" GIVEN)
N2004#3000=4(NO DRILL CYCLE GIVEN)
N2005#3000=20(NO REFERENCE POINT GIVEN)
(X=X AXIS CENTER)
(Y=Y AXIS CENTER)
(Z=Z AXIS DEPTH)
(R=REFERENCE POINT ABOVE PART)
(T=DWELL VALUE FOR G82)
(Q=PECK INTERVAL FOR G73,G83)
(H=NUMBER OF HOLES TO DRILL)
(A=START ANGLE OF FIRST HOLE)
(D=DIAMETER OF BOLT CIRCLE)
(C=DRILL CYCLE TO USE)
N2006M99
A Custom Macro For Tool Change Format

Much of CNC manual programming is redundant. Similar commands must be repeated on a fairly regular
basis, especially when tool changes must be made. Because these commands are only similar (not
identical), subprograms will not help when it comes to minimizing them. But if your control has custom
macro B (or any version of parametric programming), you can simplify the commands required for tool
changing.
Even if you program with a computer aided manufacturing (CAM) system, you must consider how
difficult it is for operators to run your programs. The techniques we show will simplify programming
(especially for manual programmers), ensure consistency for tool changing commands, make your
programs more fail-safe and make it easier for setup people and operators to rerun tools.
First, consider a typical series of commands that are needed when you make a tool change on a vertical
machining center. Of course, the specific commands for your particular machine(s) will vary. Similar
commands will be required for turning centers (or any multi-tool CNC machine tool).
N060 M09 (Turn off coolant)
N065 G91 G28 Z0 M19 (return to tool change position, orient spindle)
N070 T02 M06 (Place desired tool in spindle)
N075 G90 G54 S500 M03 T03 (Select absolute mode, fixture offset, start spindle and select next tool)
N080 G00 X1.5 Y2.0 (Rapid to first X and Y position)
N085 G43 H02 Z0.1 (Instate tool length compensation, rapid to first Z position)
N090 M08 (Start coolant)
Note that the structure of these commands will remain the same for every tool change you make. Only the
values of the numbers in bold italics will change from tool change to tool change. Again, these commands
are redundant and tedious to write. It’s easy for manual programmers to forget key words or commands.
Consider this custom macro call statement that can be used to invoke a special tool change custom macro.
N060 G65 P1000 T02 S500 X1.5 Y2.0 Z0.1 (Make tool change)
When the custom macro (O1000) is executed, it will cause the machine to do everything done in the
previous series of tool change commands. In our call statement, T represents the tool to be placed in the
spindle. Our macro will assume that the tool to be used after this one follows in sequence (tool three in
this case). If it does not, a W word (for waiting station) can be included in this command to specify which
tool is coming up next in the program. We’ve left W out, so we’re letting the custom macro assume that
the next tool will be station three. S specifies the spindle speed, and X, Y and Z specify the tool’s first
approach position.
Here is the simple custom macro.
O1000 (Tool change custom macro)
IF [#23 NE #0] GOTO 1 (If W is included in call, skip default)
#23 = #20 +1 (Set next waiting station tool to next number in sequence)
N1 M09 (Turn off coolant)
G91 G28 Z0 M19 (Return to tool change position, orient spindle)
T#20 M06 (Place desired tool in spindle)
G90 G54 S#19 M03 T#23 (Select absolute mode, fixture offset, start spindle and select next tool)
G00 X#24 Y#25 (Rapid to first X and Y position)
G43 H#20 Z#26 (Instate tool length compensation, rapid to first Z position)
M08 (Start coolant)
M99 (End of custom macro)
We’ve taken the set of tool change commands and replaced those hard-and-fixed values that change from
tool change to tool change with local variables (T is represented by #20, W by #23, S by #19, X by #24, Y
by #25 and Z by #26). We have also set a default value for W (#23) if it’s left out of the call statement.
Look at the first two commands of the custom macro. If W is left out of the call statement (as it is in our
example), the result of the IF statement will be false (W is vacant), and the next command (the default
setting command) will be executed. #23 will be set to a value of whatever T (#20) is plus 1. If W is
included in the call statement, #23 will have a value (#23 will not be vacant), the IF statement will be true
and the default setting command will be skipped.
Though our example custom macro doesn’t show it, you could also include words and commands in the
tool change format custom macro to make your programs more fail-safe. For example, you could include
G80 and G40 in line N1 (when the coolant is turned off) to ensure that canned cycles and cutter radius
compensation have been canceled. Most manual programmers will not do this, because they assume
they’ve programmed correctly. Right after the tool change command (M06), you could include some
safety commands to confirm that certain modes are still in their initialized states. Consider these
commands.
G17 G20 G40 (Set XY plane, inch mode, cancel cutter radius compensation)
G64 G69 G50.1 (Set normal cutting mode, cancel rotation, cancel mirror image)
G80 G94 (Cancel canned cycle, select feed per minute mode)
Again, these commands can be placed in the custom macro right after the tool change and will ensure that
the machine is in appropriate states. This is most important for the first tool the first time the program is
run.
What about rerunning tools? One important task that CNC setup people and operators must perform on a
regular basis is rerun tools. Our tool change format custom macro still allows rerunning tools. Actually, it
will simplify the task. The restart block for rerunning tools is simply the call statement (G65 command)
for each tool change. Everything required for restarting tools, including a movement to the appropriate
tool change position, is included in the custom macro.
Also, if your setup people and operators are currently restarting tools by scanning to the T word, they
have to scan twice (assuming you have a machine with a double arm tool changer). The first time they
scan, they find the command in which the tool is being placed in the waiting station. The second time,
they find where it is actually being placed in the spindle. With the tool change custom macro, only one
scan is required.
A Double-Depth Hole Machining Custom Macro
All machining center controls come with a set of helpful hole-machining canned cycles. Most control
manufacturers use G codes from G81 through G89 to name them (G81 for drilling, G82 for counter-
boring, G83 for peck drilling and so on). While these canned cycles can easily handle the bulk of hole
machining operations, there may be times when your application requires that you do something
unusual—something that the standard canned cycles can’t handle. Figure 1 shows an example of such a
problem.
This application requires a drill to machine through two surfaces. While you can handle this application
with G81, there is no way to handle it cleanly. You must either specify two G81 commands (causing the
tool to retract after the top surface is machined, thereby wasting time), or you must specify the overall
depth with one G81 command (which wastes even more time while the drill cuts air between the surfaces).
While this is a pretty simple limitation of canned cycles, keep in mind that you can create a custom macro
to help machine holes whenever you encounter a limitation of standard hole-machining canned cycles.
Figure 1 shows the letter address arguments to be used in the calling G65 command. Here is a portion of a
main program that uses our custom macro:
O0001 (Program number)
N005 G90 G54 S1000 M03 (Start spindle)
N010 G00 X1.0 Y1.0 (Move to XY position)
N015 G43 H01 Z0.1 (Instate tool length compensation)
N020 G65 P1000 X1.0 Y1.0 R0.1 Z-1.0 C-1.5 K-2.5 F4.0 A6.0 (Machine hole)
N025 G91 G28 Z0 (Go to the zero return position in Z)
N030 M01 (Optional stop)
Notice from Figure 1 and line N020 above that we’re providing the ability to use two different feed rates.
It is likely that the bottom surface will have better support than the top surface, meaning you must feed
slower through the top surface than the bottom one.
Here is the custom macro:
O1000 (Program number)
G00 X#24 Y#25 (Move to XY position)
G00 Z#18 (Rapid to R plane)
G01 Z-#26 F#9 (Drill upper surface)
G00 Z#3 (Rapid to R plane above lower surface)
G01 Z-#6 F#1 (Drill lower surface)
G00 Z#18 (Retract from hole)
M99 (End of custom macro)
Again, this isn’t an extremely powerful application, but it does illustrate how you can develop your own
canned cycles.
Remember that you can also call this macro with a user-defined G code. You can even make it a modal
custom macro call (with a user defined G code). However, parameters must be appropriately set. These
two additions will make your hole-machining custom macro behave very much like any control-based
canned cycle.
A circle milling custom macro
Modern Machine Shop, Feb, 2005 by Mike LynchOlder model Fanuc controls and some current
model Fanuc-compatible controls have a feature to help you machine round counterbores with an end mill
(G12 and G13). For some reason, Fanuc stopped providing these helpful G codes. If your control has
custom macro B, you can get them back. This column shows one of these custom macros--the clockwise
circle milling custom macro (like G12). With minor modifications, you can create the counter-clockwise
version. This drawing shows the arguments to be used in the G65 command.

Here is a calling program that uses the circle milling custom macro:

O0001 (Main program)


.
(Machine hole)
.
N075 T04 M06 (1.0 END MILL)
N080 G54 G90 S1200 M03 T05 (Start
spindle)
N085 G00 X2.5 Y2.0 (Rapid to hole-center)
N090 G43 H04 Z0.1 (Rapid approach
in Z)
N095 M08 (Turn on
coolant)
N100 G65 P1000 X2.5
Y2.0 D3.0 R0.1 Z-1.0
A1.25 T1.0 F5.0 H1.0
(Mill circle)
N105 G91 G28 Z0 M19
(Return to tool change position)
N110 M01 (Optional
stop)
.
(Program continues)
.
N200 M30 (End of main
program)
The H word is used to specify whether a hole currently exists in the center of the circle to be milled. If it
does, the end mill will fast feed to the work surface in Z. If not, it will feed at half the specified feed rate
(F word in G65 command).

Here is the custom macro:

O1000 (Circle milling custom macro)


(TEST FOR MISSING ARGUMENTS)
N1 IF [#24 EQ #0] GOTO 95 (X)
IF [#25 EQ #0] GOTO 95 (Y)
IF [#26 EQ #0] GOTO 95 (Z)
IF [#18 EQ #0] GOTO 95 (R)
IF [#7 EQ #0] GOTO 95 (D)
IF [#20 EQ #0] GOTO 95 (T)
IF [#9 EQ #0] GOTO 95 (F)
IF [#1 EQ #0] GOTO 95 (A)
IF[#11 EQ #0] GOTO 95 (H)
(A MUST BE BIGGER THAN HALF
OF T)
IF [#1 GT [#20/2 +0.11] GOTO 2
#3000=101(APPROACH RADIUS TOO
SMALL)
(RAPID TO APPROACH POSITION)
N2 G00 X#24 Y#25]
Z#18

(TEST FOR HOLE IN CENTER)


IF[#11 EQ 1.0] GOTO 5
G01 Z#26 F#9
GOTO 6
N5 G01 Z#26 F[#9 * 5]

(MOTIONS TO MILL CIRCLE)


N6 G01 Y[#25 + #7/2 - #1] F#9
X[#24 - #1 + #20/2]
G02 X#24 Y[#25 + #7/2 - #20/2] R[#1
-#20/2]
J-[#7/2 - #20/2]
X[#24 + #1 - #20/21 Y[#25 + #7/2 -#11
R[#1 - #20/21
G00 Z#26
X#24 Y#25
GOTO 99
N95 #3000=100 (INPUTVALUE MISSING)
N99 M99 (End of custom macro)
MIKE LYNCH, CNC Concepts, Inc..

44 Little Cahill Road, Cary, IL 60013

E-mail: lynch@cncci.com, Internet: www.cncci.com

COPYRIGHT 2005 Gardner Publications, Inc.


COPYRIGHT 2005 Gale Group
A letter engraving custom macro
by Bruce Litton

Here is a letter engraving program that will engrave the letters A-Z (any size) for any Fanuc or Fanuc
compatible control having custom macro B. The control system we currently have is the Yasnac MX3,
(programs should work on Fanuc 10m,11m,16m,18m controls). Without the control option for scaling the
task of making letters of different size was challenge!

Instructions for use:.


O7000 is an example program that engraves the word "HELLO". We'll use it to explain the use of
variables:

%
O7000(MASTER ENGRAVING PROGRAM)
G90G54J1
N10M3S8000
G90G0X-.2Y0. M8
G43H20Z3.
#503=1.000
#500=[#503/1.782]
#501=.100
#502=1.000
G65P7001A8.0B-0.02C15.0D40.0E1.0 (H)
G65P7001A5.0B-.02C15.0D40.0E1.0 (E)
G65P7001A12.0B-.02C15.0D40.0E1.0 (L)
G65P7001A12.0B-.02C15.0D40.E01.0 (L)
G65P7001A15.0B-.02C15.0D40.0E0.0 (O)
N20M98P8998 M30
%
NOTE: You can keep from having to retype all of the commands in these programs by using your Internet
browser's copy function. Simply highlight the program, copy it, and then open your word processor or
CNC text editor. Use the paste function to bring the program into your text editor. While there will be
some editing to do (you'll likely have to eliminate some funny characters and add carriage returns), this
will save a lot of typing!
Understanding program O7000
Program O7000 contains instructions and calculations for the CNC control. Variables used in G65
commands:

A=Code number for letter (0=SPACE, 1.-A, 2.-B, 3.-C, etc., see full list below)
B=Z depth from program zero
C=Plunging feedrate for the Z axis
D=XY feedrate
E=Step over for next letter? (1.=YES,0.=NO)
#503 before the G65 commands is the letter height (1.0 inch in the example)
#500, #501, #502 set the width and aspect ratio for the letters. You can leave them as shown in the
example.
The command "G65P7001A8.0B-0.02C15.0D40.0E1.0" will machine the letter H (see code list for A
word below). It will be machined 0.02 deep in Z, plunged at 15.0 ipm and machined (XY) at 40.0 ipm.
The E1.0 specifies that the machine must move over by the letter spacing to get ready for machining the
next letter. If E is set to zero (as it should be after your last letter), there will be no move over after the
letter is machined.

Code numbers are as follows:


SPACE-0. A-1. B-2. C-3. D-4. E-5. F-6. G-7. H-8. I-9. J-10. K-11. L-12. M-13. N-14. O-15. P-16. Q-17.
R-18. S-19. T-20. U-21. V-22. W-23. X-24. Y-25. Z-26. (Note that you must include a decimal point after
each code number in the A word.)

The lettering program


Program O7001 contains all the lettering movements.

%
O7001(LETTER PROGRAMS)
IF[#1EQ0.]GOTO100
IF[#1EQ1.]GOTO1
IF[#1EQ2.]GOTO2
IF[#1EQ3.]GOTO3
IF[#1EQ4.]GOTO4
IF[#1EQ5.]GOTO5
IF[#1EQ6.]GOTO6
IF[#1EQ7.]GOTO7
IF[#1EQ8.]GOTO8
IF[#1EQ9.]GOTO9
IF[#1EQ10.]GOTO10
IF[#1EQ11.]GOTO11
IF[#1EQ12.]GOTO12
IF[#1EQ13.]GOTO13
IF[#1EQ14.]GOTO14
IF[#1EQ15.]GOTO15
IF[#1EQ16.]GOTO16
IF[#1EQ17.]GOTO17
IF[#1EQ18.]GOTO18
IF[#1EQ19.]GOTO19
IF[#1EQ20.]GOTO20
IF[#1EQ21.]GOTO21
IF[#1EQ22.]GOTO22
IF[#1EQ23.]GOTO23
IF[#1EQ24.]GOTO24
IF[#1EQ25.]GOTO25
IF[#1EQ26.]GOTO26

(A LETTER PROGRAM)
N1G91G0X[#500*.2203]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*.7796]Y[#500*1.782]F#7
X[#500*.7796]Y-[#500*1.782]
G90G0Z#502
G91G0X-[#500*.4018]Y[#500*.9186]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.7554]F#7
G90G0Z#502
G91G0X-[#500*.6222]Y-[#500*1.0366]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200
(B LETTER PROGRAM)
N2G91G0X[#500*.1923]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*1.041]
G2R[#500*.4179]J-[#500*.4179]Y-[#500*.8358]
G1X-[#500*1.041]
G90G0Z#502
G91G0Y-[#500*.9462]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*1.1422]F#7
G3R[#500*.4731]J[#500*.4731]Y[#500*.9462]
G90G0Z#502
G91G0X-[#500*1.3345]Y-[#500*1.0642]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(C LETTER PROGRAM)
N3G91G0X[#500*1.3288]Y[#500*.1719]
G90G0Z#501
G90G1Z#2F#3
G91G1
G2R[#500*.891]I-[#500*.3288] J[#500*.828]
Y[#500*.828]
X-[#500*1.2198]F#7
G2R[#500*.891]I[#500*.891]X[#500*1.2198]Y[#500*.828]
G90G0Z#502
G91G0X-[#500*1.3288]Y-[#500*1.828]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(D LETTER PROGRAM)
N4G91G0X[#500*.1129]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*.633]
G2R[#500*.891]J-[#500*.891]Y-[#500*1.782]
G1X-[#500*.633]
G90G0Z#502
G91G0X-[#500*.1129]Y-[#500*.118]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(E LETTER PROGRAM)
N5G91G0X[#500*1.5895]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*1.1791]F#7
Y[#500*1.782]
X[#500*1.1791]
G90G0Z#502
G91G0X-[#500*.4535]Y-[#500*.8319]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.7256]F#7
G90G0Z#502
G91G0X-[#500*.4104]Y-[#500*1.068]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(F LETTER PROGRAM)
N6G91G0X[#500*.2474]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*1.5051]
G90G0Z#502
G91G0X-[#500*.7306]Y-[#500*.891]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.7744]F#7
G90G0Z#502
G91G0X-[#500*.2474]Y-[#500*1.009]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(G LETTER PROGRAM)
N7G91G0X[#500*1.4273]Y[#500*1.009]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*.4636]F#7
G2R[#500*.891]X-[#500*1.782]I-[#500*.891]
G2R[#500*.891]I[#500*.891]X[#500*1.2891]Y[#500*.797]
G90G0Z#502
G91G0X-[#500*1.3981]Y-[#500*1.806]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(H LETTER PROGRAM)
N8G91G0X[#500*.2587]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
G90G0Z#502
G91G0X[#500*1.4825]
G90G0Z#501
G90G1Z#2F#3
G91G1Y-[#500*1.782]F#7
G90G0Z#502
G91G0Y[#500*.891]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*1.4825]F#7
G90G0Z#502
G91G0X-[#500*.2587]Y-[#500*1.009]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(I LETTER PROGRAM)
N9G91G0X[#500*.4908]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*1.0182]F#7
G90G0Z#502
G91G0X-[#500*.5091]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
G90G0Z#502
G91G0X-[#500*.5091]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*1.0182]F#7
G90G0Z#502
G91G0X-[#500*1.5091]Y-[#500*1.8999]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(J LETTER PROGRAM)
N10G91G0X[#500*.9405]Y[#500*1.9]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*.7128]F#7
G90G0Z#502
G91G0X-[#500*.3564]
G90G0Z#501
G90G1Z#2F#3
G91G1Y-[#500*1.3067]F#7
G2R[#500*.4752]I-[#500*.4752]X-[#500*.9504]
G90G0Z#502
G91G0X-[#500*.3465]Y-[#500*.5932]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(K LETTER PROGRAM)
N11G91G0X[#500*.4174]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
G90G0Z#502
G91G0Y-[#500*.891]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*1.0145]Y[#500*.891]F#7
G90G0Z#502
G91G0X-[#500*.7972]Y-[#500*.7001]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*.9478]Y-[#500*1.0818]F#7
G90G0Z#502
G91G0X-[#500*1.5825]Y-[#500*.118]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(L LETTER PROGRAM)
N12G91G0X[#500*1.4625]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.9251]F#7
Y[#500*1.782]
G90G0Z#502
G91G0X-[#500*.5374]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(M LETTER PROGRAM)
N13G91G0X[#500*.3317]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*.6682]Y-[#500*1.782]
X[#500*.6682]Y[#500*1.782]
Y-[#500*1.782]
G90G0Z#502
G91G0X-[#500*1.6682]Y-[#500*.118]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(N LETTER PROGRAM)
N14G91G0X[#500*.2705]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*1.4589]Y-[#500*1.782]
Y[#500*1.782]
G90G0Z#502
G91G0X-[#500*1.7294]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(O LETTER PROGRAM)
N15G91G0X[#500*1.6364]Y[#500*.7544]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*.5091]F#7
G3R[#500*.6364]I-[#500*.6364]X-[#500*1.2728]
G1Y-[#500*.5091]
G3R[#500*.6364]I[#500*.6364]X[#500*1.2728]
G90G0Z#502
G91G0X-[#500*1.6364]Y-[#500*.7544]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200
(P LETTER PROGRAM)
N16G91G0X[#500*.4918]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*.5722]
G2R[#500*.4440]J-[#500*.4440]Y-[#500*.8880]
G1X-[#500*.5722]
G90G0Z#502
G91G0X-[#500*.4918]Y-[#500*1.0119]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(Q LETTER PROGRAM)
N17G91G0X[#500*1.714]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.4700]Y[#500*.4700]F#7
G90G0Z#502
G91G0X[#500*.3923]Y[#500*.1664]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*.5091]F#7
G3R[#500*.6364]I-[#500*.6364]X-[#500*1.2728]
G1Y-[#500*.5091]
G3R[#500*.6364]I[#500*.6364]X[#500*1.2728]
G90G0Z#502
G91G0X-[#500*1.6364]Y-[#500*.7544]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

( R LETTER PROGRAM)
N18G91G0X[#500*.4129]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
X[#500*.7934]
G2R[#500*.3807]J-[#500*.3807]Y-[#500*.7614]
G1X-[#500*.7934]
G90G0Z#502
G91G0X[#500*.6739]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*.5001]Y-[#500*1.0205]F#7
G90G0Z#502
G91G0X-[#500*1.5870]Y-[#500*.118]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(S LETTER PROGRAM)
N19G91G0X[#500*1.6543]Y[#500*1.6772]
G90G0Z#501
G90G1Z#2F#3
G91
G3R[#500*.891]I-[#500*.5929]J-[#500*.6650]X-[#500*.6682]Y[#500*.2227]F#7
G3R[#500*.4455]J-[#500*.4455]Y-[#500*.891]
G1X[#500*.2572]
G2R[#500*.4469]I-[#500*.0359]J-[#500*.4455]X[#500*.4109]Y-[#500*.4455]
G2R[#500*.4469]I-[#500*.4469]X-[#500*.4109]Y-[#500*.4455] G1X-[#500*.3100]
G2R[#500*.891]I[#500*.0263]J[#500*.8906]X-[#500*.5877]Y[#500*.2450]
G90G0Z#502
G91G0X-[#500*.3456]Y-[#500*.3630]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(T LETTER PROGRAM)
N20G91G0X[#500*1.]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1Y[#500*1.782]F#7
G90G0Z#502
G91G0X-[#500*.891]
G90G0Z#501
G90G1Z#2F#3
G91G1X[#500*1.782]F#7
G90G0Z#502
G91G0X-[#500*1.891]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(U LETTER PROGRAM)
N21G91G0X[#500*1.7637]Y[#500*1.9]
G90G0Z#501
G90G1Z#2F#3
G91G1Y-[#500*1.0182]F#7
G2R[#500*.7637]I-[#500*.7637]X-[#500*1.5274]
G1Y[#500*1.0182]
G90G0Z#502
G91G0X-[#500*.2362]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(V LETTER PROGRAM)
N22G91G0X[#500*1.6682]Y[#500*1.9]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.6682]Y-[#500*1.782]F#7
X-[#500*.6682]Y[#500*1.782]
G90G0Z#502
G91G0X-[#500*.3317]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(W LETTER PROGRAM)
N23G91G0X[#500*1.8591]Y[#500*1.9]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.3500]Y-[#500*1.782]F#7
X-[#500*.5091]Y[#500*1.782]
X-[#500*.5091]Y-[#500*1.782]
X-[#500*.3500]Y[#500*1.782]
G90G0Z#502
G91G0X-[#500*.1408]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(X LETTER PROGRAM)
N24G91G0X[#500*1.8909]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*1.782]Y[#500*1.782]F#7
G90G0Z#502
G91G0X[#500*1.782]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*1.782]Y-[#500*1.782]F#7
G90G0Z#502
G91G0X-[#500*.109]Y-[#500*.118]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(Y LETTER PROGRAM)
N25G91G0X[#500*1.6615]Y[#500*1.9]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.6615]Y-[#500*.882]F#7
Y-[#500*.8909]
G90G0Z#502
G91G0Y[#500*.8909]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*.6615]Y[#500*.882]F#7
G90G0Z#502
G91G0X-[#500*.3385]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(Z LETTER PROGRAM)
N26G91G0X[#500*1.891]Y[#500*.118]
G90G0Z#501
G90G1Z#2F#3
G91G1X-[#500*1.782]F#7
X[#500*1.782]Y[#500*1.782]
X-[#500*1.782]
G90G0Z#502
G91G0X-[#500*.109]Y-[#500*1.9]
IF[#8EQ1.]GOTO100
IF[#8EQ0.]GOTO200

(STEP OVER PROGRAM)


N100G90G0Z#502
G91G0X[#500*2.0000]
N200M99
%

Das könnte Ihnen auch gefallen