[MAIN PART OF THE CFF]
[MACHINE NAMES]
Machine:
Model:
Customer:
[REVISION NUMBER]
0.1
[REVISION NOTES]
0.1 Original version
[MAIN]
{START OF FILE}
{PROGRAM INIT}
{VALIDATE PLATE}
{OUTPUT PROFILES}
{END OF FILE}
[PROCESS NAMES]
CUT1=Gas
CUT2=Plasma
SCRIBE1=Scribe-G
SCRIBE2=Scribe-P
PUNCH1=Punch-G
PUNCH2=Punch-P
[SECTION PART OF THE CFF]
[START OF FILE]
[PROGRAM INIT]
{UNITS}
{MODE}
[UNITS]
IF $UNITS=INCH
{LINENO :M}G70
ELSE
{LINENO :M}
END
[MODE]
IF $MODE=ABSOLUTE
{LINENO :M}G90
{LINENO :M}G92{INITPTX}{INITPTY}
ELSE
{LINENO :M}G91
END
[STEP AND REPEAT START]
{LINENO :M}G97
[STEP AND REPEAT END]
{LINENO :M}G98
[VALIDATE PLATE]
IF $VALIDATEPLATE = TRUE
$X := $INITPTX
$Y := $INITPTY
IF $INITPTLOCATION = LOWERLEFT
$X := $SHEETMAXX
$Y := $SHEETMAXY
ELSE
IF $INITPTLOCATION = LOWERRIGHT
$X := $SHEETMINX
$Y := $SHEETMAXY
ELSE
IF $INITPTLOCATION = UPPERRIGHT
$X := $SHEETMINX
$Y := $SHEETMINY
ELSE
$X := $SHEETMAXX
$Y := $SHEETMINY
END
END
END
$MOTION := DEFAULT
$MOTION := {RAPID MOTION CODE}
{RAPID MOTION}
IF $INITPTLOCATION = LOWERLEFT
$X := $SHEETMINX
$Y := $SHEETMINY
ELSE
IF $INITPTLOCATION = LOWERRIGHT
$X := $SHEETMAXX
$Y := $SHEETMINY
ELSE
IF $INITPTLOCATION = UPPERRIGHT
$X := $SHEETMAXX
$Y := $SHEETMAXY
ELSE
$X := $SHEETMINX
$Y := $SHEETMAXY
END
END
END
{RAPID MOTION}
END
[END OF FILE]
{CANCEL CURRENT OFFSET}
{END OF PROGRAM}
[END OF PROGRAM]
IF $RETURNTOINIT=TRUE
{LINEAR MOTION TO INIT}
END
M02
[LINEAR MOTION TO INIT]
{LINENO :M}{INIT PT MOTION CODE:M}{RETURNINITPTX}{RETURNINITPTY}
[CANCEL CURRENT OFFSET]
IF $PROCESS=SCRIBE1
{LINENO :M}M70
END
IF $PROCESS=SCRIBE2
{LINENO :M}M72
END
[OUTPUT START INTERIOR PROFILE]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
[OUTPUT START EXTERIOR PROFILE]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
[OUTPUT START OPEN PROFILE]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
[OUTPUT START CROP]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
[OUTPUT TORCH SPACING]
IF {TORCH SPACING REQUIRED}
IF $NUMTORCHES = 1 || $NUMTORCHES = 0
(Set 1 torch.)
{OUTPUT STOP}
ELSE
(Set {NUMTORCHES} torches at {TORCHSPACING}{TORCHUNITS}.)
{OUTPUT STOP}
END
END
[OUTPUT END INTERIOR PROFILE]
IF {KERF STILL ON}
{KERF OFF}
END
[OUTPUT END EXTERIOR PROFILE]
IF {KERF STILL ON}
{KERF OFF}
END
[OUTPUT END OPEN PROFILE]
IF {KERF STILL ON}
{KERF OFF}
END
[OUTPUT END CROP]
IF {KERF STILL ON}
{KERF OFF}
END
[LINENO]
MODAL_ARGUMENT=$LINENUMBER
IF $USELINENUMBERS = EVERYLINE
{NWORD}
END
[PART NAME COMMENT]
$SAVEPARTNAME := $PARTNAME
$SAVENUM := $PARTSEQUENCENUMBER
IF $SAVENUM != $LASTSAVENUM || $SAVEPARTNAME != $LASTSAVEPARTNAME
IF $PARTSEQUENCENUMBER > 0
(Seq {PART SEQUENCE NUMBER} - {PARTNAME})
ELSE
({PARTNAME})
END
END
[PART SEQUENCE NUMBER]
ARGUMENT=$PARTSEQUENCENUMBER
FORMAT=%d
[PARTNAME]
ARGUMENT=$PARTNAME
FORMAT=%s
[CHANGE OFFSETS]
{CANCEL PREVIOUS OFFSET}
{ACTIVATE CURRENT OFFSET}
[CANCEL PREVIOUS OFFSET]
IF $PROCESSONSTATE = TRUE && $PROCESS != $LASTPROCESS
IF $LASTPROCESS=SCRIBE1
{LINENO :M}M70
END
IF $LASTPROCESS=SCRIBE2
{LINENO :M}M72
END
ELSE
IF $PROCESSONSTATE = FALSE && $PROCESS != $NEXTPROCESS
{CANCEL CURRENT OFFSET}
END
END
[ACTIVATE CURRENT OFFSET]
IF $PROCESS != $LASTPROCESS
IF ($PROCESS=PUNCH1 || $PROCESS=PUNCH2 || $PROCESS=PUNCH3 || $PROCESS=PUNCH4 || $PROCESS=PUNCH5 || $PROCESS=PUNCH6) && $STOPBEFOREPUNCH = TRUE
{OUTPUT STOP}
ELSE
IF ($PROCESS=SCRIBE1 || $PROCESS=SCRIBE2) && $STOPBEFORESCRIBE = TRUE
{OUTPUT STOP}
ELSE
IF ($PROCESS=CUT1 || $PROCESS=CUT2 || $PROCESS=CUT3) && $STOPBEFORECUT = TRUE
{OUTPUT STOP}
END
END
END
IF $PROCESS=SCRIBE1
{LINENO :M}M71
END
IF $PROCESS=SCRIBE2
{LINENO :M}M73
END
END
[ACTIVATE NEXT OFFSET]
IF $PROCESS != $NEXTPROCESS
IF ($NEXTPROCESS=PUNCH1 || $NEXTPROCESS=PUNCH2 || $NEXTPROCESS=PUNCH3 || $NEXTPROCESS=PUNCH4 || $NEXTPROCESS=PUNCH5 || $NEXTPROCESS=PUNCH6) && $STOPBEFOREPUNCH = TRUE
{OUTPUT STOP}
ELSE
IF ($NEXTPROCESS=SCRIBE1 || $NEXTPROCESS=SCRIBE2) && $STOPBEFORESCRIBE = TRUE
{OUTPUT STOP}
ELSE
IF ($NEXTPROCESS=CUT1 || $NEXTPROCESS=CUT2 || $NEXTPROCESS=CUT3) && $STOPBEFORECUT = TRUE
{OUTPUT STOP}
END
END
END
IF $NEXTPROCESS=SCRIBE1
{LINENO :M}M71
END
IF $NEXTPROCESS=SCRIBE2
{LINENO :M}M73
END
END
[PROCESS MOTION CODE]
IF {SURPASSES RAPID THRESHOLD}
{RAPID MOTION CODE}
ELSE
{LINEAR MOTION CODE}
END
[PROCESS ON MOTION]
IF {MOTION REQUIRED}
$MOTION := {PROCESS MOTION CODE}
IF {SURPASSES RAPID THRESHOLD}
{RAPID MOTION}
ELSE
{LINENO :M}{LINEAR MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
END
END
[RAPID MOTION]
{LINENO :M}{RAPID MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
[LINEAR MOTION]
IF {RAPID MOTION ALLOWED}
{RAPID MOTION}
ELSE
{FEEDRATE LINE}
{ADD KERF VALUE}
{LINENO :M}{LINEAR MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
END
[CLOCKWISE MOTION]
IF {ARC TOO SMALL}
{LINEAR MOTION}
ELSE
{FEEDRATE LINE}
{ADD KERF VALUE}
{LINENO :M}{CLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}
END
[COUNTERCLOCKWISE MOTION]
IF {ARC TOO SMALL}
{LINEAR MOTION}
ELSE
{FEEDRATE LINE}
{ADD KERF VALUE}
{LINENO :M}{COUNTERCLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}
END
[RAPID MOTION CODE]
MODAL_ARGUMENT=$MOTION
G00
[LINEAR MOTION CODE]
IF {RAPID MOTION ALLOWED}
{RAPID MOTION CODE}
ELSE
MODAL_ARGUMENT=$MOTION
G01
END
[CLOCKWISE MOTION CODE]
IF {ARC TOO SMALL}
{LINEAR MOTION CODE}
ELSE
MODAL_ARGUMENT=$MOTION
G02
END
[COUNTERCLOCKWISE MOTION CODE]
IF {ARC TOO SMALL}
{LINEAR MOTION CODE}
ELSE
MODAL_ARGUMENT=$MOTION
G03
END
[INIT PT MOTION CODE]
IF {RAPID INIT MOTION ALLOWED}
{RAPID MOTION CODE}
ELSE
MODAL_ARGUMENT=$MOTION
G01
END
[ADD FEEDRATE]
IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE
{FEEDRATE :M}
$FEEDRATE:=$FEEDRATE
END
[FEEDRATE LINE]
IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE
{LINENO :M}{FEEDRATE :M}
$FEEDRATE:=$FEEDRATE
END
[ADD KERF VALUE]
IF $KERF > 0.0 && $KERF != $LASTKERF
IF $KERFDIR=LEFT || $KERFDIR=RIGHT
{KERF DIRECTION}
$KERF:=$KERF
END
END
[OUTPUT KERF LEFT]
IF $KERF <= 0
{LINENO :M}G41
ELSE
{LINENO :M}G41
$KERF:=$KERF
END
[OUTPUT KERF RIGHT]
IF $KERF <= 0
{LINENO :M}G42
ELSE
{LINENO :M}G42{KERF VALUE :M}
$KERF:=$KERF
END
[OUTPUT KERF OFF]
{LINENO :M}G40
[KERF OFF]
{OUTPUT KERF OFF}
[KERF DIRECTION]
IF ($PROCESS != SCRIBE1) && ($PROCESS != SCRIBE2)
IF $KERFDIR = LEFT
{OUTPUT KERF LEFT}
END
IF $KERFDIR = RIGHT
{OUTPUT KERF RIGHT}
END
IF $KERFDIR = OFF
{OUTPUT KERF OFF}
END
END
[OUTPUT STOP]
{LINENO :M}M00
[OUTPUT AHCON]
IF $AHCDISABLED = 0
{LINENO :M}M15
END
[OUTPUT AHCOFF]
IF $AHCDISABLED = 0
{LINENO :M}M14
END
[OUTPUT CUT1 ON]
{FEEDRATE LINE}
{LINENO :M}M04
[OUTPUT CUT1 OFF]
{LINENO :M}M03
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT CUT1 OFFUP]
{LINENO :M}M03
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT CUT2 ON]
{FEEDRATE LINE}
{LINENO :M}M81
IF $DISABLEAHC = 1
{OUTPUT AHCOFF}
$AHCDISABLED := 1
END
[OUTPUT CUT2 OFF]
{LINENO :M}M83
IF $DISABLEAHC = 1
$AHCDISABLED := 0
{OUTPUT AHCON}
END
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT CUT2 OFFUP]
{LINENO :M}M83
IF $DISABLEAHC = 1
$AHCDISABLED := 0
{OUTPUT AHCON}
END
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT SCRIBE1 ON]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
{LINENO :M}M08
[OUTPUT SCRIBE1 OFF]
{LINENO :M}M07
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT SCRIBE2 ON]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
{LINENO :M}M10
[OUTPUT SCRIBE2 OFF]
{LINENO :M}M09
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT PUNCH1 ON]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
{LINENO :M}M08
{LINENO :M}G04F0.5
{LINENO :M}M07
$KERF:=0.0
$FEEDRATE:=0.0
[OUTPUT PUNCH2 ON]
IF $USELINENUMBERS = STARTOFPROFILE
{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
{LINENO :M}M10
{LINENO :M}G04F0.5
{LINENO :M}M09
$KERF:=0.0
$FEEDRATE:=0.0
[COMMENT FORMAT]
(%s)
[FORMAT PART OF THE CFF]
[INITPTX]
ARGUMENT=($INITPTX - $INITPTX) * $CONVERSION
FORMAT=X%1.2lf
[INITPTY]
ARGUMENT=($INITPTY - $INITPTY) * $CONVERSION
FORMAT=Y%1.2lf
[CONVERSION]
IF $UNITS=INCH
1.00
ELSE
25.40
END
[RETURNINITPTX]
IF $MODE=ABSOLUTE
ARGUMENT=($INITPTX-$INITPTX) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
ARGUMENT=($INITPTX - $X) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=X{XY FORMAT}
[RETURNINITPTY]
IF $MODE=ABSOLUTE
ARGUMENT=($INITPTY-$INITPTY) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
ARGUMENT=($INITPTY - $Y) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=Y{XY FORMAT}
[NWORD]
FORMAT=N%01d
ARGUMENT=$LINENUMBER
[NUMTORCHES]
ARGUMENT=$NUMTORCHES
FORMAT=%d
[TORCHSPACING]
ARGUMENT=$TORCHSPACING * $CONVERSION
FORMAT=%1.3lf
[TORCHUNITS]
IF $UNITS = INCH
in
ELSE
mm
END
[XY FORMAT]
IF $PRECISION=NORMAL
%1.2lf
ELSE
%1.3lf
END
[IJ FORMAT]
IF $PRECISION=NORMAL
%1.2lf
ELSE
%1.3lf
END
[FEEDRATE FORMAT]
IF $UNITS=INCH
%1.1lf
ELSE
%1.0lf
END
[DWELL FORMAT]
%1.2lf
[XYIJ DECIMAL SHIFT]
1
[FEEDRATE DECIMAL SHIFT]
1
[KERF DECIMAL SHIFT]
1
[DWELL DECIMAL SHIFT]
1
[ANGLE DECIMAL SHIFT]
0
[CURRENTX]
MODAL_ARGUMENT=$X
IF $MODE=ABSOLUTE
ARGUMENT=($X - $INITPTX) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
ARGUMENT=($X - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=X{XY FORMAT}
[CURRENTY]
MODAL_ARGUMENT=$Y
IF $MODE=ABSOLUTE
ARGUMENT=($Y - $INITPTY) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
ARGUMENT=($Y - $LASTY) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=Y{XY FORMAT}
[CURRENTI]
IF $MODE=ABSOLUTE
ARGUMENT=($I - $INITPTX) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
ARGUMENT=($I - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=I{IJ FORMAT}
[CURRENTJ]
IF $MODE=ABSOLUTE
ARGUMENT=($J - $INITPTY) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
ARGUMENT=($J - $LASTY) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=J{IJ FORMAT}
[FEEDRATE]
MODAL_ARGUMENT=$FEEDRATE
ARGUMENT=$FEEDRATE * $CONVERSION * $FEEDRATEDECIMALSHIFT
FORMAT=F{FEEDRATE FORMAT}
[KERF VALUE]
MODAL_ARGUMENT=$KERF
ARGUMENT=$KERF * $CONVERSION * $KERFDECIMALSHIFT
FORMAT=K%1.3f
[OUTPUT DWELL]
ARGUMENT=$DWELL * $DWELLDECIMALSHIFT
FORMAT={LINENO :M}G04F{DWELL FORMAT}
[CONDITIONS PART OF THE CFF]
[MAXLINENO]
9999
[TORCH SPACING REQUIRED]
($TORCHSPACING != $PREVTORCHSPACING || $NUMTORCHES != $PREVNUMTORCHES)
[KERF STILL ON]
$KERFDIR = LEFT || $KERFDIR = RIGHT
[MOTION REQUIRED]
(($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5 > 0.00001
[RAPID MOTION ALLOWED]
{SURPASSES RAPID THRESHOLD} && $PROCESSONSTATE = FALSE
[SURPASSES RAPID THRESHOLD]
(($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5 > $RAPIDDISTANCE
[ARC TOO SMALL]
{ARC RADIUS} < 0.010000 || ({CHORD LENGTH} > 0.01 && {CHORD LENGTH} < 0.011000 && $ARCANGLE < 180)
[RAPID INIT MOTION ALLOWED]
(($X - $INITPTX)^2 + ($Y - $INITPTY)^2)^0.5 > $RAPIDDISTANCE && $PROCESSONSTATE = FALSE
[ARC RADIUS]
(($I - $LASTX)^2 + ($J - $LASTY)^2)^0.5
[CHORD LENGTH]
(($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5
[USER DEFINED VARIABLES]
SAVEPARTNAME|STRING|0
SAVENUM|INTEGER|0
RAPIDDISTANCE|DOUBLE|0.0100
DX|DOUBLE|0.0
DY|DOUBLE|0.0
KERF|DOUBLE|0.0
FEEDRATE|DOUBLE|0.0
AHCDISABLED|INTEGER|0
DISABLEAHC|INTEGER|0