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

Reply via email to