freecad-cam/Mod/cam-dev/ref-camworks/DMG_MORI_HSC55_LINEAR.LIB
2026-02-01 19:47:58 +01:00

2876 lines
66 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*-----------------------------------
:ATTRNAME=material
:ATTRTYPE=VALUE
:ATTRVTYPE=CHARACTER
:ATTREMARK=Material
:ATTRSEL=N
:ATTRINLEN=25
:ATTRSHORT=Material
:ATTRLONG=ENTER Material Type
:ATTRHIGH=~
:ATTRLOW=
:ATTRDEFAULT=
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=programmer
:ATTRTYPE=VALUE
:ATTRVTYPE=CHARACTER
:ATTREMARK=Programmer
:ATTRSEL=N
:ATTRINLEN=25
:ATTRSHORT=Programmer
:ATTRLONG=ENTER Programmer
:ATTRHIGH=~
:ATTRLOW=
:ATTRDEFAULT=
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=dwell
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Dwell
:ATTRSEL=N
:ATTRINLEN=4
:ATTRSHORT=Dwell
:ATTRLONG=ENTER Dwell
:ATTRHIGH=9999
:ATTRLOW=0
:CODETYPE=FORMAT
:ATTRDEFAULT=0
:UNITFLAG=NON_CONVERT
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=init dwell
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Dwell
:ATTRSEL=N
:ATTRINLEN=4
:ATTRSHORT=Dwell
:ATTRLONG=ENTER Dwell
:ATTRHIGH=9999
:ATTRLOW=0
:CODETYPE=FORMAT
:ATTRDEFAULT=0
:UNITFLAG=NON_CONVERT
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=coolant
:ATTRTYPE=SELECT
:ATTREMARK=Coolant
:ATTRSEL=N
:ATTRTITLE=Coolant
:ATTRSELSTR=Off
:ATTRSELSTR=Flood
:ATTRSELSTR=Mist
:ATTRSELSTR=Thru
:ATTRDEFAULT=2
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=leading direction
:ATTRTYPE=SELECT
:ATTREMARK=Disengaging Direction (0/1/2/3/4)
:ATTRSEL=N
:ATTRTITLE=Disengaging Direction (0/1/2/3/4)
:ATTRSELSTR=0
:ATTRSELSTR=1
:ATTRSELSTR=2
:ATTRSELSTR=3
:ATTRSELSTR=4
:ATTRDEFAULT=1
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=plane selection
:ATTRTYPE=SELECT
:ATTREMARK=Plane Selection
:ATTRSEL=N
:ATTRTITLE=Plane Selection
:ATTRSELSTR=X,Y
:ATTRSELSTR=X,Z
:ATTRSELSTR=Y,Z
:ATTRDEFAULT=1
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=init angle
:ATTRTYPE=VALUE
:ATTRVTYPE=INTEGER
:ATTREMARK=Spindle Stop Angle
:ATTRSEL=N
:ATTRINLEN=3
:ATTRSHORT=Spindle Stop Angle
:ATTRLONG=ENTER Spindle Stop Angle
:ATTRHIGH=999
:ATTRLOW=0
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=pecks per break
:ATTRTYPE=VALUE
:ATTRVTYPE=INTEGER
:ATTREMARK=Number of Breaks
:ATTRSEL=N
:ATTRINLEN=3
:ATTRSHORT=Number of Breaks
:ATTRLONG=ENTER Number of Breaks
:ATTRHIGH=999
:ATTRLOW=0
:ATTRDEFAULT=100
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=stroke depth
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Depth of Counterbore
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Depth of Counterbore
:ATTRLONG=ENTER Depth of Counterbore
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=z tool offset
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Tool Edge Height
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Tool Edge Height
:ATTRLONG=ENTER Tool Edge Height
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=r feedrate
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Preposition Feedrate
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Preposition Feedrate
:ATTRLONG=ENTER Preposition Feedrate
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=x bar stop
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Upper Stop Distance
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Upper Stop Distance
:ATTRLONG=ENTER Upper Stop Distance
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=z bar stop
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Lower Stop Distance
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Lower Stop Distance
:ATTRLONG=ENTER Lower Stop Distance
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=second stage depth
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Infeed Depth
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Infeed Depth
:ATTRLONG=ENTER Infeed Depth
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=min peck
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Minimum Peck Amount
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Minimum Peck Amount
:ATTRLONG=ENTER Minimum Peck Amount
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=.001
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=p distance
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Peck Decrement Amount
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Peck Decrement Amount
:ATTRLONG=ENTER Peck Decrement Amount
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=break distance
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Chip Break Distance
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Chip Break Distance
:ATTRLONG=ENTER Chip Break Distance
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=.007874
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=leadout feedrate
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Retraction Feedrate
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Retraction Feedrate
:ATTRLONG=ENTER Retraction Feedrate
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=x max
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Max. X Material Boundary
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Max. X Material Boundary
:ATTRLONG=ENTER Max. X Material Boundary
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=x min
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Min. X Material Boundary
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Min. X Material Boundary
:ATTRLONG=ENTER Min. X Material Boundary
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=y max
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Max. Y Material Boundary
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Max. Y Material Boundary
:ATTRLONG=ENTER Max. Y Material Boundary
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=y min
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Min. Y Material Boundary
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Min. Y Material Boundary
:ATTRLONG=ENTER Min. Y Material Boundary
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=z max
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Max. Z Material Boundary
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Max. Z Material Boundary
:ATTRLONG=ENTER Max. Z Material Boundary
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=z min
:ATTRTYPE=VALUE
:ATTRVTYPE=DECIMAL
:ATTREMARK=Min. Z Material Boundary
:ATTRSEL=N
:ATTRINLEN=10
:ATTRSHORT=Min. Z Material Boundary
:ATTRLONG=ENTER Min. Z Material Boundary
:ATTRHIGH=9999.9999
:ATTRLOW=-9999.9999
:ATTRDEFAULT=0
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 200
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:ATTREND
*-----------------------------------
:ATTRNAME=LAST G
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTREMARK=Last G Code
:ATTREND
*-----------------------------------
:ATTRNAME=ABSINC
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTREMARK=Absolute or Incremental
:ATTREND
*-----------------------------------
:ATTRNAME=RAPID FEEDRATE
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Rapid Feedrate
:ATTREND
*-----------------------------------
:ATTRNAME=TOOL DEF
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=Tool Number
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(TOOL_DEF,MACH,TOOL,REG_T2)
:WORD_ADDRESS_BEF=|TOOL|DEF|
:WORD_ADDRESS_AFT=
:LEFT_PLACES=1
:RIGHT_PLACES=0
:CANNOT_BE_DECIMAL
:MUST_BE_TRAILING
:MUST_BE_LEADING
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:ATTREND
*------------------------------
:ATTRNAME=TOOL RADIUS
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Tool Radius
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|DR
:MUST_BE_SIGNED
:ATTREND
*----------------------------------------------------------
* Define G + M code Tables
*-----------------------------------
:ATTRNAME=ARC DIR
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTREMARK=Arc Direction
:ATTREND
*-----------------------------------
:ATTRNAME=ENGMET
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTREMARK=Arc Direction
:ATTREND
*-----------------------------------
:ATTRNAME=COMP
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTREMARK=Machine Compensation
:ATTREND
*-----------------------------------
:ATTRNAME=GC
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=16
:ATTRVCNT=45
:ATTREMARK=G Codes
:ATTREND
*-----------------------------------
:ATTRNAME=G GROUP
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=16
:ATTRVCNT=20
:ATTREMARK=G GROUP
:ATTREND
*-----------------------------------
:ATTRNAME=AXIS PLANE
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=
:CODETYPE=SELECT
*:VAR=plane_selection
:SELECT=1
:CODE=|Z
:SELECT=2
:CODE=|Y
:SELECT=3
:CODE=|X
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=SAVE SPEED
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=
:ATTREND
*-----------------------------------
:ATTRNAME=SEQ CONFIG
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=Config. seq. numbers
:ATTREND
*----------------------------------------------------------
* Define OUTPUT CODE Attributes
*----------------------------------------------------------
:ATTRNAME=N
:ATTRTYPE=POST
:ATTREMARK=Sequence number
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_REG_N(SEQ,MAX_SEQUENCE)
:VAR=SEQ_CONFIG
:SELECT=0
:WORD_ADDRESS_BEF=
:VARB=SEQ
:LEFT_PLACES=1
:RIGHT_PLACES=0
:CANNOT_BE_LEADING
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:SELECT=1
:WORD_ADDRESS_BEF=KKK
:VARB=SEQ
:LEFT_PLACES=4
:RIGHT_PLACES=0
:MUST_BE_LEADING
:MUST_BE_TRAILING
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:SELECT=2
:WORD_ADDRESS_BEF=KKK
:VARB=SEQ
:LEFT_PLACES=3
:RIGHT_PLACES=0
:MUST_BE_LEADING
:MUST_BE_TRAILING
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:ATTREND
*----------------------------------------------------------
:ATTRNAME=NL
:ATTRTYPE=POST
:ATTREMARK=Sequence number
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_REG_N(SEQ,MAX_SEQUENCE)
:VAR=SEQ_CONFIG
:SELECT=0
:WORD_ADDRESS_BEF=KKK
:VARB=SEQ
:WORD_ADDRESS_AFT=|L
:LEFT_PLACES=1
:RIGHT_PLACES=0
:CANNOT_BE_LEADING
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:SELECT=1
:WORD_ADDRESS_BEF=KKK
:VARB=SEQ
:WORD_ADDRESS_AFT=|L
:LEFT_PLACES=4
:RIGHT_PLACES=0
:MUST_BE_LEADING
:MUST_BE_TRAILING
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:SELECT=2
:WORD_ADDRESS_BEF=KKK
:VARB=SEQ
:WORD_ADDRESS_AFT=|L
:LEFT_PLACES=3
:RIGHT_PLACES=0
:MUST_BE_LEADING
:MUST_BE_TRAILING
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=S
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=Spindle RPM
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(S,MACH,OPR_SPEED,REG_S)
:WORD_ADDRESS_BEF=|S|
:LEFT_PLACES=4
:RIGHT_PLACES=0
:CANNOT_BE_DECIMAL
:MUST_BE_TRAILING
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=T
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=Tool Number
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(T,MACH,TOOL,REG_T2)
:WORD_ADDRESS_BEF=|TOOL|CALL|
:WORD_ADDRESS_AFT=
:LEFT_PLACES=1
:RIGHT_PLACES=0
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
*----------------------------------------------------------
* Define OUTPUT CODE Attributes (G Codes...)
*----------------------------------------------------------
:ATTRNAME=G
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTREMARK=G Codes
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_G_GROUP(G,GC,GG,GM,MACH,G_GROUP,ATTRCVALUE,INDEX)
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:MODAL=NO
:ATTRUSED=1
:ATTREND
*----------------------------------------------------------
* Define OUTPUT CODE Attributes (M Codes...)
*----------------------------------------------------------
:ATTRNAME=M
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=M Codes
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_M_GROUP(M,MC,MG,MM,MACH,M_GROUP,ATTRIVALUE,INDEX)
:CODETYPE=FORMAT
:RIGHT_PLACES=0
:WORD_ADDRESS_BEF=|M
:CANNOT_BE_DECIMAL
:CANNOT_BE_SIGNED
:UNITFLAG=NON_CONVERT
:MODAL=YES
:ATTRUSED=1
:ATTREND
*----------------------------------------------------------
* Define OUTPUT CODE Attributes (Movement...)
*----------------------------------------------------------
:ATTRNAME=X
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_ENDPOINT(X,X_POS,GC,GG,G_GROUP,MACH,PREV,REG_X)
:VAR=AXIS PLANE
:SELECT=1
:VARB=X
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=X
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=X
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=Y
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Y End
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_ENDPOINT(Y,Y_POS,GC,GG,G_GROUP,MACH,PREV,REG_Y)
:VAR=AXIS PLANE
:SELECT=1
:VARB=Y
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=Y
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=Y
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=Z
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Z End
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_ENDPOINT(Z,ABS_Z_END,GC,GG,G_GROUP,MACH,PREV,REG_Z)
:VAR=AXIS PLANE
:SELECT=1
:VARB=Z
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=Z
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=Z
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*----------------------------------------------------------
:ATTRNAME=FX
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=SELECT_FORMAT
:VAR=AXIS PLANE
:SELECT=1
:VARB=ABS_X_END
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=ABS_X_END
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=ABS_X_END
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=FY
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Y End
:CODETYPE=SELECT_FORMAT
:VAR=AXIS PLANE
:SELECT=1
:VARB=ABS_Y_END
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=ABS_Y_END
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=ABS_Y_END
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=FZ
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Z End
:CODETYPE=SELECT_FORMAT
:VAR=AXIS PLANE
:SELECT=1
:VARB=ABS_Z_END
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=ABS_Z_END
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=ABS_Z_END
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=X OFFSET
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_MACRO_ORIGIN(X_OFFSET,REG_X,X_OFFSET)
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:ATTREND
*-----------------------------------
:ATTRNAME=Y OFFSET
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Y End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_MACRO_ORIGIN(Y_OFFSET,REG_Y,Y_OFFSET)
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:ATTREND
*-----------------------------------
:ATTRNAME=Z CLEAR
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_REGISTER_CLEAR(Z_CLEAR,MACH,OPR_Z_CLEARANCE,REG_Z)
:WORD_ADDRESS_BEF=|=|
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q200
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q200,MACH,OPR_Z_CLEARANCE,REG_Z)
:WORD_ADDRESS_BEF=|||||Q200=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q201
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q201,MACH,OPR_Z_DEPTH,REG_Z)
:WORD_ADDRESS_BEF=|||||Q201=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q202
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q202,MACH,OPR_Z_DEPTH,REG_Z)
:WORD_ADDRESS_BEF=|||||Q202=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q203
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q203,MACH,OPR_Z_FACE,REG_Z)
:WORD_ADDRESS_BEF=|||||Q203=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q204
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q204,MACH,Z_POS,REG_Z)
:WORD_ADDRESS_BEF=|||||Q204=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q205
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q205,MACH,min_peck,REG_P)
:WORD_ADDRESS_BEF=|||||Q205=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q206
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Feedrate IPM/MPM
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_REG_F(MACH,REG_F,Q206)
:WORD_ADDRESS_BEF=|||||Q206=
:WORD_ADDRESS_AFT=
:LEFT_PLACES=4
:RIGHT_PLACES=1
:MUST_BE_TRAILING
:CANNOT_BE_SIGNED
:CANNOT_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q208
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q208,MACH,leadout_feedrate,REG_P)
:WORD_ADDRESS_BEF=|||||Q208=
:WORD_ADDRESS_AFT=
:LEFT_PLACES=4
:RIGHT_PLACES=1
:MUST_BE_TRAILING
:CANNOT_BE_SIGNED
:CANNOT_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q210
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q210,MACH,init_dwell,REG_Q)
:WORD_ADDRESS_BEF=|||||Q210=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q211
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q211,MACH,dwell,REG_Q)
:WORD_ADDRESS_BEF=|||||Q211=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MODAL=NO
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=Q212
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q212,MACH,p_distance,REG_P)
:WORD_ADDRESS_BEF=|||||Q212=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q213
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(Q213,MACH,pecks_per_break,REG_P)
:WORD_ADDRESS_BEF=|||||Q213=
:WORD_ADDRESS_AFT=
:LEFT_PLACES=1
:RIGHT_PLACES=0
:CANNOT_BE_SIGNED
:CANNOT_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q214
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(Q214,MACH,leading_direction,REG_P)
:WORD_ADDRESS_BEF=|||||Q214=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q239
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Feedrate IPM/MPM
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_REG_F(MACH,REG_F,Q239)
:WORD_ADDRESS_BEF=|||||Q239=
:WORD_ADDRESS_AFT=
:CANNOT_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q249
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q249,MACH,stroke_depth,REG_P)
:WORD_ADDRESS_BEF=|||||Q249=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q250
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q250,MACH,thickness,REG_P)
:WORD_ADDRESS_BEF=|||||Q250=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q251
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q251,MACH,shift_amount,REG_P)
:WORD_ADDRESS_BEF=|||||Q251=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q252
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q252,MACH,z_tool_offset,REG_P)
:WORD_ADDRESS_BEF=|||||Q252=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q253
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q253,MACH,r_feedrate,REG_P)
:WORD_ADDRESS_BEF=|||||Q253=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q254
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Feedrate IPM/MPM
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_REG_F(MACH,REG_F,Q254)
:WORD_ADDRESS_BEF=|||||Q254=
:WORD_ADDRESS_AFT=
:LEFT_PLACES=4
:RIGHT_PLACES=1
:MUST_BE_TRAILING
:CANNOT_BE_SIGNED
:CANNOT_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q255
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q255,MACH,dwell,REG_Q)
:WORD_ADDRESS_BEF=|||||Q255=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q256
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q256,MACH,break_distance,REG_P)
:WORD_ADDRESS_BEF=|||||Q256=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q257
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q257,MACH,second_stage_depth,REG_P)
:WORD_ADDRESS_BEF=|||||Q257=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q258
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q258,MACH,x_bar_stop,REG_P)
:WORD_ADDRESS_BEF=|||||Q258=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q259
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q259,MACH,z_bar_stop,REG_P)
:WORD_ADDRESS_BEF=|||||Q259=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q336
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(Q336,MACH,init_angle,REG_P)
:WORD_ADDRESS_BEF=|||||Q336=
:WORD_ADDRESS_AFT=
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q343
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(Q343,MACH,0,REG_P)
:WORD_ADDRESS_BEF=|||||Q343=
:WORD_ADDRESS_AFT=
:LEFT_PLACES=1
:RIGHT_PLACES=0
*:MUST_BE_SIGNED
*:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=Q344
:ATTRTYPE=POST
:ATTRVTYPE=INTEGER
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_INT_REGISTER(Q344,MACH,0,REG_P)
:WORD_ADDRESS_BEF=|||||Q344=
:WORD_ADDRESS_AFT=
:LEFT_PLACES=1
:RIGHT_PLACES=0
*:MUST_BE_SIGNED
*:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=END CHAR
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|~
:ATTREND
*-----------------------------------
:ATTRNAME=Z DEPTH
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Z_DEPTH,MACH,OPR_Z_DEPTH,REG_Z)
:WORD_ADDRESS_BEF=|=|
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=SUB PECK
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X End
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_REGISTER_PECK(SUB_PECK,MACH,OPR_Z_SUB_PECK,REG_Q)
:WORD_ADDRESS_BEF=|CYCL|DEF|1.3|PECKG|
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=I
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=X Center
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_CENTER(I,ABS_I_CENTER,GC,GG,G_GROUP,MACH,PREV,REG_X,REG_I,AIC)
:VAR=AXIS PLANE
:SELECT=1
:VARB=I
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=I
:WORD_ADDRESS_BEF=|X
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=I
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=J
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Y Center
:CODETYPE=SELECT_FORMAT
:ATTRCFUNC=CALC_CENTER(J,ABS_J_CENTER,GC,GG,G_GROUP,MACH,PREV,REG_Y,REG_J,AIC)
:VAR=AXIS PLANE
:SELECT=1
:VARB=J
:WORD_ADDRESS_BEF=|Y
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=2
:VARB=J
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:SELECT=3
:VARB=J
:WORD_ADDRESS_BEF=|Z
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=R
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=R Radius
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_RADIUS(R,MACH,REG_R)
:WORD_ADDRESS_BEF=|R
:MUST_BE_SIGNED
:MUST_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=F
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Feedrate IPM/MPM
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_REG_F(MACH,REG_F,F)
:WORD_ADDRESS_BEF=|F
:LEFT_PLACES=4
:RIGHT_PLACES=1
:MUST_BE_TRAILING
:CANNOT_BE_SIGNED
:CANNOT_BE_DECIMAL
:MODAL=YES
:ATTREND
*-----------------------------------
:ATTRNAME=Q 200
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 201
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 202
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 203
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 204
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 205
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 206
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 208
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 210
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 211
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 212
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 213
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 214
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 239
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 249
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 250
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 251
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 252
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 253
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 254
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 255
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 256
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 257
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 258
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 259
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 336
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 343
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q 344
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=Cycle Parameter String
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:COLUMN=20
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=TOOL COMMENT
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;==========
:VAR=TOOL COMMENT
:WORD_ADDRESS_AFT===========
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=YES
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=OPR COMMENT
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;==========
:VAR=OPR COMMENT
:WORD_ADDRESS_AFT===========
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=PGM OUTPUT WZW
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=100
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=PGM OUTPUT TRANS
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=100
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=Q91
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|Q91=0|;X
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=Q92
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|Q92=0|;Y
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=Q93
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|Q93=0|;Z
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=TOOL ZERO
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|TOOL|CALL|0
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=BLOCK 1
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|BLK|FORM|0.1
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=BLOCK 2
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|BLK|FORM|0.2
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=A
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Angle A
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_ROT_ANGLE_A(A,MACH,INC_ROT_TILT_A,REG_A)
:WORD_ADDRESS_BEF=|C
:WORD_ADDRESS_AFT=|
:MUST_BE_SIGNED
:MODAL=YES
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=SPC
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Angle A
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_ROT_ANGLE_A(SPC,MACH,INC_ROT_TILT_A,REG_A)
:WORD_ADDRESS_BEF=|SPC
:WORD_ADDRESS_AFT=|
:MUST_BE_SIGNED
:MODAL=YES
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=Q94
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Angle C
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q94,MACH,ROT_TILT_A,REG_K)
:WORD_ADDRESS_BEF=|Q94=
:WORD_ADDRESS_AFT=|;C
:MODAL=NO
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=B
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Angle B
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_ROT_ANGLE_B(B,MACH,INC_ROT_TILT_B,REG_B)
:WORD_ADDRESS_BEF=|A
:WORD_ADDRESS_AFT=|
:MUST_BE_SIGNED
:MODAL=YES
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=SPA
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Angle B
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_ROT_ANGLE_B(SPA,MACH,INC_ROT_TILT_B,REG_B)
:WORD_ADDRESS_BEF=|SPA
:WORD_ADDRESS_AFT=|
:MUST_BE_SIGNED
:MODAL=YES
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=Q95
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Angle A
:CODETYPE=FORMAT
:ATTRCFUNC=CALC_DEC_REGISTER(Q95,MACH,ROT_TILT_B,REG_L)
:WORD_ADDRESS_BEF=|Q95=
:WORD_ADDRESS_AFT=|;A
:MODAL=NO
:UNITFLAG=NON_CONVERT
:ATTREND
*-----------------------------------
:ATTRNAME=S MACHINE NAME
:ATTRTYPE=DESCRIPTOR
:ATTRVTYPE=CHARACTER
:ATTRSEL=N
:ATTRINLEN=60
:ATTRSHORT=Machine Name
:ATTRDEFAULT=DMU 50
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;
:VAR=MACHINE_NAME
:WORD_ADDRESS_AFT=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRUSED=1
:ATTREND
*------------------------------
:ATTRNAME=S MATERIAL
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;MATERIAL=
:VAR=material
:WORD_ADDRESS_AFT=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=S PART NAME
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;PART|NAME=
:VAR=PART NAME
:WORD_ADDRESS_AFT=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRUSED=1
:ATTREND
*------------------------------
:ATTRNAME=S PROGRAMMER
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;PROGRAMMER=
:VAR=programmer
:WORD_ADDRESS_AFT=
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=MONTH
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|;DATE=
:VAR=MONTH
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
:ATTREND
*-----------------------------------
:ATTRNAME=DAY
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=.
:VAR=DAY
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=YEAR
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=.
:VAR=YEAR
:WORD_ADDRESS_AFT=|REV.|*A*
:LEFT_PLACES=0
:RIGHT_PLACES=0
:UNITFLAG=NON_CONVERT
:ATTRSPACES=YES
:MODAL=NO
:ATTRUSED=1
:ATTREND
*-----------------------------------
:ATTRNAME=IPA
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Incremental arc angle
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|IPA
:RIGHT_PLACES=4
:MUST_BE_SIGNED
:UNITFLAG=NON_CONVERT
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=IZ
:ATTRTYPE=POST
:ATTRVTYPE=DECIMAL
:ATTREMARK=Incremental Z distance for helical arcs
:CODETYPE=FORMAT
:WORD_ADDRESS_BEF=|IZ
:MUST_BE_SIGNED
:MODAL=NO
:ATTREND
*-----------------------------------
:ATTRNAME=T CALL
:ATTRTYPE=POST
:ATTREMARK=
:CODETYPE=HARDCODE
:CODE=|TOOL|CALL|
:ATTRSPACES=YES
:ATTREND
*-----------------------------------
:ATTRNAME=STRG A
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=
:ATTREND
*-----------------------------------
:ATTRNAME=STRG B
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=
:ATTREND
*-----------------------------------
:ATTRNAME=STRG C
:ATTRTYPE=POST
:ATTRVTYPE=CHARACTER
:ATTRINLEN=50
:ATTREMARK=
:ATTREND
*-----------------------------------
*
:SECTION=CALC_REG_N(NVAL,MAXSEQ)
*
* N Sequence register
*
:C: IF NVAL>MAXSEQ THEN SEQ=9998 NVAL=SEQ ENDIF
*----------------------------------------------------------
* Define Machine "G" Register Calculations
*----------------------------------------------------------
*
:SECTION=CALC_G_GROUP(GVAL,GC,GG,GM,MACH,G_GROUP,OVERVAL,INDEX)
*
* This routine processes all G codes being output to the tape.
* This routine will supply a default G code value if a value is not
* passed. The MACH(REG_G) as well as the G_GROUP resgister are updated.
* The value being output is returned in the 1st field GVAL
*
* Author : Scott Fulton
* Company : TekSoft
* Created : Ver 6.00
*
* Input : GVAL - Varaible to accept Return value
* : GC - Array of G Codes
* : GG - Array of G Groups
* : GM - Array of G Modal flags
* : MACH - Array of Machine Registers A-Z
* : G_GROUP - Array of Machine G Groups 0-20
* : OVERVAL - Override value
* : INDEX - Integer Variable used as to Index G code tables
*
* Returns : GVAL - Stores the G code being output into GVAL
* : G_GROUP - Stores the G code being output into G_GROUP
* : MACH - Stores the G code being output into MACH(REG_G)
* : METRIC_OUT - May Modify the system flag METRIC_OUT
* METRIC_OUT=1 is ENGLISH
* METRIC_OUT=2 is METRIC
* : INDEX - Stores the Table location of G Code into INDEX
* : SETON() - May Set ON the Parameter making the call
* : SETOFF( - May Set OFF the Parameter making the call
*
* External : none
*
* Determine the value to be output
*
:C: IF ATTROVERRIDE=YES
:C: THEN GVAL=OVERVAL
:C: ELSE CALL(CALC_G_DEFAULT(GVAL,GC))
:C: ENDIF
*
* Lookup G code in the G code table - (a -1 in INDEX means NOT found!)
*
:C: LOOKUP(GC,GVAL,INDEX)
:C: IF INDEX=-1 THEN SETON() RETURN ENDIF
*
* Seton the Parameter then determine if parameter does NOT need to be output
*
:C: SETON()
:C: IF GM(INDEX)=YES AND G_GROUP(GG(INDEX))=GVAL THEN SETOFF() ENDIF
*
* Setoff Work coordinate if defining a macro
*
:C: IF DEFINING_MACRO=YES AND G_GROUP(GG(G_INC))<>GC(G_INC) THEN
:C: IF INDEX=G_WORK_1
:C: OR INDEX=G_WORK_2
:C: OR INDEX=G_WORK_3
:C: OR INDEX=G_WORK_4
:C: OR INDEX=G_WORK_5
:C: OR INDEX=G_WORK_6
:C: THEN SETOFF()
:C: ENDIF
:C: ENDIF
*
* Update the G_GROUP registers if the G code is MODAL
*
:C: IF GM(INDEX)=YES THEN G_GROUP(GG(INDEX))=GVAL ENDIF
*
* Update the G_GROUP register for drilling if the G code is of a RAPID group
*
:C: IF GM(INDEX)=YES AND GG(INDEX)=GG(G_RAPID)
:C: THEN G_GROUP(GG(G_CANCEL_CYC))=GC(G_CANCEL_CYC)
:C: ENDIF
*
* Update the Machine register REG_G
*
:C: LAST_G=GVAL
*
* Set the system English/Metric flag if G code affects English/Metric
*
:C: IF METRIC_OUT=1 THEN METRIC_OUT=1 ENDIF
:C: IF METRIC_OUT=2 THEN METRIC_OUT=2 ENDIF
*-----------------------------------
*
:SECTION=CALC_REG_F(MACH,REGISTER,FVAL)
*
* F Feed register
*
:C: SETON()
:C: IF MOVE_TYPE=1 OR MOVE_TYPE=2 OR MOVE_TYPE=3
:C: THEN FVAL=OPR_X_FEED
:C: ELSE FVAL=OPR_Z_FEED
:C: ENDIF
:C: IF MOVE_TYPE<>1 AND MOVE_TYPE<>2 AND MOVE_TYPE<>3 AND MOVE_TYPE<>10 THEN
:C: FVAL=RAPID_FEEDRATE
:C: ENDIF
:C: IF OPR_TYPE=MILL_DRILLING THEN FVAL=OPR_Z_FEED ENDIF
:C: IF ATTROVERRIDE=YES THEN FVAL=ATTRDVALUE ENDIF
:C: IF FVAL=MACH(REGISTER) THEN SETOFF() ENDIF
:C: IF OPR_TYPE=MILL_DRILLING AND G_GROUP(GG(G_CANCEL_CYC))<>GC(G_CANCEL_CYC)
:C: THEN SETON()
:C: ENDIF
:C: MACH(REGISTER)=FVAL
*-----------------------------------
:SECTION=CALC_REGISTER_CLEAR(DVAL,MACH,DEFAULTVAL,REGISTER)
*
* Calculate Decimal register
*
:C: IF ATTROVERRIDE=YES THEN DVAL=ATTRDVALUE ELSE DVAL=(-DEFAULTVAL) ENDIF
:C: MACH(REGISTER)=DVAL
*-----------------------------------
:SECTION=CALC_REGISTER_PECK(DVAL,MACH,DEFAULTVAL,REGISTER)
*
* Calculate Decimal register
*
:C: IF ATTROVERRIDE=YES THEN DVAL=ATTRDVALUE ELSE
:C: IF DEFAULTVAL>0 THEN DVAL=(-DEFAULTVAL) ELSE
:C: DVAL=DEFAULTVAL
:C: ENDIF
:C: ENDIF
:C: MACH(REGISTER)=DVAL
*----------------------------------------------------------
* Machine Movement Register Calculations
*----------------------------------------------------------
*
:SECTION=CALC_ENDPOINT(DVAL,DEFAULTVAL,GC,GG,G_GROUP,MACH,PREV,REGISTER)
*
* Movement Register Calculations
*
:C: IF ATTROVERRIDE=YES THEN DVAL=ATTRDVALUE ELSE DVAL=DEFAULTVAL ENDIF
:C: PREV(REGISTER)=MACH(REGISTER)
*
:C: IF abs_inc=1 THEN
****************** This is set for Rotary retract when drilling in CAMWorks
:C: IF REGISTER=26 AND OPR_TYPE=MILL_DRILLING AND MOVE_TYPE=RAPID_Z_UP THEN
:C: IF ABS_Z_END>OPR_Z_RAPID_PLANE THEN
:C: DVAL=ABS_Z_END
:C: ELSE
:C: DVAL=OPR_Z_RAPID_PLANE
:C: ENDIF
:C: ENDIF
******************
:C: MACH(REGISTER)=(DVAL) RETURN
:C: ENDIF
*
:C: BUCKET=0
:C: ROUNDOFF(DVAL-MACH(REGISTER),BUCKET,DVAL,G_RIGHT_PLACES,METRIC_OUT)
:C: SETON()
:C: IF ABS(DVAL)<ROUNDING_POINT AND LEADIN=NO AND
:C: LEADOUT=NO THEN
:C: SETOFF()
:C: ENDIF
:C: MACH(REGISTER)=(MACH(REGISTER)+DVAL)
*----------------------------------------------------------
* Define Calculation Sections
*----------------------------------------------------------
*----------------------------------------------------------
:SECTION=CALC_START_OF_TAPE
:C: LARGE_POT=8
:C: DEFINING_MACRO=NO
:C: OFFSET_RESIDENT=NO
:C: SEQ=0
:C: SEQ_INCREMENT=1
:C: MAX_SEQUENCE=99999
:C: PRELOAD_LAST=YES
:C: END_OF_TAPE_PRELOAD=NO
:C: INC_SUBPROGRAMS=NO
:C: CALC_CHANGE_TOOL=1
:C: CALL(CALC_INITIALIZE)
*
* PreLoad Tool Array
*
:C: GETTOOLS(2,CALC_PRELOAD_TOOL)
:C: TOOL_ARRAY(ARRAY_COUNT)=TOOL_ARRAY(0)
:C: TOOL_DIAM_ARRAY(ARRAY_COUNT)=TOOL_DIAM_ARRAY(0)
:C: ARRAY_COUNT=1
*
* Output Start of tape
*
:C: IF SECTIONEXIST(START_OF_TAPE) THEN
*:C: CALL(START_OF_TAPE)
:C: ENDIF
*----------------------------------------------------------
:SECTION=CALC_INIT_TOOL_CHANGE_MILL
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=4 CALL(DEBUG)
:C: ENDIF
*
* If you are defining a macro then you stop here!
*
:C: P_MOVE_TYPE=TOOL_CHANGE
:C: CALC_CHANGE_TOOL=1
:C: IF DEFINING_MACRO=(YES) THEN CALL(CALC_CHECK_OPER_COMMENTS) RETURN ENDIF
:C: IF SEQ>SEQ_INCREMENT THEN GOTO1 ENDIF
:C: CALL(START_OF_TAPE)
*:C: GETTOOLS(2,CALC_TOOL_LIST)
:C1: IF MACH(REG_T)<>0 AND MACH(REG_T)=TOOL THEN RETURN ENDIF
:C: TOOL_ARRAY(ARRAY_COUNT)=NC_TOOL
:C: TOOL_DIAM_ARRAY(ARRAY_COUNT)=NC_TOOL_DIAMETER
:C: IF NC_TOOL=(-1) THEN TOOL_DIAM_ARRAY(ARRAY_COUNT)=TOOL_DIAM_ARRAY(0) ENDIF
:C: NEXT_TOOL=TOOL_ARRAY(ARRAY_COUNT)
:C: POT_NUMBER=10
:C: IF TOOL_DIAMETER>LARGE_POT THEN POT_NUMBER=90 ENDIF
:C: NEXT_POT_NUMBER=10
:C: IF TOOL_DIAM_ARRAY(ARRAY_COUNT)>LARGE_POT THEN NEXT_POT_NUMBER=90 ENDIF
:C: ARRAY_COUNT=(ARRAY_COUNT+1)
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_TOOL_CHANGE_TIME)
:C: ENDIF
:C: IF TOOL_COMMENT={} THEN
:C: SETOFF(<TOOL_COMMENT>) ELSE
:C: SETON(<TOOL_COMMENT>)
:C: ENDIF
:C: LAST_TOOL=TOOL
:C: IF SECTIONEXIST(INIT_PRELOAD_TOOL_CHANGE_MILL) THEN
:C: CALL(CALC_INIT_PRELOAD_TOOL_CHANGE)
:C: CALL(CALC_CHECK_OPER_COMMENTS)
:C: RETURN
:C: ENDIF
:C: IF SECTIONEXIST(INIT_TOOL_CHANGE_MILL) THEN
:C: CALL(INIT_TOOL_CHANGE_MILL)
:C: ENDIF
:C: CALL(CALC_CHECK_OPER_COMMENTS)
*-----------------------------------
:SECTION=CALC_TOOL_LIST
:C: TOOL_RADIUS=(TOOL_DIAMETER/2)
*:C: IF TOOL_TYPE=203 THEN TOOL_RADIUS=0 ENDIF
:C: TOOL_DEF=TOOL
:C: CALL(OUTPUT_TOOL)
*-----------------------------------
:SECTION=CALC_START_OPERATION
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=15 CALL(DEBUG)
:C: ENDIF
:C: IF plane_selection<>1 AND plane_selection<>2 AND plane_selection<>3 THEN
:C: plane_selection=1
:C: ENDIF
:C: AXIS_PLANE=plane_selection
:C: OPER_COUNT=(OPER_COUNT+1)
:C: CALL(CALC_ABS_INC)
:C: IF OPR_TYPE=MILL_DRILLING THEN CALL(CALC_PLANE) ENDIF
:C: IF OPR_SPEED_DIR=1
:C: THEN SPINDLE_DIR=MC(M_SPIN_CW)
:C: ELSE SPINDLE_DIR=MC(M_SPIN_CCW)
:C: ENDIF
:C: CALL(CALC_SPINDLE_COOLANT)
:C: IF coolant=1 THEN COOLANT_TYPE=MC(M_COOL_OFF) ENDIF
:C: IF coolant=2 THEN COOLANT_TYPE=MC(M_COOL_FLOOD) ENDIF
:C: IF coolant=3 THEN COOLANT_TYPE=MC(M_COOL_MIST) ENDIF
:C: IF coolant=4 THEN COOLANT_TYPE=MC(M_COOL_THRU) ENDIF
:C: CALL(CALC_MACHINE_COMP)
:C: IF OPER_COUNT>1 THEN
:C: IF WORK_COORD_CONFIG>0 THEN
:C: IF SAVE_WORK_COORD<>work_coord THEN
:C: CALL(CALC_WORK_COORD)
:C: ENDIF
:C: SAVE_WORK_COORD=work_coord
:C: ENDIF
:C: ENDIF
:C: IF SECTIONEXIST(FASTLINE) THEN
:C: IF OPR_TYPE=MILL_UV_CUT
:C: OR OPR_TYPE=MILL_SLICE_CUT
:C: OR OPR_TYPE=MILL_ROUGH_CUT
:C: OR OPR_TYPE=MILL_CURVE_CUT
:C: OR OPR_TYPE=MILL_TOPO_CUT
:C: OR OPR_TYPE=MILL_FREEFORM_CUT THEN
:C: FASTLINE(FASTLINE)
:C: ENDIF
:C: ENDIF
:C: IF SECTIONEXIST(CALC_ARM_POSITION) THEN CALL(CALC_ARM_POSITION) ENDIF
:C: IF ARRAY_COUNT=1 THEN SAVE_SPEED=OPR_SPEED RETURN ENDIF
:C: IF LAST_TOOL=TOOL THEN
:C: IF SAVE_SPEED<>OPR_SPEED THEN CALL(OUTPUT_SPEED) ENDIF
:C: ENDIF
:C: IF TOOL=LAST_TOOL THEN
:C: CALL(CALC_CHECK_OPER_COMMENTS)
:C: ENDIF
:C: SAVE_SPEED=OPR_SPEED
*-----------------------------------
:SECTION=CALC_RAPID_MOVE_MILL
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=3 CALL(DEBUG)
:C: ENDIF
:C: IF OPR_AXIS_TYPE>THREE_AXIS OR OPR_AXIS_TYPE=FIVE_AXIS THEN
:C: IF SECTIONEXIST(FIVE_AXIS_RAPID_MOVE_MILL) THEN
:C: CALL(CALC_FIVE_AXIS_RAPID_MOVE_MILL)
:C: RETURN
:C: ENDIF
:C: ENDIF
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_RAPID_TIME)
:C: ENDIF
:C: IF G_GROUP(GG(G_CANCEL_CYC))<>GC(G_CANCEL_CYC)
:C: THEN CALL(CALC_END_DRILL_CYCLE)
:C: ENDIF
:C: IF G_GROUP(GG(G_COMP_OFF))<>GC(G_COMP_OFF) AND LEADIN=YES THEN
:C: IF SECTIONEXIST(RAPID_LEADOUT_MOVE_MILL) THEN
:C: CALL(RAPID_LEADOUT_MOVE_MILL)
:C: ENDIF
:C: ENDIF
:C: X_POS=ABS_X_END
:C: Y_POS=ABS_Y_END
:C: IF N_TOOL=TOOL AND N_MOVE_TYPE=RAPID AND G_GROUP(GG(G_COMP_OFF))<>GC(G_COMP_OFF) THEN
:C: IF SECTIONEXIST(RAPID_LEADOUT_MOVE_MILL) THEN
:C: CALL(RAPID_LEADOUT_MOVE_MILL)
:C: RETURN
:C: ENDIF
:C: ENDIF
:C: IF P_MOVE_TYPE=TOOL_CHANGE THEN
:C: CALL(CALC_RAPID_FROM_TOOL_CHANGE_MILL) P_MOVE_TYPE=RAPID RETURN
:C: ENDIF
:C: IF N_TOOL<>TOOL THEN
:C: CALL(CALC_RAPID_TO_TOOL_CHANGE_MILL) RETURN
:C: ENDIF
:C: IF ABS(INC_X_END)<ROUNDING_POINT AND ABS(INC_Y_END)<ROUNDING_POINT THEN
:C: RETURN
:C: ENDIF
:C: IF LEADIN<>YES THEN
:C: CALL(RAPID_MOVE_MILL)
:C: RETURN
:C: ENDIF
:C: IF LEADIN=YES THEN
:C: IF COMP<>GC(G_COMP_OFF) THEN
:C: IF SECTIONEXIST(RAPID_LEADIN_MOVE_MILL) THEN
:C: CALL(RAPID_LEADIN_MOVE_MILL)
:C: RETURN
:C: ELSE
:C: CALL(RAPID_MOVE_MILL)
:C: ENDIF
:C: ELSE
:C: CALL(RAPID_MOVE_MILL)
:C: ENDIF
:C: ELSE
:C: CALL(RAPID_MOVE_MILL)
:C: ENDIF
*-----------------------------------
:SECTION=CALC_FIVE_AXIS_RAPID_MOVE_MILL
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_RAPID_TIME)
:C: ENDIF
:C: IF MACH(REG_X)=ABS_X_END AND
:C: MACH(REG_Y)=ABS_Y_END AND
:C: MACH(REG_Z)=ABS_Z_END AND
:C: ABS(INC_ROT_TILT_B)<(ROUNDING_POINT/2) THEN
:C: RETURN
:C: ENDIF
*
:C: X_POS=ABS_X_END
:C: Y_POS=ABS_Y_END
:C: IF P_MOVE_TYPE=TOOL_CHANGE THEN
:C: IF OPR_TYPE<>1020 THEN
:C: CALL(CYCLE_19_ROTATE)
:C: CALL(FIVE_AXIS_RAPID_MOVE_MILL_FIRST)
:C: P_MOVE_TYPE=RAPID
:C: RETURN
:C: ENDIF
:C: CALL(CALC_FIVE_AXIS_RAPID_FROM_T_CHANGE)
:C: P_MOVE_TYPE=RAPID
:C: RETURN
:C: ENDIF
:C: IF N_TOOL<>TOOL AND OPR_TYPE<>MILL_DRILLING THEN
:C: CALL(CALC_FIVE_AXIS_RAPID_TO_T_CHANGE)
:C: MACH(REG_Z)=MILL_Z_HOME
:C: RETURN
:C: ENDIF
:C: IF ABS(INC_ROT_TILT_A)<(ROUNDING_POINT/2) AND ABS(INC_ROT_TILT_B)<(ROUNDING_POINT/2) THEN
:C: CALL(FIVE_AXIS_RAPID_MOVE_MILL)
:C: ELSE
:C: IF OPR_TYPE<>1020 THEN
:C: CALL(CYCLE_19_ROTATE)
:C: ENDIF
:C: CALL(FIVE_AXIS_RAPID_MOVE_MILL)
:C: ENDIF
*-----------------------------------
:SECTION=CALC_LINE_MOVE_MILL
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=1 CALL(DEBUG)
:C: ENDIF
:C: IF OPR_AXIS_TYPE>THREE_AXIS OR OPR_AXIS_TYPE=FIVE_AXIS THEN
:C: IF SECTIONEXIST(FIVE_AXIS_LINE_MOVE_MILL) THEN
:C: CALL(CALC_FIVE_AXIS_LINE_MOVE_MILL)
:C: RETURN
:C: ENDIF
:C: ENDIF
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_MACHINE_TIME)
:C: ENDIF
:C: X_POS=ABS_X_END
:C: Y_POS=ABS_Y_END
:C: IF LEADOUT=YES THEN CALL(CALC_LINE_LEADOUT_MOVE) N_LEADOUT=NO RETURN ENDIF
:C: IF LEADIN=YES THEN CALL(CALC_LINE_LEADIN_MOVE) RETURN ENDIF
:C: IF ABS(INC_X_END)<ROUNDING_POINT AND ABS(INC_Y_END)<ROUNDING_POINT AND
:C: ABS(INC_Z_END)<ROUNDING_POINT THEN
:C: RETURN
:C: ENDIF
:C: CALL(LINE_MOVE_MILL)
*-----------------------------------
:SECTION=CALC_ARC_MOVE_MILL
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=2 CALL(DEBUG)
:C: ENDIF
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_MACHINE_TIME)
:C: ENDIF
*********************************************************
:C: BUCKET=0
:C: ROUNDOFF(ABS_X_END,BUCKET,X_POS,G_RIGHT_PLACES,METRIC_OUT)
:C: BUCKET=0
:C: ROUNDOFF(ABS_Y_END,BUCKET,Y_POS,G_RIGHT_PLACES,METRIC_OUT)
:C: IF MOVE_TYPE=CW_ARC THEN BUCKET=(ARC_START_ANGLE-ARC_END_ANGLE) ENDIF
:C: IF MOVE_TYPE=CCW_ARC THEN BUCKET=(ARC_END_ANGLE-ARC_START_ANGLE) ENDIF
:C: IF BUCKET<0 THEN BUCKET=(BUCKET+360) ENDIF
:C: IF NO_SMALL_ARC<>1 THEN
:C: IF ABS(X_POS-MACH(REG_X))<(ROUNDING_POINT*2)
:C: AND ABS(Y_POS-MACH(REG_Y))<(ROUNDING_POINT*2)
:C: AND ABS(BUCKET)<180
:C: AND ABS(BUCKET)>.00005 THEN RETURN
:C: ENDIF
:C: ELSE
:C: IF ABS(X_POS-MACH(REG_X))<(ARC_ROUNDING_POINT*2)
:C: AND ABS(Y_POS-MACH(REG_Y))<(ARC_ROUNDING_POINT*2)
:C: AND ABS(BUCKET)<180
:C: AND ABS(BUCKET)>.00005 THEN
*:C: AND ABS(BUCKET)>ARC_ROUNDING_POINT THEN
:C: IF SECTIONEXIST(LINE_MOVE_MILL) THEN
:C: CALL(LINE_MOVE_MILL)
:C: RETURN
:C: ENDIF
:C: RETURN
:C: ENDIF
:C: ENDIF
*********************************************************
:C: X_POS=ABS_X_END
:C: Y_POS=ABS_Y_END
:C: IF CANNED_THREAD_MILLING=1 THEN
:C: IF ABS(INC_Z_END)>(ROUNDING_POINT*2) THEN
:C: IF SECTIONEXIST(CANNED_THREAD_MILLING) THEN
:C: IF N_MOVE_TYPE<>CW_ARC AND N_MOVE_TYPE<>CCW_ARC THEN
:C: CALL(CANNED_THREAD_MILLING)
:C: RETURN
:C: ELSE
:C: RETURN
:C: ENDIF
:C: ENDIF
:C: ENDIF
:C: ENDIF
:C: IF MOVE_TYPE=CW_ARC THEN ARC_DIR=GC(G_CW_ARC) ENDIF
:C: IF MOVE_TYPE=CCW_ARC THEN ARC_DIR=GC(G_CCW_ARC) ENDIF
:C: IF ARCS=RADIAL THEN CALL(CALC_RADIAL_ARCS) RETURN ENDIF
:C: IF ABS(INC_Z_END)>0.00001 THEN
:C: IF MOVE_TYPE=CW_ARC THEN
:C: IPA=(ARC_INC_ANGLE)
:C: IF IPA>0 THEN
:C: IPA=(IPA*(-1))
:C: ENDIF
:C: ENDIF
:C: IF MOVE_TYPE=CCW_ARC THEN
:C: IPA=(ARC_INC_ANGLE)
:C: IF IPA<0 THEN
:C: IPA=(IPA*(-1))
:C: ENDIF
:C: ENDIF
:C: IZ=INC_Z_END
:C: IF SECTIONEXIST(HELICAL_ARC_MOVE_MILL) THEN
:C: CALL(HELICAL_ARC_MOVE_MILL)
:C: ENDIF
:C: RETURN
:C: ENDIF
:C: CALL(ARC_MOVE_MILL)
*-----------------------------------
:SECTION=CALC_RAPID_Z_UP_MILL
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=13 CALL(DEBUG)
:C: ENDIF
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_MILL_Z_RAPID_TIME)
:C: ENDIF
:C: IF ABS_Z_END=MILL_Z_HOME THEN ABS_Z_END=OPR_Z_RAPID_PLANE ENDIF
:C: IF G_GROUP(GG(G_CANCEL_CYC))<>GC(G_CANCEL_CYC)
:C: THEN CALL(CALC_END_DRILL_CYCLE)
:C: MACH(REG_Z)=MILL_Z_HOME
:C: RETURN
:C: ENDIF
:C: IF SECTIONEXIST(RAPID_Z_MOVE_UP_LEN_COMP_MILL) THEN
:C: IF G_GROUP(GG(G_LEN_COMP))<>GC(G_LEN_COMP)
:C: THEN CALL(CALC_RAPID_Z_MOVE_UP_LEN_COMP_MILL) RETURN
:C: ENDIF
:C: ENDIF
:C: IF N_TOOL=TOOL AND N_MOVE_TYPE<>6 AND N_MOVE_TYPE<>7 THEN
:C: CALL(RAPID_Z_MOVE_UP_MILL) R_PLANE=MACH(REG_Z) RETURN
:C: ENDIF
:C: IF SECTIONEXIST(LAST_RAPID_Z_MOVE_UP_MILL)
:C: THEN CALL(LAST_RAPID_Z_MOVE_UP_MILL) MACH(REG_Z)=MILL_Z_HOME
:C: ELSE CALL(RAPID_Z_MOVE_UP_MILL) MACH(REG_Z)=MILL_Z_HOME
:C: ENDIF
:C: R_PLANE=MACH(REG_Z)
*
:SECTION=CALC_END_OPERATION
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=16 CALL(DEBUG)
:C: ENDIF
:C: IF G_GROUP(GG(G_CANCEL_CYC))<>GC(G_CANCEL_CYC)
:C: THEN CALL(CALC_END_DRILL_CYCLE)
:C: MACH(REG_Z)=MILL_Z_HOME
:C: G_GROUP(GG(G_CANCEL_CYC))=GC(G_CANCEL_CYC)
:C: ENDIF
:C: IF G_GROUP(GG(G_COMP_OFF))<>GC(G_COMP_OFF) THEN
:C: IF SECTIONEXIST(RAPID_LEADOUT_MOVE_MILL) THEN
:C: CALL(RAPID_LEADOUT_MOVE_MILL)
:C: ENDIF
:C: ENDIF
*-----------------------------------
:SECTION=CALC_END_DRILL_CYCLE
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_DRILL_Z_RETRACT_TIME)
:C: ENDIF
:C: IF SECTIONEXIST(END_DRILL_CYCLE) THEN
:C: CALL(END_DRILL_CYCLE)
:C: G_GROUP(GG(G_CANCEL_CYC))=GC(G_CANCEL_CYC)
:C: ENDIF
*
:SECTION=CALC_START_DRILL_CYCLE
:C: TOTAL_Z_FEED=0
:C: TOTAL_Z_RAPID=0
*:C: G_GROUP(GG(G_CANCEL_CYC))=GC(G_LINE)
:C: IF SECTIONEXIST(MACRO_RAPID_CALL_MILL) THEN
:C: CALL(CALC_START_DRILL_CYCLE_MACRO)
:C: RETURN
:C: ENDIF
:C: IF OPR_RETRACT_TYPE=CLEARANCE_PLANE THEN Z_POS=OPR_Z_CLEARANCE ENDIF
:C: IF OPR_RETRACT_TYPE=RAPID_PLANE THEN Z_POS=OPR_Z_RAPID_PLANE ENDIF
:C: IF SECTIONEXIST(DRILL_POSITION)
:C: THEN CALL(CALC_DRILL_POSITION)
:C: ELSE Z_SAVE=ABS_Z_END ABS_Z_END=Z_POS
:C: CALL(CALC_RAPID_MOVE_MILL) ABS_Z_END=Z_SAVE
:C: ENDIF
:C: SAVE_Z=ABS_Z_END ABS_Z_END=Z_POS
:C: IF GC(G_LEN_COMP)<>GC(G_LEN_CANCEL) THEN
:C: IF MACH(REG_Z)=MILL_Z_HOME THEN
:C: CALL(CALC_FIRST_RAPID_Z_MOVE_DOWN_MILL)
:C: ELSE
:C: CALL(RAPID_Z_MOVE_DOWN_MILL)
:C: ENDIF
:C: ENDIF
:C: ABS_Z_END=SAVE_Z
:C: G_GROUP(GG(G_CANCEL_CYC))=GC(G_LINE)
:C: IF OPR_DRILL_CYCLE_TYPE=DRILLING THEN
:C: CALL(CALC_DRILLING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=SPOT_DRILLING THEN
:C: CALL(CALC_SPOT_DRILLING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=PECKING THEN
:C: CALL(CALC_NUM_PECKS)
:C: CALL(CALC_PECKING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=HIGH_SPEED_PECKING THEN
:C: CALL(CALC_NUM_PECKS)
:C: CALL(CALC_HIGH_SPEED_PECKING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=VARIABLE_PECKING THEN
:C: CALL(CALC_NUM_PECKS)
:C: CALL(CALC_VARIABLE_PECKING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=TAPPING THEN
:C: CALL(CALC_TAPPING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=REVERSE_TAPPING THEN
:C: CALL(CALC_REVERSE_TAPPING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=FINE_BORING THEN
:C: CALL(CALC_FINE_BORING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=REAMING THEN
:C: CALL(CALC_REAMING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=REAMING_DWELL THEN
:C: CALL(CALC_REAM_DWELL_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=BORING THEN
:C: CALL(CALC_BORING_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=BORE_DWELL THEN
:C: CALL(CALC_BORE_DWELL_CYCLE)
:C: GOTO10
:C: ENDIF
:C: IF OPR_DRILL_CYCLE_TYPE=BACK_BORING THEN
:C: CALL(CALC_BACK_BORING_CYCLE)
:C: GOTO10
:C: ENDIF
*
* Time Calculations
*
:C10: Z_DISTANCE=TOTAL_Z_RAPID
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(CALC_ESTIMATE_RAPID_TIME)
:C: CALL(CALC_ESTIMATE_DRILL_Z_INIT_TIME)
:C: Z_DISTANCE=TOTAL_Z_RAPID
:C: CALL(CALC_ESTIMATE_DRILL_RAPID_TIME)
:C: Z_DISTANCE=TOTAL_Z_FEED
:C: CALL(CALC_ESTIMATE_DRILL_FEED_TIME)
:C: ENDIF
*
:SECTION=CALC_SINGLE_DRILL_MILL
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=17 CALL(DEBUG)
:C: ENDIF
:C: X_POS=ABS_X_END
:C: Y_POS=ABS_Y_END
:C: IF G_GROUP(GG(G_CANCEL_CYC))=GC(G_CANCEL_CYC) THEN
:C: CALL(CALC_START_DRILL_CYCLE)
:C: RETURN
:C: ENDIF
:C: CALL(CALC_CONTINUE_DRILL_CYCLE)
*-----------------------------------
:SECTION=CALC_BEG_MACRO
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=7 CALL(DEBUG)
:C: ENDIF
:C: IF SECTIONEXIST(BEG_MACRO_MILL) THEN
:C: IF CURRENT_MACRO_NUMBER=1 THEN
:C: CALL(CALC_INITIALIZE)
:C: CALL(START_OF_TAPE)
*:C: GETTOOLS(2,CALC_TOOL_LIST)
:C: ENDIF
:C: DEFINING_MACRO=YES
:C: CALL(BEG_MACRO_MILL)
:C: SAVE_REG_X=MACH(REG_X)
:C: SAVE_REG_Y=MACH(REG_Y)
:C: IF MULTIPLE_MACROS=YES THEN
:C: HOLD_DBPX=DIST_BET_PARTS_X
:C: HOLD_DBPY=DIST_BET_PARTS_Y
:C: ELSE
:C: HOLD_DBPX=0
:C: HOLD_DBPY=0
:C: ENDIF
:C: HOLD_HOV=HORIZ_OR_VERT
:C: CALL(CALC_RESET_REGISTERS)
:C: CALC_MACRO_TIME=0
:C: ENDIF
*-----------------------------------
:SECTION=CALC_DO_END_MACRO
:C: DEFINING_MACRO=NO
:C: OFFSET_RESIDENT=NO
:C: IF MULTIPLE_MACROS=NO THEN GOTO1 ENDIF
:C: IF HOLD_DBPX=(0) AND HOLD_DBPY=(0) THEN GOTO1 ENDIF
:C: X_OFFSET=HOLD_DBPX
:C: Y_OFFSET=HOLD_DBPY
:C: IF HOLD_HOV=VERTICAL
:C: THEN CALL(CALC_OFFSET_Y)
:C: ELSE CALL(CALC_OFFSET_X)
:C: ENDIF
:C1: CALL(END_MACRO_MILL)
:C: MACRO_A=MACH(REG_X)
:C: MACRO_B=MACH(REG_Y)
:C: MACRO_E=OPR_TYPE
:C: CALL(CALC_RESET_REGISTERS)
:C: MACH(REG_X)=SAVE_REG_X
:C: MACH(REG_Y)=SAVE_REG_Y
:C: SAVE_SEQ=SEQ
:C: MACRO_D=CALC_MACRO_TIME
*-----------------------------------
:SECTION=CALC_DO_MACRO_CALL_MILL
:C: DEFINING_MACRO=NO
:C: OPR_TYPE=MACRO_E
:C: CALC_TIME=(CALC_TIME+MACRO_D)
:C: IF MACH(REG_T)<>0 AND MACH(REG_T)=TOOL THEN GOTO1 ENDIF
:C: IF MACH(REG_T)=0 THEN
:C: CALL(CALC_INIT_TOOL_CHANGE_MILL)
:C: ELSE
:C: CALL(CALC_SUB_TOOL_CHANGE_MILL)
:C: ENDIF
:C1: X_OFFSET=INC_X_END
:C: Y_OFFSET=INC_Y_END
:C: Z_OFFSET=INC_Z_END
:C: IF SECTIONEXIST(MACRO_ROTATE_CALL_MILL) THEN
:C: IF MACRO_ROTATE_AXIS=X_AXIS THEN CALL(ROTATE_X) SAVE_ANGLE_X=ROTATE_ANGLE_X ENDIF
:C: IF MACRO_ROTATE_AXIS=Y_AXIS THEN CALL(ROTATE_Y) SAVE_ANGLE_Y=ROTATE_ANGLE_Y ENDIF
:C: IF MACRO_ROTATE_AXIS=Z_AXIS THEN CALL(ROTATE_Z) SAVE_ANGLE_Z=ROTATE_ANGLE_Z ENDIF
:C: CALL(MACRO_ROTATE_CALL_MILL)
:C: ELSE
:C: CALL(MACRO_CALL_MILL)
:C: ENDIF
:C: MACH(REG_X)=(INC_X_END+MACRO_A)
:C: MACH(REG_Y)=(INC_Y_END+MACRO_B)
:C: IF INC_SUBPROGRAMS=NO THEN OFFSET_RESIDENT=YES ENDIF
:C: MACH(REG_T)=TOOL
*-----------------------------------
:SECTION=CALC_SET_PRE_POSITION_ROTARY_TYPE
* this section will be called by CAMWorks automatically when you are prepositioning
* only and set the 4th axis preposition output either ROT_TILT_A or ROT_TILT_B.
* A wrapped feature will always be ROT_TILT_A. Setting this to ROTARY_TYPE_B will
* support old preposition posts.
*
* ROTARY_TYPE_A=4
* ROTARY_TYPE_B=5
*
:C: FOURTH_AXIS_SELECTION=ROTARY_TYPE_A
:C: IF FOURTH_AXIS_SELECTION>3 AND FOURTH_AXIS_SELECTION<6 THEN
:C: IF CAMWORKS_VER>CAM_REV2006EX THEN
:C: PRE_POSITION_ROTARY_TYPE=FOURTH_AXIS_SELECTION
:C: ENDIF
:C: ENDIF
*-----------------------------------
*
:SECTION=CALC_END_OF_TAPE
:C: IF SECTIONEXIST(DEBUG) THEN
:C: DEBUG=11 CALL(DEBUG)
:C: ENDIF
:C: CALL(CALC_TOTAL_TIME)
:C: CALL(CALC_REMOVE_OFFSET)
:C: IF SECTIONEXIST(RESET_X) THEN
:C: IF SAVE_ANGLE_X<>0 THEN
:C: CALL(RESET_X)
:C: RETURN
:C: ENDIF
:C: IF SAVE_ANGLE_Y<>0 THEN
:C: CALL(RESET_Y)
:C: RETURN
:C: ENDIF
:C: IF SAVE_ANGLE_Z<>0 THEN
:C: CALL(RESET_Z)
:C: RETURN
:C: ENDIF
:C: ENDIF
:C: IF SECTIONEXIST(END_OF_TAPE_PRELOAD) AND END_OF_TAPE_PRELOAD=YES THEN
:C: IF TOOL<>TOOL_ARRAY(0) THEN
:C: NEXT_TOOL=TOOL_ARRAY(0)
:C: CALL(END_OF_TAPE_PRELOAD) ELSE
:C: CALL(END_OF_TAPE)
:C: ENDIF
:C: ELSE
:C: CALL(END_OF_TAPE)
:C: STRG_A={KKK9998 }
:C: STRG_B={KKK9999 }
:C: STRG_C={}
:C: REPLACE(STRG_A,STRG_C)
:C: REPLACE(STRG_B,STRG_C)
:C: ENDIF
*
:C: IF SETUP_CONFIG<>0 THEN
:C: IF OPR_AXIS_TYPE<2222 THEN
:C: ADD_MACRO_START
:C: ENDIF
:C: EOL={}
:C: SPACES(YES)
:C: CALL(SETUP_SHEET_MILL)
:C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN
:C: CALL(OUTPUT_ESTIMATED_TIME)
:C: ENDIF
:C: GETTOOLS(2,SYSTEM)
:C: IF OPR_AXIS_TYPE<2222 THEN
:C: ADD_MACRO_END
:C: ENDIF
:C: ENDIF
:C: IF SECTIONEXIST(PERCENT) THEN
:C: IF OPR_AXIS_TYPE<2222 THEN
:C: ADD_MACRO_START
:C: ENDIF
:C: CALL(PERCENT)
:C: IF OPR_AXIS_TYPE<2222 THEN
:C: ADD_MACRO_END
:C: ENDIF
:C: ENDIF
*
:C: LOOP=0
:C1: TOOL=TOOL_ARRAY(LOOP)
:C: IF SECTIONEXIST(OUTPUT_TOOL_LIST) THEN
:C: CALL(OUTPUT_TOOL_LIST)
:C: ENDIF
:C: LOOP=(LOOP+1)
:C: IF TOOL_ARRAY(LOOP)=(-1) OR TOOL_ARRAY(LOOP)=0 THEN RETURN ENDIF
:C: GOTO1