This is a duplicate of my last reply, I forgot to attach the file.
Sorry about that. Firewalls don't like .bas extension.
Attached is the same file with the extension changed to txt.
Download the file and change the extension back to bas.
Note: I have NT on my machine and NT has Qbasic available.
If you are running 2000 or XP I don't know whether it will work or not. It
may have to be compiled before you can use it. Anyone have the answer to
this.
Bill Wepking
Landis Gardner
-----Original Message-----
From: Michael Senack [mailto:[EMAIL PROTECTED]
Sent: Thursday, November 20, 2003 8:12 AM
To: Wepking, Bill W.
Subject: RE: [mfg-smartcam] Tape 2 MCL
Unfortunately your attachment was quarantined by out virus software.
Could you send the file without an extension on it, and when I receive
it I'll rename it with the extension.
If you have time to do this, and resend the file, could you please let
me know what the extension is.
What Basic are you referring to in your comment "if you have basic
available" because, I have access to good old GWBasic and a newer Power
Basic.
Thanks.
Regards,
Michael Senack
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Wepking, Bill W.
Sent: Wednesday, November 19, 2003 3:04 PM
To: Mfg-Smartcam (E-mail)
Subject: [mfg-smartcam] Tape 2 MCL
Group,
The subject of tape 2 shape comes up every so often. We used TTS for
some
time but I felt it was very limited so I wrote a basic program that
converts
tape files to macro (MCL) files. This works pretty good and gives you
the
option of editing the macro before executing it. I would really
appreciate
it, if you have basic available, if some of you would try it and give me
some feedback as to how well it works. It has some specific code in it
for
our machines but should work with most standard tape output. Just
answer
the questions at the beginning for the machine output.
The tape file must be copied to "c:\temp.txt"
and the macro file created is "c:\tape2shp.mcl"
If it works you can modify it for any specific machine.
Bill Wepking
Landis Gardner
DIM SHARED TMP
DIM SHARED TMP$
DIM SHARED LN$
'--------------------------------------------------
' the file translted by this program is C:\TEMP.TXT
' the tape file must be copied to C:\TEMP.TXT first
' c:\tape2shp.mcl is the default output file
'--------------------------------------------------
CONST PI = 3.1415927# / 180
CLS
CLOSE
'GOTO 5
' spindle always normal to Z axis
' absolute I & J arc centers G2 and G3 "not" model
' F0 forces rapid to POINT
' DP$ is the depth of holes
' DR$ is the direction of arcs 0=cw 1=ccw
PRINT CHR$(13)
PRINT "set MTYPE = 0 for milling machine with or without table indexing"
PRINT "set MTYPE = 1 for milling machine with head indexing M code positioning"
PRINT "set MTYPE = 2 for lathe"
PRINT "set MTYPE = 3 for lathe with live tooling"
PRINT CHR$(13)
INPUT "What is the machine type (MTYPE)"; MTYPE
'CLS
PRINT CHR$(13)
PRINT "set INJ to 0 for absolute I and J values"
PRINT "set INJ to 1 for incremental I and J values center to start"
PRINT "set INJ to 2 for incremental I and J values start to center"
PRINT "set INJ to 3 for unsigned incremental I and J values start to center"
PRINT CHR$(13)
INPUT "What are I and J values (INJ)"; INJ
PRINT CHR$(13)
PRINT "set NEWTOOL to 0 for tool change based on M6"
PRINT "set NEWTOOL to 1 for tool change based on T code"
PRINT "set NEWTOOL to 2 for tool change based on D code"
PRINT CHR$(13)
INPUT "What ativates a tool change (NEWTOOL)"; NEWTOOL
5
PRINT CHR$(13)
PRINT "For adjusting Z output when translating into SmartCAM"
PRINT CHR$(13)
INPUT "What is the Z offset"; OFFSETZ
COMP = 0
PRINT CHR$(13)
INPUT "DISGUARD G41 G42 STATEMENTS (INCREMENTAL VECTORS) Y/N"; YN$
YN$ = UCASE$(YN$)
IF YN$ = "Y" THEN
COMP = 1
END IF
OPEN "c:\temp.txt" FOR INPUT AS #1
LINE INPUT #1, NA$
GOTO 9
CLOSE #1
'NA$ = "T:\193\E\E208518A.B-4"
MACH$ = MID$(NA$, 4, 3)
IF MACH$ = "020" THEN
MTYPE = 0
INJ = 0
OFFSETZ = 0
NEWTOOL = 0
COMP = 0
TB$ = "80"
END IF
IF MACH$ = "193" THEN
MTYPE = 0
INJ = 1
OFFSETZ = 0
NEWTOOL = 0
COMP = 0
TB$ = "90"
END IF
IF MACH$ = "230" THEN
MTYPE = 0
INJ = 0
OFFSETZ = 0
NEWTOOL = 0
COMP = 0
END IF
IF MACH$ = "053" THEN
MTYPE = 0
PRINT CHR$(13)
INPUT "What is the Z offset"; OFFSETZ
INJ = 3
NEWTOOL = 1
COMP = 1
TB$ = "53"
END IF
IF MACH$ = "500" THEN
MTYPE = 1
INJ = 2
OFFSETZ = 0
NEWTOOL = 0
COMP = 0
TB$ = "50"
END IF
IF MACH$ = "921" THEN
MTYPE = 2
INJ = 1
OFFSETZ = 0
NEWTOOL = 1
COMP = 0
TB$ = "92"
END IF
IF MACH$ = "900" THEN
MTYPE = 3
INJ = 0
OFFSETZ = 0
NEWTOOL = 2
COMP = 0
END IF
OPEN NA$ FOR INPUT AS #1
9
' c:\tape2shp.mcl is the default output file
OPEN "C:\tape2shp.mcl" FOR OUTPUT AS #2
PRINT #2, "NEW_INCH[]"
IF MTYPE = 0 OR MTYPE = 1 THEN
WP$ = "000"
PRINT #2, "DEF_PLANE[TY=2, FR=1, WP=" + WP$ + ", TP=" + WP$ + ", X1=0, Y1=0,"
PRINT #2, "Z1=0, RO=0, AA=0, AB=0, AC=0, ZD=0, MP=1]"
PRINT #2, "ON_LAYER[LY=1, WP=" + WP$ + ", LV=0, PT=?]"
END IF
IF MTYPE = 2 THEN
WP$ = "ZX_PLANE"
END IF
A = 0
LA = 0
B = 0
LB = 0
C = 0
LC = 0
A$ = "0"
LA$ = "0"
B$ = "0"
LB$ = "0"
C$ = "0"
LC$ = "0"
LT$ = "0"
T$ = "9999"
TLLIST$ = "TLS "
X$ = "0"
Y$ = "0"
Z$ = "0"
QT$ = CHR$(34)
STEP$ = "9999"
TUR$ = "1"
MOV$ = "POINT"
M = 999
100
IF EOF(1) THEN GOTO 450
LINE INPUT #1, LN$
IF LEN(LN$) > 99 THEN GOTO 100
PRINT , LN$
length = LEN(LN$)
IF length < 2 THEN GOTO 100
' this section reformats output specific to the 2300
WHILE INSTR(LN$, ",(") > 0
LN$ = LEFT$(LN$, INSTR(LN$, ",(") - 1) + MID$(LN$, INSTR(LN$, ",(") + 2, 99)
WEND
WHILE INSTR(LN$, "+L103),") > 0
LN$ = LEFT$(LN$, INSTR(LN$, "+L103),") - 1) + MID$(LN$, INSTR(LN$, "+L103),")
+ 6, 99)
WEND
WHILE INSTR(LN$, "+L103)") > 0
LN$ = LEFT$(LN$, INSTR(LN$, "+L103)") - 1)
WEND
WHILE INSTR(LN$, "Z,Z") > 0
LN$ = LEFT$(LN$, INSTR(LN$, "Z,Z") - 1) + "W" + MID$(LN$, INSTR(LN$, "Z,Z") +
3, 99)
WEND
' the next section removes all quotes from the lines, to complicated to handle in
macro commands
WHILE INSTR(LN$, QT$) > 0
LN$ = LEFT$(LN$, INSTR(LN$, QT$) - 1) + MID$(LN$, INSTR(LN$, QT$) + 1, 99)
WEND
' next section for manual tool changes on the 500
IF INSTR(LN$, "MANUALLY LOAD T") > 0 THEN
T = VAL(MID$(LN$, INSTR(LN$, "MANUALLY LOAD T") + 15, 3))
T$ = RIGHT$(STR$(T), LEN(STR$(T)) - 1)
TLCHG = 1
END IF
' next section for index's on the 053 "INDEX" in a comment
IF INSTR(LN$, "INDEX") > 0 THEN
INPUT "DO YOU WANT TO ENTER A TABLE INDEX Y/N"; YN$
YN$ = UCASE$(YN$)
IF YN$ = "Y" THEN
COLOR 13, 0
PRINT , "The last index was", B$
INPUT "What is the TABLE INDEX VALUE"; B
COLOR 7, 0
END IF
END IF
' find comments and put them in the MSG$ var
IF INSTR(LN$, "(") > 0 THEN
v1 = INSTR(LN$, "(")
MSG$ = MID$(LN$, INSTR(LN$, "(") + 1, INSTR(LN$, ")") - INSTR(LN$, "(") - 1)
END IF
length = LEN(LN$)
v1 = 1
WHILE v1 < length
CH$ = MID$(LN$, v1, 1)
' testing for output that can't be translated
IF CH$ = "(" THEN GOTO 200
IF CH$ = "<" THEN GOTO 200
IF CH$ = "#" THEN GOTO 200
IF CH$ = "!" THEN GOTO 200
IF CH$ = "%" THEN GOTO 200
IF MID$(LN$, v1, 2) = "IF" THEN GOTO 200
IF CH$ >= "A" AND CH$ <= "Z" THEN
' PRINT , CH$
v2 = 1
WHILE v2 < 9
TMP$ = MID$(LN$, v1 + v2, 1)
IF v2 > 2 AND TMP$ = "+" THEN 110
IF TMP$ = "-" THEN v2 = v2 + 1
IF TMP$ = "+" THEN v2 = v2 + 1
IF TMP$ = "." THEN v2 = v2 + 1
IF TMP$ = "0" THEN v2 = v2 + 1
IF TMP$ = "1" THEN v2 = v2 + 1
IF TMP$ = "2" THEN v2 = v2 + 1
IF TMP$ = "3" THEN v2 = v2 + 1
IF TMP$ = "4" THEN v2 = v2 + 1
IF TMP$ = "5" THEN v2 = v2 + 1
IF TMP$ = "6" THEN v2 = v2 + 1
IF TMP$ = "7" THEN v2 = v2 + 1
IF TMP$ = "8" THEN v2 = v2 + 1
IF TMP$ = "9" THEN v2 = v2 + 1
IF TMP$ >= "A" AND TMP$ <= "Z" THEN 110
IF TMP$ = "," THEN 110
IF TMP$ = "%" THEN 110
IF TMP$ = "!" THEN 110
IF TMP$ = "(" THEN 110
IF TMP$ = "" THEN 110
IF TMP$ = " " THEN 110
IF TMP$ = "#" THEN 110
IF TMP$ = "<" THEN 110
IF TMP$ = "_" THEN 110
WEND
110
v2 = v2 - 1
IF CH$ = "A" THEN
GOSUB Getvalues
A = TMP
END IF
IF CH$ = "B" THEN
IF MTYPE = 0 THEN
GOSUB Getvalues
B = TMP
B = ABS(B)
ELSE
B = VAL(MID$(LN$, v1 + 1, v2))
END IF
END IF
IF CH$ = "C" THEN
IF MTYPE <> 2 THEN
GOSUB Getvalues
C = TMP
END IF
END IF
IF CH$ = "D" THEN
D = VAL(MID$(LN$, v1 + 1, v2))
IF NEWTOOL = 2 THEN T$ = RIGHT$(STR$(D), LEN(STR$(D)) - 1)
END IF
IF CH$ = "F" THEN
GOSUB Getvalues
F = TMP
IF F <> 0 THEN F$ = STR$(F)
IF F = 0 AND MOV$ <> "CLEAR" THEN MOV$ = "POINT"
END IF
IF CH$ = "G" THEN
G = VAL(MID$(LN$, v1 + 1, v2))
IF G = 10 THEN GOTO 200
IF G = 52 THEN GOTO 200
IF G = 4 THEN GOTO 200 ' dwell
IF G = 53 THEN SUSPEND = 1
IF G = 53 THEN GOTO 200
IF G = 41 AND COMP = 1 THEN GOTO 200
IF G = 42 AND COMP = 1 THEN GOTO 200
IF G = 0 THEN MOV$ = "POINT"
IF G = 1 THEN MOV$ = "LINE"
IF G = 2 THEN MOV$ = "ARC": DR = 0
IF G = 3 THEN MOV$ = "ARC": DR = 1
IF G > 80 AND G < 90 THEN MOV$ = "HOLE"
IF G = 884 THEN MOV$ = "HOLE"
IF G = 80 THEN MOV$ = "CANCLE"
IF G = 98 THEN MOV$ = "CLEAR"
IF G = 99 THEN MOV$ = "CLEAROFF"
END IF
IF CH$ = "I" THEN
GOSUB Getvalues
I = TMP
MOV$ = "ARC"
END IF
IF CH$ = "J" THEN
GOSUB Getvalues
J = TMP
MOV$ = "ARC"
END IF
IF CH$ = "K" THEN
GOSUB Getvalues
K = TMP
END IF
'next line specific to the 2300
IF CH$ = "L" AND MID$(LN$, v1 + 1, v2) = "3090" THEN Z = 41
IF CH$ = "M" THEN
M = VAL(MID$(LN$, v1 + 1, v2))
IF NEWTOOL = 0 AND M = 6 THEN TLCHG = 1
IF NEWTOOL = 2 AND M = 6 THEN TLCHG = 1
' this section translates indexing codes on the 500
IF MTYPE = 1 THEN ' M code indexing
IF M = 79 THEN A = 0
IF M = 79 THEN C = 0
IF M = 50 THEN C = 90
IF M = 51 THEN C = 180
IF M = 52 THEN C = 270
IF M = 53 THEN C = 0
IF M > 49 AND M < 54 THEN SUSPEND = 1
IF M = 61 THEN A = 45
IF M = 62 THEN A = 90: C = 180
END IF
END IF
IF CH$ = "N" THEN
TUR$ = "1"
TB$ = "10"
END IF
IF CH$ = "O" THEN
TUR$ = "2"
TB$ = "20"
END IF
IF CH$ = "Q" THEN Q$ = MID$(LN$, v1 + 1, v2)
IF CH$ = "R" THEN
GOSUB Getvalues
R = TMP
END IF
IF CH$ = "S" THEN
GOSUB Getvalues
S = TMP
IF S <> 0 THEN S$ = STR$(S)
END IF
IF CH$ = "T" THEN
T = VAL(MID$(LN$, v1 + 1, v2))
IF NEWTOOL <> 2 THEN T$ = RIGHT$(STR$(T), LEN(STR$(T)) - 1)
IF NEWTOOL = 1 THEN TLCHG = 1
END IF
IF CH$ = "U" THEN
GOSUB Getvalues
IF MTYPE = 3 THEN
X = TMP
ELSE
U = TMP
END IF
END IF
IF CH$ = "V" THEN
GOSUB Getvalues
V = TMP
END IF
IF CH$ = "W" THEN
GOSUB Getvalues
IF MTYPE = 3 THEN
Z = TMP
ELSE
W = TMP
END IF
END IF
IF CH$ = "X" THEN
GOSUB Getvalues
X = TMP
END IF
IF CH$ = "Y" THEN
GOSUB Getvalues
Y = TMP
END IF
IF CH$ = "Z" THEN
GOSUB Getvalues
Z = TMP
END IF
v1 = v1 + v2
END IF
v1 = v1 + 1
WEND
200
PRINT #2, "//" + LN$
A$ = RIGHT$(STR$(A), LEN(STR$(A)) - 1)
B$ = RIGHT$(STR$(B), LEN(STR$(B)) - 1)
C$ = RIGHT$(STR$(C), LEN(STR$(C)) - 1)
DR$ = STR$(DR)
I$ = STR$(I)
J$ = STR$(J)
X$ = STR$(X)
Y$ = STR$(Y)
Z$ = STR$(Z + W + OFFSETZ)
R$ = STR$(R - .1 + W + OFFSETZ)
DP$ = Z$
' section for machine with head indexing
IF MTYPE = 1 THEN
CA = COS(A * PI)
IF CA < .000001 AND CA > -.000001 THEN CA = 0
IF CA < -.99999 AND CA > -1.000001 THEN CA = -1
IF CA < 1.000001 AND CA > .99999 THEN CA = 1
SA = SIN(A * PI)
IF SA < .000001 AND SA > -.000001 THEN SA = 0
IF SA < -.99999 AND SA > -1.000001 THEN SA = -1
IF SA < 1.000001 AND SA > .99999 THEN SA = 1
CC = COS(C * -1 * PI)
IF CC < .000001 AND CC > -.000001 THEN CC = 0
IF CC < -.99999 AND CC > -1.000001 THEN CC = -1
IF CC < 1.000001 AND CC > .99999 THEN CC = 1
SC = SIN(C * -1 * PI)
IF SC < .000001 AND SC > -.000001 THEN SC = 0
IF SC < -.99999 AND SC > -1.000001 THEN SC = -1
IF SC < 1.000001 AND SC > .99999 THEN SC = 1
X2 = X * CC - Y * SC
Y0 = X * SC + Y * CC
Y2 = Y0 * CA + Z * SA
Z2 = -Y0 * SA + Z * CA
R2 = R - .1
IF C = 0 AND A = 90 THEN
R2 = (R + .1) * -1
J$ = STR$(K)
DR$ = STR$(ABS(DR - 1))
END IF
IF C = 90 THEN
R2 = R - .1
I$ = STR$(J)
J$ = STR$(K)
END IF
IF C = 180 THEN
R2 = R - .1
I$ = STR$(I * -1)
J$ = STR$(K)
END IF
IF C = 270 THEN
R2 = (R + .1) * -1
I$ = STR$(J * -1)
J$ = STR$(K)
DR$ = STR$(ABS(DR - 1))
END IF
X$ = STR$(X2)
Y$ = STR$(Y2)
Z$ = STR$(Z2)
R$ = STR$(R2)
DP$ = Z$
END IF
IF MSG$ > " " THEN
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + Z$ + ", TX=" + QT$ +
"#S1=" + MSG$ + QT$ + "]"
MSG$ = ""
END IF
' test for milling head on turnmill
IF INSTR(LN$, "CLS,MILL") > 0 THEN
WP$ = "XY_PLANE"
GOTO 350
END IF
' test for turning head on turnmill
IF INSTR(LN$, "CLS,TURN") > 0 THEN
WP$ = "ZX_PLANE"
END IF
IF WP$ = "ZX_PLANE" THEN
' reverse X, I and arc direction for cuts below center "lathe"
ORNT$ = "0"
IF X < -.1 THEN
X = X * -1
I = I * -1
DR$ = STR$(ABS(DR - 1))
ORNT$ = "1"
END IF
X$ = STR$(Z)
Y$ = STR$(X)
Z$ = "0"
I$ = STR$(K)
J$ = STR$(I)
END IF
' change C axis output to X Y coordinates turnmill
IF WP$ = "XY_PLANE" THEN
IF Y = 0 THEN
C = VAL(C$)
IF C < .000001 AND C > -.000001 THEN C = 0
CC = COS(C * PI)
IF CC < .000001 AND CC > -.000001 THEN CC = 0
IF CC < -.99999 AND CC > -1.000001 THEN CC = -1
IF CC < 1.000001 AND CC > .99999 THEN CC = 1
SC = SIN(C * PI)
IF SC < .000001 AND SC > -.000001 THEN SC = 0
IF SC < -.99999 AND SC > -1.000001 THEN SC = -1
IF SC < 1.000001 AND SC > .99999 THEN SC = 1
X$ = STR$(X * CC)
Y$ = STR$(X * SC)
Z$ = STR$(Z)
DP$ = Z$
ELSE
X$ = STR$(X)
Y$ = STR$(Y)
Z$ = STR$(Z)
DP$ = Z$
END IF
END IF
' create workplanes
IF A$ <> LA$ OR B$ <> LB$ OR C$ <> LC$ THEN
IF MTYPE = 0 OR MTYPE = 1 THEN
WP$ = ""
IF A$ <> "0" THEN WP$ = "A" + A$
IF B$ <> "0" THEN WP$ = WP$ + "B" + B$
IF C$ <> "0" THEN WP$ = WP$ + "C" + C$
IF WP$ = "" THEN WP$ = "000"
PRINT #2, "AUTO_ANSWER[AA=" + QT$ + "NO" + QT$ + "]"
PRINT #2, "DEF_PLANE[TY=2, FR=1, WP=" + WP$ + ", TP=" + WP$ + ", X1=0, Y1=0,"
PRINT #2, "Z1=0, RO=3, AA=" + A$ + ", AB=" + B$ + ", AC=" + C$ + ", ZD=0,
MP=1]"
PRINT #2, "AUTO_ANSWER[AA=" + QT$ + "OFF" + QT$ + "]"
PRINT #2, "WITH_STEP[ST=" + STEP$ + ", WP=" + WP$ + ", OF=2, LV=" + Z$ + ",
CL=?, PT=?]"
SUSPEND = 1
GOTO 350
END IF
END IF
' tool change section
IF TLCHG = 1 THEN
IF T$ = "0" THEN T$ = "9999"
IF LEN(T$) = 5 THEN
STEP$ = LEFT$(T$, 2) + RIGHT$(T$, 2)
ELSE
STEP$ = T$
IF LEN(T$) = 1 THEN T$ = TB$ + "00" + T$
IF LEN(T$) = 2 THEN T$ = TB$ + "0" + T$
IF LEN(T$) = 3 THEN T$ = TB$ + T$
IF MACH$ = "900" THEN STEP$ = LEFT$(T$, 1) + RIGHT$(T$, 3)
END IF
TMP$ = " " + T$ + " "
IF INSTR(TLLIST$, TMP$) = 0 THEN
'PRINT #2, "MAC_EXE[FN=" + QT$ + "X:" + CHR$(92) + CHR$(92) + MACH$ +
CHR$(92) + CHR$(92) + T$ + ".mcl" + QT$ + "]"
'PRINT #2, "#stepnum=JOS(step_num)"
'GOTO 333
IF WP$ = "ZX_PLANE" THEN
PRINT #2, "JOS_CONTEXT_NEW[BASEITEM=1, NEWSNCS=1030301]"
PRINT #2, "JOS_ITEM_NEW[BASEITEM=2, NEWSNCS=2420402]"
END IF
IF WP$ = "XY_PLANE" THEN
PRINT #2, "JOS_CONTEXT_NEW[BASEITEM=1, NEWSNCS=1030202]"
PRINT #2, "JOS_ITEM_NEW[BASEITEM=2, NEWSNCS=2420101]"
END IF
IF MTYPE = 0 OR MTYPE = 1 THEN
PRINT #2, "JOS_CONTEXT_NEW[BASEITEM=1, NEWSNCS=1030101]"
PRINT #2, "JOS_ITEM_NEW[BASEITEM=2, NEWSNCS=2410101]"
END IF
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "st_desc" + QT$ + ",
EXPR=" + QT$ + T$ + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "step_num" + QT$ + ",
EXPR=" + QT$ + STEP$ + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "tl_num" + QT$ + ", EXPR="
+ QT$ + T$ + QT$ + "]"
' PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "doff" + QT$ + ", EXPR="
+ QT$+ D$+QT$ + "]"
' PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "loff" + QT$ + ", EXPR="
+ QT$+ H$+QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "spmode" + QT$ + ", EXPR="
+ QT$ + "2" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "rpm" + QT$ + ", EXPR=" +
QT$ + "400" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "fdmode" + QT$ + ", EXPR="
+ QT$ + "1" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "feedupr1" + QT$ + ",
EXPR=" + QT$ + ".01" + QT$ + "]"
IF WP$ = "ZX_PLANE" THEN
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "cradius" + QT$ +
", EXPR=" + QT$ + "0" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "leadang" + QT$ +
", EXPR=" + QT$ + "-5" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "incl_ang" + QT$ +
", EXPR=" + QT$ + "80" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "shape" + QT$ + ",
EXPR=" + QT$ + "1" + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "ornttn" + QT$ +
", EXPR=" + QT$ + ORNT$ + QT$ + "]"
END IF
IF MTYPE = 0 OR MTYPE = 1 THEN
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "ta_usrnam" + QT$
+ ", EXPR=" + QT$ + T$ + QT$ + "]"
ELSE
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "turret" + QT$ +
", EXPR=" + QT$ + TUR$ + QT$ + "]"
PRINT #2, "JOS_FIELD_EDIT[FLDNAME=" + QT$ + "ta_usrnam" + QT$
+ ", EXPR=" + QT$ + TUR$ + ":" + T$ + QT$ + "]"
END IF
PRINT #2, "JOS_CHANGES_PROMOTE[]"
PRINT #2, "JOS_CONTEXT_CLOSE[]"
333
TLLIST$ = TLLIST$ + T$ + " "
END IF
'PRINT #2, "WITH_STEP[ST=#stepnum, WP=" + WP$ + ", OF=2, LV=" + Z$ + ", CL=?,
PT=?]"
PRINT #2, "WITH_STEP[ST=" + STEP$ + ", WP=" + WP$ + ", OF=2, LV=" + Z$ + ",
CL=?, PT=?]"
PRINT #2, "WITH_STEP[ST=" + STEP$ + ", WP=" + WP$ + ", OF=2, LV=" + Z$ + ",
CL=?, PT=?]"
TLCHG = 0
SUSPEND = 1
IF M = 0 THEN M = 999
END IF
' feed rate output F0, F150, and F200 are rapid moves
IF F$ <> LF$ AND F <> 0 AND F <> 150 AND F <> 200 THEN
IF MOV$ <> "HOLE" THEN
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + Z$ + ", TX=" +
QT$ + "#FEED=" + F$ + QT$ + "]"
ELSE
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + R$ + ",
TX=#FEED=" + F$ + "]"
END IF
END IF
IF S$ <> LS$ THEN
IF MOV$ <> "HOLE" THEN
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + Z$ + ", TX=" +
QT$ + "#SPEED=" + S$ + QT$ + "]"
ELSE
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + R$ + ",
TX=#SPEED=" + S$ + "]"
END IF
END IF
IF M = 0 THEN
IF MOV$ <> "HOLE" THEN
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + Z$ + ", TX=" +
QT$ + "@STOP" + QT$ + "]"
ELSE
PRINT #2, "UEVENT[XS=" + X$ + ", YS=" + Y$ + ", LV=" + R$ + ", TX=" +
QT$ + "@STOP" + QT$ + "]"
END IF
END IF
IF T$ <> LT$ THEN PRINT #2, "// SELECT TOOL " + T$
IF MOV$ = "POINT" THEN
STMNT$ = "POINT[XE=" + X$ + ", YE=" + Y$ + ", LV=" + Z$ + ", TSC=0, CO=0,
SE=2]"
IF X$ <> LX$ OR Y$ <> LY$ OR Z$ <> LZ$ THEN
IF SUSPEND = 0 THEN PRINT #2, STMNT$
SUSPEND = 0
END IF
END IF
IF MOV$ = "HOLE" THEN
IF R$ <> LR$ OR A$ <> LA$ OR B$ <> LB$ OR C$ <> LC$ OR DP$ <> LDP$ THEN
PRINT #2, "PROPERTY[LV=" + R$ + ", WP=" + WP$ + ", PT=?, CL=?, OF=2,
TD=" + R$ + "-(" + DP$ + ")]"
END IF
IF X$ <> LX$ OR Y$ <> LY$ OR Z$ <> LZ$ OR R$ <> LR$ OR A$ <> LA$ OR DP$ <>
LDP$ THEN
IF WP$ = "ZX_PLANE" THEN
PRINT #2, "HOLE[XE=" + R$ + ", YE=0, LV=0, SE=2]"
ELSE
PRINT #2, "HOLE[XE=" + X$ + ", YE=" + Y$ + ", LV=" + R$ + ",
SE=2]"
END IF
END IF
END IF
IF MOV$ = "CANCLE" THEN
STMNT$ = "POINT[XE=" + X$ + ", YE=" + Y$ + ", LV=" + Z$ + ", CO=0, SE=2]"
IF X$ <> LX$ OR Y$ <> LY$ OR Z$ <> LZ$ THEN PRINT #2, STMNT$
END IF
IF MOV$ = "LINE" THEN
STMNT$ = "LINE[XS=" + LX$ + ", YS=" + LY$ + ", ZS=" + LZ$ + ", XE=" + X$ + ",
YE=" + Y$ + ", ZE=" + Z$ + ", SE=2, SS=2]"
IF X$ <> LX$ OR Y$ <> LY$ OR Z$ <> LZ$ THEN PRINT #2, STMNT$
END IF
IF MOV$ = "ARC" THEN
IF INJ = 0 THEN
XV = VAL(X$) - VAL(I$)
YV = VAL(Y$) - VAL(J$)
XC$ = I$
YC$ = J$
END IF
IF INJ = 1 THEN
XV = VAL(X$) - (VAL(LX$) - VAL(I$))
YV = VAL(Y$) - (VAL(LY$) - VAL(J$))
XC$ = LX$ + "-(" + I$ + ")"
YC$ = LY$ + "-(" + J$ + ")"
END IF
IF INJ = 2 THEN
XV = VAL(X$) - (VAL(I$) + VAL(LX$))
YV = VAL(Y$) - (VAL(J$) + VAL(LY$))
XC$ = LX$ + "+(" + I$ + ")"
YC$ = LY$ + "+(" + J$ + ")"
END IF
IF INJ = 3 THEN
IF X < LX THEN XC = LX - I
IF X > LX THEN XC = LX + I
IF Y < LY THEN YC = LY - J
IF Y > LY THEN YC = LY + J
XV = X - XC
YV = Y - YC
I = 0
J = 0
XC$ = STR$(XC)
YC$ = STR$(YC)
END IF
IF XV < .000001 AND XV > -.000001 THEN XV = 0
IF YV < .000001 AND YV > -.000001 THEN YV = 0
IF XV = 0 AND YV > 0 THEN ANG$ = "90"
IF XV = 0 AND YV < 0 THEN ANG$ = "-90"
IF XV > 0 AND YV = 0 THEN ANG$ = "0"
IF XV < 0 AND YV = 0 THEN ANG$ = "180"
IF XV > 0 AND YV <> 0 THEN ANG$ = LEFT$(STR$(ATN(YV / XV) / PI), 7)
IF XV < 0 AND YV <> 0 THEN ANG$ = LEFT$(STR$(ATN(YV / XV) / PI), 7) + "+180"
IF LZ$ = Z$ THEN
STMNT$ = "ARC[DR=" + DR$ + ", XC=" + XC$ + ", YC=" + YC$ + ", XS=" +
LX$ + ", YS=" + LY$ + ", AE=" + ANG$ + ", SE=2, SS=2, SI=2, SC=2, LV=" + Z$ + "]"
ELSE
STMNT$ = "HELIX[DR=" + DR$ + ", XC=" + XC$ + ", YC=" + YC$ + ", XS=" +
LX$ + ", YS=" + LY$ + ", ZS=" + LZ$ + ", XE=" + X$ + ", YE=" + Y$ + ", ZE=" + Z$ + ",
FT=1, LV=" + LZ$ + "]"
END IF
IF XC$ = LX$ AND YC$ = LY$ THEN
PRINT #2, "PAUSE[TX=STRTMP(" + QT$ + "MAKE CORECTIONS ARC LEFT OUT
UNABLE TO SOLVE" + QT$ + "),PT=1]"
STMNT$ = "//" + STMNT$
END IF
PRINT #2, STMNT$
' next statment is to cancle arc mode if G2 & G3 are not model
MOV$ = "LINE"
END IF
IF MOV$ = "CLEAR" THEN
STMNT$ = "POINT[XE=" + X$ + ", YE=" + Y$ + ", LV=" + Z$ + ", CO=0, SE=2]"
PRINT #2, STMNT$
MOV$ = "HOLE"
END IF
350
LMOV$ = MOV$
LA$ = A$
LB$ = B$
LC$ = C$
LF$ = F$
LR$ = R$
LS$ = S$
LT$ = T$
LW$ = W$
LX$ = X$
LY$ = Y$
LZ$ = Z$
LZ = Z
LX = X
LY = Y
LDP$ = DP$
M = 999
GOTO 100
450
'PRINT #2, "MAC_EXE[FN=" + QT$ + "g:\macro\tts_remv_pts_fix_arcs.mcl" + QT$ + "]"
CLOSE
SYSTEM
Getvalues:
TMP$ = MID$(LN$, v1 + 1, v2)
IF LEFT$(TMP$, 1) = "+" THEN TMP$ = RIGHT$(TMP$, LEN(TMP$) - 1)
IF TMP$ = "" THEN TMP$ = "0."
IF TMP$ = "0" THEN TMP$ = "0."
IF INSTR(TMP$, ".") = 0 THEN
IF LEN(TMP$) < 4 THEN
IF CH$ = "S" OR CH$ = "C" THEN GOTO 501
PRINT LN$
INPUT "DECIMAL POINT MISSING OUTPUT MAY NOT BE CORRECT"; JUNK$
501
END IF
IF LEN(TMP$) > 3 THEN
' for trailing zero no decimal point (4) places
TMP$ = LEFT$(TMP$, LEN(TMP$) - 4) + "." + RIGHT$(TMP$, 4)
END IF
END IF
TMP = VAL(TMP$)
IF TMP < .000001 AND TMP > -.000001 THEN TMP = 0
RETURN