[MAIN PART OF THE CFF] [MACHINE PROPERTIES] comment_indicator=// [MACHINE NAMES] Machine: Model: Customer: [REVISION NUMBER] 0.1 [REVISION NOTES] 0.1 Original version [MAIN] $PIERCE_HEIGHT := 'NPROMPT(Enter Pierce Height) $CUTTING_HEIGHT := 'NPROMPT(Enter Cutting Height) $SAFE_Z := 'NPROMPT(Enter SafeZ) {START OF FILE} {PROGRAM INIT} {VALIDATE PLATE} {OUTPUT PROFILES} {END OF FILE} [PROCESS NAMES] CUT2=Plasma [SECTION PART OF THE CFF] [START OF FILE] % [PROGRAM INIT] {INFO} {UNITS} {MODE} $REG_STATE := 1 [INFO] (Post processor: Pumotix THC Pronest) [UNITS] IF $UNITS=INCH {LINENO :M}G20 ELSE {LINENO :M}G21 END [MODE] IF $MODE=ABSOLUTE {LINENO :M}G90 ELSE {LINENO :M}G91 END {LINENO :M}G40 G91.1 {LINENO :M}F1 {LINENO :M}M101 {LINENO :M}{RAPID MOTION CODE}{OUTPUT SAFE_Z} [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 M05 M30 IF $KERF_USED = 1 $KERF_USED := 'NPROMPT($KERF_WARN_MES) END [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 $NOFEEDRATE=0 IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE {FEEDRATE :M} $FEEDRATE:=$FEEDRATE END END [FEEDRATE LINE] IF $NOFEEDRATE=0 IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE {LINENO :M}{FEEDRATE :M} $FEEDRATE:=$FEEDRATE END 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 {WARNING KERF} $KERF_USED := 1 $KERF:=$KERF END [OUTPUT KERF RIGHT] IF $KERF > 0 {WARNING KERF} $KERF_USED := 1 $KERF:=$KERF END [WARNING KERF] {LINENO :M}(Attempt to use G41/G42 command. Please set pre-kerf option in Pronest) [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 $REG_STATE = 0 $REG_STATE := 1 {LINENO :M}M104 END [OUTPUT AHCOFF] IF $REG_STATE = 1 $REG_STATE := 0 {LINENO :M}M103 END [OUTPUT CUT1 ON] [OUTPUT CUT1 OFF] [OUTPUT CUT1 OFFUP] [OUTPUT CUT2 ON] {LINENO :M}M100 {LINENO :M}{RAPID MOTION CODE}{OUTPUT PIERCE_HEIGHT} {LINENO :M}M03 {LINENO :M}{RAPID MOTION CODE}{OUTPUT CUTTING_HEIGHT} IF $ISLEADIN = 1 {OUTPUT AHCOFF} END {FEEDRATE LINE} [OUTPUT CUT2 OFF] {OUTPUT AHCON} {LINENO :M}M05 {LINENO :M}{RAPID MOTION CODE}{OUTPUT SAFE_Z} $KERF:=0.0 $FEEDRATE:=0.0 [OUTPUT CUT2 OFFUP] {OUTPUT AHCON} {LINENO :M}M05 {LINENO :M}{RAPID MOTION CODE}{OUTPUT SAFE_Z} $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] ARGUMENT=($I - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT FORMAT=I{IJ FORMAT} [CURRENTJ] ARGUMENT=($J - $LASTY) * $CONVERSION * $XYIJDECIMALSHIFT 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 [START LEADIN] $ISLEADIN := 1 {OUTPUT AHCOFF} [END LEADIN] $ISLEADIN := 0 {OUTPUT AHCON} [START LEADOUT] {OUTPUT AHCOFF} [END LEADOUT] {OUTPUT AHCON} [OUTPUT PIERCE_HEIGHT] ARGUMENT=$PIERCE_HEIGHT FORMAT=Z%1.3lf [OUTPUT CUTTING_HEIGHT] ARGUMENT=$CUTTING_HEIGHT FORMAT=Z%1.3lf [OUTPUT SAFE_Z] ARGUMENT=$SAFE_Z FORMAT=Z%1.3lf [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 NOFEEDRATE|INTEGER|0 NOPROBING|INTEGER|0 ISLEADIN|INTEGER|0 PIERCE_HEIGHT|DOUBLE|3.0 CUTTING_HEIGHT|DOUBLE|1.5 SAFE_Z|DOUBLE|10.0 KERF_USED|INTEGER|0 KERF_WARN_MES|STRING|G41/G42 commands can not be used. Please set Job -> Settings -> CNC Output -> Options -> Pre-kerf option in Pronest REG_STATE|INTEGER|1