586,100 active members*
2,914 visitors online*
Register for free
Login
Page 1 of 2 12
Results 1 to 20 of 21
  1. #1
    Join Date
    Jan 2005
    Posts
    44

    Question Mach with mtc pronest

    i am thinking of purchasing pronest is anyone using it with mach on a plasma machine and does it gen the correct gcodes

  2. #2
    Join Date
    Jan 2005
    Posts
    44

    mtc nesting

    does anyone know anything about mtc nesting slash gcode program for a plasma

  3. #3
    Join Date
    Dec 2004
    Posts
    312
    i have no experience with this software but the price are high.. they can build custom post generator (gcode to suit your machine needs)

    but i honestly would suggest you use sheetcam and mynesting.com for the price wise.. this is the route i use and it has been working really well for me..

  4. #4
    Join Date
    Jul 2007
    Posts
    11

    ProNest

    Regarding your question about ProNest, I have used the current version (ProNest 2010) and the earlier versions (7 and 8). The supplier (MTC Software, which is a Hypertherm brand) provides machine setup files which give the specific g code output for the cutting machine (plasma, laser, waterjet, oxyfuel, etc). I have found ProNest to be very easy to learn and use.

  5. #5
    Join Date
    Jan 2005
    Posts
    44

    will?

    will mtc set up your post for you they sent me a demo version all it says is plasma demo mode, will they let you try bfore you buy , alot of progams looks good on demo but very dificult to set up i have two tables running 2 shifts i dont have time for down time ,Thanks
    Barry

  6. #6
    Join Date
    Jan 2008
    Posts
    2247
    ProNest is designed for industrial cutting applications that need CAM software to improve productivity and design to production times. Compared to entry level nesting software packages....ProNest seems expensive, but proves to be very cost effective.

    I found that the ProNest is very intuitive....yet online training sessions are included with the package. The nesting capability, which is designed for the best combination of plate utilisation....as well as torch collision avoidance and minimal heat input for warpage control...is second to none. Further...ProNest has many features that can help you improve cut quality through very adaptive lead in, lead out and overburn designs that are focused on improving quality by minimizing the start/stop dings and divots that are present in many plasma cutting applications. Further....this CAM software can take full control of plasma and THC functions (if your plasma and THC have the interfac capability) that can further reduce imperfections caused by incorrect height in small features as well as controlling the cut speed.

    MTC was purchased by Hypertherm on January 1 2009. At last weeks Fabtech show in Chicago Hypertherm was demonstrating an integrated cutting system which utilized an HPR400xd (400 Amp high definition class plasma), a Hypertherm EdgePro cnc control, an advanced Hypertherm ArcGlide THC....all working in conjunction with the MTC software. The demo included inputing simple parts as .dxf files, the software would accurately nest these parts....and also would recognize small features on the part and generate machine codes that improved small feature quality by improving lead ins, lead outs, plasma on/off signals, Changing plasma process gas to minimize hole taper, as well as controlling height during small features to eliminate torch diving. The result: small holes without dings, divots or taper.....these holes were comparable to drilled or laser cut holes on materials from gauge to 1" thick....yet were cut at plasma speed and at plasma (low) operating cost.

    I was the Hypertherm guy running the machine for 4 days....so I experienced this all first hand! In almost 32 years of plasma cutting...this is one of the biggest breakthroughs in cut quality that I have seen.....and the part of the system that allowed this improvement was the MTC ProNest software and its capability.

    Granted....this is all high end (read expensive) plasma cutting equipment designed for industrial high duty cycle, high production use....but many of the features that ProNest brings to the table for this application will improve processes on lesser equipment as well. MTC also has some other Nesting and Post Processing software for simpler applications at lower prices. And now it is supported by the Hypertherm brand!

    Best regards, Jim Colt

  7. #7
    Join Date
    Jan 2005
    Posts
    59
    Did you ever get any where with the pronest post for mach? I'm working with mtc trying out nestmaster, their lower cost version. I'm having a heck of a time getting the I and J 's to turn out right. It seems like no matter what I do in the post or mach it tends to be way off. Here's the post I'm working with:


    [MAIN PART OF THE CFF]

    [MACHINE PROPERTIES]
    name=Mach 3 with Touch-n-Go
    model=No Subroutines
    subroutines=0
    comment_indicator=//
    Machine Type=0
    // Machine Types: 0 = plasma, 1 = oxyfuel, 2 = waterjet, 3 = laser, 4 = router

    [PROCESS NAMES]
    CUT1=Cut
    SCRIBE1=Scribe
    PUNCH1=Punch

    [REVISION NUMBER]
    $Revision: 1.1 $

    [REVISION NOTES]
    1.0 Original version from Generic 1.36
    1.1 A bit of rephrasing and cleanups on the configuration comments

    [MAIN]
    //
    ////////////////////////////////////////////////////////////////////////////////
    // The following variables can be initialized in this section for NestMaster.
    // For TurboNest 2010 or ProNest 2010, they can be initialized here or set in
    // a process parameter file. In addition, particularily for NestMaster, each
    // of the parameters has a prompt line. If the // is removed from in front of
    // the specific prompt lines, NestMaster (or TurboNest or ProNest) will prompt
    // the user for that value when they output a cnc file.
    ////////////////////////////////////////////////////////////////////////////////
    //

    // The following section shows how the values are used in the Touch-n-Go sequence
    //
    // G28.1 Z($G28Z)
    // G92 Z0
    // G00 Z($SWITCHOFFSET)
    // G92 Z0
    // G00 Z($PIERCEHEIGHT)
    // G04 P($PREHEAT) Only shows up if $PREHEAT>0
    // M03
    // G04 P($PIERCEDELAY) Only shows up if $PIERCEDELAY>0
    // cutting occurs here
    // M05
    // G04 P($ENDDELAY) Only shows up if $ENDDELAY>0
    //

    IF $UNITS=INCH
    // If not prompting, these are the default inch values
    $G28Z := 3.0/25.4
    $SWITCHOFFSET:=0.054
    $PIERCEHEIGHT:=0.125
    $SAFEZ:=2.0
    ELSE
    // If not prompting, these are the default metric values
    $G28Z := 3.0
    $SWITCHOFFSET:=1.37
    $PIERCEHEIGHT:=3.2
    $SAFEZ:=50.0
    END
    // These values are the same for inch or metric
    $PREHEAT:=0.0
    $PIERCEDELAY:=0.4
    $ENDDELAY:=0.0
    // If non-zero, SCODE will come out at the top of the file after the F1 line
    $SCODE:=0
    // $TOOL is used as the T value in the M06 line. If zero, the M06 line is omitted.
    $TOOL:=0
    // CONFIGTOUCHNGO can have 3 possible values:
    // $CONFIGTOUCHNGO:=NONE Don't do Touch-N-Go
    // $CONFIGTOUCHNGO:=PART Do a Touch-N-Go only on the first profile of a part
    // $CONFIGTOUCHNGO:=ALL Do a Touch-N-Go for every profile start
    $CONFIGTOUCHNGO:=ALL
    //
    // For the next several lines, if you want to prompt the user for the individual
    // values, remove the // from in front of the line that you want prompting for.
    // If you don't want to prompt the user for a value, then leave the // in front
    // of the prompt for that value.
    //
    //$G28Z := 'NPROMPT(Enter G28.1 Z Value)
    //$SWITCHOFFSET := 'NPROMPT(Enter Switch Offset Z Value)
    //$PIERCEHEIGHT := 'NPROMPT(Enter Pierce Height)
    //$SAFEZ := 'NPROMPT(Enter Safe Z Value)
    //$PREHEAT := 'NPROMPT(Enter Preheat Time 0 for none)
    //$PIERCEDELAY := 'NPROMPT(Enter Pierce Delay 0 for none)
    //$ENDDELAY := 'NPROMPT(Enter End Delay 0 for none)
    //$SCODE := 'NPROMPT(Enter S Code 0 for none)
    //$TOOL := 'NPROMPT(Enter Tool number 0 for none)

    // 0 => Use G41/G42/G40 on lines by themselves
    // 1 => Use G41/G42 with leadin move, G40 with leadout
    // 2 => Don't use G41/G42 (perhaps the CUTON in the machine triggers cutter comp?)
    $CONFIGUSEKERFONMOVE:=2

    // 0 => G40 on an arc move is acceptable
    // 1 => Delay G40 to the next rapid if still in CW/CCW mode
    $CONFIGNOG40ONARC:=0

    // 0 => Use K value with kerf amount
    // 1 => Use D value with G41/G42
    // 2 => Don't include anything with G41/G42
    // 3 => Use Kerf value as D value (typically used with TurboNest
    $CONFIGUSEDVALUE:=2

    // 0 => Use feedrate on a line by itself
    // 1 => Use feedrate on the leadin motion line
    // 2 => Use no feedrates
    $CONFIGFEEDRATEONMOVE:=1

    // 0 => Output Feedrate with each process start
    // 1 => Suppress Feedrate if it hasn't changed
    $CONFIGSUPRESSFEEDRATE:=0

    // 0 => No G61/G64 codes
    // 1 => Include G61/G64 exact stop codes based on angle change at end of motion
    // 2 => Use G09 for exact stop check on each occurance
    $CONFIGUSEEXACTSTOPCHECK:=0

    // 0 => Start of Profile line numbers are on lines by themselves
    // 1 => Start of Profile line numbers are on the process on rapid motion line
    $CONFIGSOPLINENOLOCATION:=1

    // 0 => Include G00/G01/G02/G03 on every motion line
    // 1 => Suppress repeated G00/G01/G02/G03 codes
    $CONFIGUSEMODALMOTIONCODES:=0

    // 0 => Include X and Y on every motion line
    // 1 => Suppress duplicate X, Y codes
    // 2 => Include X and Y on all rapid motion, suppress on cutting motion
    $CONFIGUSEMODALXY:=2

    // CONFIGAHCISON can start out as 0, 1, 2, or 3
    // 0 => implies that AHC defaults at start of program to off
    // 1 => implies that AHC defaults at start of program to on
    // 2 => implies that an AHC code should be used at the start in any case
    // 3 => No AHC codes
    // In most cases, 1 or 3 are the only usable choices.
    $CONFIGAHCISON:=1

    // 0 => I, J are absolute if X, Y are absolute, otherwise incremental
    // 1 => I, J are always incremental
    $CONFIGIJALWAYSINCREMENTAL:=1

    // 0 => CUT OFF, CUT OFFUP are as normal
    // 1 => At end of exterior profiles, skeleton cuts, and Crop cuts, always use OFFUP
    $CONFIGFORCEEXTERIORTOOFFUP:=1

    // Set a Zero point. By default, use $INITPTX, $INITPTY, which is where the
    // starting point is located. ZEROPT_ allows setting a zero point separate
    // from the initial point. To start the head out in the upper left of the
    // sheet, with all dimensions in absolute from the lower left, set the init
    // point in PN to the upper left, and use $ZEROPTX:=$SHEETMINX and
    // $ZEROPTY:=$SHEETMINY
    $ZEROPTX := $INITPTX
    $ZEROPTY := $INITPTY

    $AHCISON := $CONFIGAHCISON
    {START OF FILE}
    // Uncomment the next line to include a list of all parts, quantities on the list
    //{OUTPUT PLP LIST INFO}
    {PROGRAM INIT}
    {VALIDATE PLATE}
    {OUTPUT PROFILES}
    {END OF FILE}

    [SECTION PART OF THE CFF]

    [START OF FILE]

    [PLP INFO LINE]
    // The next line might need comment characters adjusted if you're using the part list
    {LINENO :M}(PART#:{ROOT PART NAME} QTY {PART QUANTITY ON NEST})

    [ROOT PART NAME]
    // ROOT PART NAME is the part file name without path (used only in PLP INFO LINE)
    ARGUMENT=$ROOTPARTNAME
    FORMAT=%s

    [PART QUANTITY ON NEST]
    // Number of times this part occurs on this nest (used only in PLP INFO LINE)
    ARGUMENT=$PARTQUANTITYONNEST
    FORMAT=%d

    [PROGRAM INIT]
    // Next two lines are example of how to prompt for a program number
    //$PROGRAMNUMBER := 'NPROMPT(Enter Program Number)
    //P{PROGRAM NUMBER}
    {LINENO :M}(Filename: {ROOT FILE NAME})
    {LINENO :M}(Date: {DATE})
    {UNITS}
    {MODE}
    {LINENO :M}F1
    {INITIALIZE CUT PARAMETERS}
    IF $SCODE>0
    {LINENO :M}{SCODE}
    END
    {RESET PARAMETERS}

    [SCODE]
    ARGUMENT=$SCODE
    FORMAT=S%d

    [UNITS]
    // Common G codes for units are G70 or G20 for inch and G71 or G21 for metric
    IF $UNITS=INCH
    {LINENO :M}G20
    ELSE
    {LINENO :M}G21
    END

    [MODE]
    IF $MODE=ABSOLUTE
    {LINENO :M}G53 G90 G40
    //{LINENO :M}G92{INITPTX}{INITPTY}
    ELSE
    {LINENO :M}G91 G40
    END

    [QUAD ARCS]
    0

    [ROOT FILE NAME]
    ARGUMENT=$ROOTFILENAME
    FORMAT=%s

    [PROGRAM NUMBER]
    ARGUMENT=$PROGRAMNUMBER
    FORMAT=%d

    [DATE]
    ARGUMENT=$DATE
    FORMAT=%s

    [TIME]
    ARGUMENT=$TIME
    FORMAT=%s

    [MATERIAL THICKNESS]
    ARGUMENT=$MATERIALTHICKNESS * $CONVERSION
    FORMAT={Z FORMAT}

    [MATERIAL NAME]
    ARGUMENT=$MATERIALNAME
    FORMAT=%s

    [PART CLASS]
    ARGUMENT=$PART_CLASS
    FORMAT=%s

    [CNC NAME]
    ARGUMENT=$FILENAME
    FORMAT=%s

    [NEST NUMBER]
    ARGUMENT=$NESTNUMBER+1
    FORMAT=%d

    [NUMBER OF NESTS]
    ARGUMENT=$NUMBER_OF_NESTS
    FORMAT=%d

    [TIMES TO RUN]
    ARGUMENT=$CUTNUMBEROFTIMES
    FORMAT=%d

    [PRODUCTION TIME]
    ARGUMENT=$PRODUCTIONTIME
    FORMAT=%4.3f

    [SHEET X]
    ARGUMENT=$SHEETX * $CONVERSION
    FORMAT={DIMENSION DISPLAY FORMAT}

    [SHEET Y]
    ARGUMENT=$SHEETY * $CONVERSION
    FORMAT={DIMENSION DISPLAY FORMAT}

    [STEP AND REPEAT START]
    {LINENO :M}G97

    [STEP AND REPEAT END]
    {LINENO :M}G98

    [VALIDATE PLATE]
    IF $VALIDATEPLATE = TRUE
    // Note that X and Y both need to be set each at each step for incremental
    // output to work correctly.
    $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
    {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
    {LINENO :M}M30

    [LINEAR MOTION TO INIT]
    $X:=$INITPTX
    $Y:=$INITPTY
    {RAPID MOTION}

    [OUTPUT START INTERIOR PROFILE]
    // $PREKERFED variable tracks to see if a KERF LEFT or KERF RIGHT CALL is
    // made so kerf off calls can be made only if needed
    {CANCEL CURRENT OFFSET}
    {SOP LINENO 0}
    {OUTPUT TORCH SPACING}
    {ACTIVATE NEXT OFFSET}
    {PROCESS ON MOTION}
    $DOTOUCHNGO:=0
    IF $CONFIGTOUCHNGO=ALL
    $DOTOUCHNGO:=1
    END
    {PART NAME COMMENT}
    $PREKERFED:=1
    $FORCEOFFUP:=0

    [OUTPUT START EXTERIOR PROFILE]
    {CANCEL CURRENT OFFSET}
    {SOP LINENO 0}
    {OUTPUT TORCH SPACING}
    {ACTIVATE NEXT OFFSET}
    {PROCESS ON MOTION}
    $DOTOUCHNGO:=0
    IF $CONFIGTOUCHNGO=ALL
    $DOTOUCHNGO:=1
    END
    {PART NAME COMMENT}
    $PREKERFED:=1
    $FORCEOFFUP:=$CONFIGFORCEEXTERIORTOOFFUP

    [OUTPUT START OPEN PROFILE]
    {CANCEL CURRENT OFFSET}
    {SOP LINENO 0}
    {OUTPUT TORCH SPACING}
    {ACTIVATE NEXT OFFSET}
    {PROCESS ON MOTION}
    $DOTOUCHNGO:=0
    IF $CONFIGTOUCHNGO=ALL
    $DOTOUCHNGO:=1
    END
    {PART NAME COMMENT}
    $PREKERFED:=1
    $FORCEOFFUP:=$CONFIGFORCEEXTERIORTOOFFUP

    [OUTPUT START CROP]
    {CANCEL CURRENT OFFSET}
    {SOP LINENO 0}
    {OUTPUT TORCH SPACING}
    {ACTIVATE NEXT OFFSET}
    {PROCESS ON MOTION}
    $DOTOUCHNGO:=0
    IF $CONFIGTOUCHNGO=ALL
    $DOTOUCHNGO:=1
    END
    {PART NAME COMMENT}
    $PREKERFED:=1
    $FORCEOFFUP:=$CONFIGFORCEEXTERIORTOOFFUP

    [OUTPUT TORCH SPACING]
    IF {TORCH SPACING REQUIRED}
    IF $NUMTORCHES = 1 || $NUMTORCHES = 0
    (Set 1 torch.)
    {OUTPUT STOP}
    ELSE
    IF $USEAUTOTORCHSPACING = TRUE
    // Auto torch spacing commands go here.
    END
    (Set {NUMTORCHES} torches at {TORCHSPACING}{TORCHUNITS}.)
    {OUTPUT STOP}
    END
    END

    [OUTPUT END INTERIOR PROFILE]
    IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
    {KERF OFF}
    END

    [OUTPUT END EXTERIOR PROFILE]
    IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
    {KERF OFF}
    END

    [OUTPUT END OPEN PROFILE]
    IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
    {KERF OFF}
    END

    [OUTPUT END CROP]
    IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
    {KERF OFF}
    END

    [LINENO]
    MODAL_ARGUMENT=$LINENUMBER
    IF $USELINENUMBERS = EVERYLINE
    {NWORD}
    END

    [SOP LINENO 0]
    IF $USELINENUMBERS = STARTOFPROFILE && $CONFIGSOPLINENOLOCATION=0
    {NWORD}
    END

    [SOP LINENO 1]
    IF $USELINENUMBERS = STARTOFPROFILE && $CONFIGSOPLINENOLOCATION=1
    {NWORD}
    END

    [PART NAME COMMENT]
    $SAVEPARTNAME := $PARTNAME
    $SAVENUM := $PARTSEQUENCENUMBER
    IF $SAVENUM != $LASTSAVENUM || $SAVEPARTNAME != $LASTSAVEPARTNAME
    IF $CONFIGTOUCHNGO=PART
    $DOTOUCHNGO:=1
    END
    IF $PARTNAMEASCOMMENT = TRUE
    IF $PARTSEQUENCENUMBER > 0
    (Seq {PART SEQUENCE NUMBER} - {PARTNAME})
    ELSE
    ({PARTNAME})
    END
    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 $PROCESS != $LASTPROCESS
    IF $LASTPROCESS=SCRIBE1
    //{LINENO :M}M70
    END
    END

    [CANCEL CURRENT OFFSET]
    IF $PROCESS != $NEXTPROCESS
    IF $PROCESS=SCRIBE1
    //{LINENO :M}M70
    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=CUT1 || $PROCESS=PUNCH1) && $TOOL>0
    {LINENO :M}M06 T{TOOL}
    {SAFE Z}
    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=CUT1 || $NEXTPROCESS=PUNCH1) && $TOOL>0
    {LINENO :M}M06 T{TOOL}
    {SAFE Z}
    END
    END

    [PROCESS ON MOTION]
    {SOP LINENO 1 :M}{RAPID MOTION}

    [RAPID MOTION]
    $MOTIONTYPE:=0
    IF $CONFIGUSEMODALXY=2
    {LINENO :M}{KERF MOVE :M}{RAPID MOTION CODE :M}{CURRENTX}{CURRENTY}
    ELSE
    {LINENO :M}{KERF MOVE :M}{RAPID MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
    END

    [PRE MOTION]
    // Calls at the start of the MOTION lines
    // This keeps the MOTION sections not quite as wide
    {EXACT STOP :M}{KERF MOVE :M}

    [POST MOTION]
    // Calls at the end of the MOTION lines
    {ADD FEEDRATE :M}

    [LINEAR MOTION]
    $MOTIONTYPE:=1
    {FEEDRATE LINE}
    IF $CONFIGUSEKERFONMOVE=0
    {KERF DIRECTION :M}
    ELSE
    IF $INLEADOUT=TRUE && $NEXTPROFILEMOTION=NONE
    $KERFDIR:=OFF
    END
    END
    {LINENO :M}{PRE MOTION :M}{LINEAR MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{POST MOTION :M}

    [CLOCKWISE MOTION]
    $MOTIONTYPE:=2
    {CHECK FOR ARC TOO SMALL}
    IF $ARCTOOSMALL=1
    {LINEAR MOTION}
    ELSE
    {FEEDRATE LINE}
    IF $CONFIGUSEKERFONMOVE=0
    {KERF DIRECTION :M}
    ELSE
    IF $INLEADOUT=TRUE && $NEXTPROFILEMOTION=NONE && $CONFIGNOG40ONARC=0
    $KERFDIR:=OFF
    END
    END
    {LINENO :M}{PRE MOTION :M}{CLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}{POST MOTION :M}
    END

    [COUNTERCLOCKWISE MOTION]
    $MOTIONTYPE:=3
    {CHECK FOR ARC TOO SMALL}
    IF $ARCTOOSMALL=1
    {LINEAR MOTION}
    ELSE
    {FEEDRATE LINE}
    IF $CONFIGUSEKERFONMOVE=0
    {KERF DIRECTION :M}
    ELSE
    IF $INLEADOUT=TRUE && $NEXTPROFILEMOTION=NONE && $CONFIGNOG40ONARC=0
    $KERFDIR:=OFF
    END
    END
    {LINENO :M}{PRE MOTION :M}{COUNTERCLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}{POST MOTION :M}
    END

    [EXACT STOP]
    // This section decides if the machine should maintain feedrate at the end of the motion
    // or if it should come to a stop. The degree of angle change determines this
    IF $CONFIGUSEEXACTSTOPCHECK=0
    $EXACTSTOPCHECK:=2
    END
    IF $NEXTPROFILEMOTION=NONE
    $ANGLECHANGE:=0
    ELSE
    $ANGLECHANGE:='ABS($ENDTANGENTANGLE-$NEXTSTARTTANGENTANGLE)
    END
    IF $ANGLECHANGE>180
    $ANGLECHANGE:='ABS($ANGLECHANGE-360.0)
    END
    IF $CONFIGUSEEXACTSTOPCHECK=2
    $EXACTSTOPCHECK:=0
    END
    // The number in the next line determines when an EXACT STOP needs to be inserted
    // and when it should maintain feedrate
    IF $ANGLECHANGE>=$EXACTSTOPANGLE
    // Use exact stop check mode
    IF $EXACTSTOPCHECK=0
    IF $CONFIGUSEEXACTSTOPCHECK=2
    // One-shot exact stop
    G09
    ELSE
    // Modal exact stop
    G64
    END
    $EXACTSTOPCHECK:=1
    END
    ELSE
    // Continuous (cut) mode
    IF $EXACTSTOPCHECK=1
    G61
    $EXACTSTOPCHECK:=0
    END
    END

    [RAPID MOTION CODE]
    IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=0)
    G00
    $CURRENTMOTION:=0
    END

    [LINEAR MOTION CODE]
    IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=1)
    G01
    $CURRENTMOTION:=1
    END

    [CLOCKWISE MOTION CODE]
    IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=2)
    IF {NORMAL AXIS DIRECTION}
    G02
    ELSE
    G03
    END
    $CURRENTMOTION:=2
    END

    [COUNTERCLOCKWISE MOTION CODE]
    IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=3)
    IF {NORMAL AXIS DIRECTION}
    G03
    ELSE
    G02
    END
    $CURRENTMOTION:=3
    END

    [INIT PT MOTION CODE]
    {RAPID MOTION CODE}

    [ADD FEEDRATE]
    IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE && $CONFIGFEEDRATEONMOVE=1
    {FEEDRATE :M}
    $FEEDRATE:=$FEEDRATE
    END

    [FEEDRATE LINE]
    IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE && $CONFIGFEEDRATEONMOVE=0
    {LINENO :M}{FEEDRATE :M}
    $FEEDRATE:=$FEEDRATE
    END

    [ADD KERF VALUE]
    IF $KERF > 0.0 && $KERF != $LASTKERF
    {KERF VALUE}
    $KERF:=$KERF
    END

    [OUTPUT KERF LEFT]
    // Any call from Pronest to this or the next section says that this part was not
    // prekerfed. If not prekerfed, then we need to cancel the Kerf at the end of
    // the cut.
    $PREKERFED:=0

    [OUTPUT KERF RIGHT]
    $PREKERFED:=0

    [KERF LEFT]
    IF $CONFIGUSEKERFONMOVE<2
    IF ($KERF <= 0 && $CONFIGUSEDVALUE=0) || $CONFIGUSEDVALUE=2
    IF $CONFIGUSEKERFONMOVE=0
    {LINENO :M}G41
    ELSE
    G41
    END
    ELSE
    IF $CONFIGUSEKERFONMOVE=0
    {LINENO :M}G41{KERF VALUE :M}
    ELSE
    G41{KERF VALUE :M}
    END
    $KERF:=$KERF
    END
    END
    $KERFSTATUS:=41

    [KERF RIGHT]
    IF $CONFIGUSEKERFONMOVE<2
    IF ($KERF <= 0 && $CONFIGUSEDVALUE=0) || $CONFIGUSEDVALUE=2
    IF $CONFIGUSEKERFONMOVE=0
    {LINENO :M}G42
    ELSE
    G42
    END
    ELSE
    IF $CONFIGUSEKERFONMOVE=0
    {LINENO :M}G42{KERF VALUE :M}
    ELSE
    G42{KERF VALUE :M}
    $KERF:=$KERF
    END
    END
    $KERFSTATUS:=42

    [KERF OFF]
    IF $CONFIGUSEKERFONMOVE<2
    IF $KERFSTATUS!=40
    IF $CONFIGUSEKERFONMOVE=0
    {LINENO :M}G40
    ELSE
    G40
    END
    END
    END
    $KERFSTATUS:=40

    [KERF MOVE]
    {KERF DIRECTION}

    [KERF DIRECTION]
    IF ($PROCESS != SCRIBE1) && ($PROCESS != SCRIBE2) && ($PREKERFED=0)
    IF $KERFDIR = LEFT && $KERFSTATUS!=41
    {KERF LEFT}
    END
    IF $KERFDIR = RIGHT && $KERFSTATUS!=42
    {KERF RIGHT}
    END
    IF $KERFDIR = OFF && $KERFSTATUS!=40
    {KERF OFF}
    END
    END

    [OUTPUT STOP]
    {LINENO :M}M00

    [OUTPUT AHCON]
    {AHCON}

    [OUTPUT AHCOFF]
    {AHCOFF}

    [AHCON CODE]
    {LINENO :M}M51

    [AHCOFF CODE]
    {LINENO :M}M50

    [AHCON]
    IF ($AHCISON = 0 || $AHCISON = 2) && $DISABLEAHC=0
    {AHCON CODE}
    $AHCISON:=1
    END

    [FORCE AHCON]
    IF ($AHCISON = 0 || $AHCISON = 2)
    {AHCON CODE}
    $AHCISON:=1
    END

    [AHCOFF]
    IF ($AHCISON = 1 || $AHCISON = 2)
    {AHCOFF CODE}
    $AHCISON:=0
    END

    [CHECK AHC]
    // If Pronest thinks it's supposed to be on ($AHC=ON), and it's not, and we're
    // not disabling it through the Process Parameter file, turn it on
    IF $AHC=ON && $AHCISON=0 && $DISABLEAHC=0
    {AHCON}
    END
    // If Pronest thinks it's supposed to be off ($AHC=OFF), and it's on, turn it off
    IF $AHC=OFF && $AHCISON!=0 || $DISABLEAHC=1
    {AHCOFF}
    END

    [START LEADIN]
    // This section is here as a place holder and so the name is already in place

    [END LEADIN]
    // This section is here as a place holder and so the name is already in place

    [START LEADOUT]
    // This section is here as a place holder and so the name is already in place

    [END LEADOUT]
    // This section is here as a place holder and so the name is already in place

    [START TAB]
    $INTAB := 1

    [END TAB]
    $INTAB := 0
    {END LEADIN}

    [CUT SUB]
    // This section may be useful if an integer value is used to initiate cutting.
    // This is often an M98P___ call to a subroutine already stored in the machine
    ARGUMENT=$CUTSUB
    FORMAT=M98P%d

    [CUT CONDITION]
    // This section may be useful if a cutting condition needs to be applied
    // separately from the CUT SUB value.
    ARGUMENT=$CUTCONDITION
    FORMAT=E%d

    [TOUCH AND GO]
    IF $DOTOUCHNGO=1
    {PIERCE HEIGHT}
    {G28 Z}
    {LINENO :M}G92 Z0.0
    {SWITCH OFFSET}
    {LINENO :M}G92 Z0.0
    END
    {PIERCE HEIGHT}

    [PIERCE HEIGHT]
    ARGUMENT=$PIERCEHEIGHT
    FORMAT={LINENO :M}{RAPID MOTION CODE :M} Z{Z FORMAT}

    [G28 Z]
    ARGUMENT=$G28Z
    FORMAT={LINENO :M}G28.1 Z{Z FORMAT}

    [SWITCH OFFSET]
    ARGUMENT=$SWITCHOFFSET
    FORMAT={LINENO :M}{RAPID MOTION CODE :M} Z{Z FORMAT}

    [OUTPUT CUT1 ON]
    // CUT1 ON codes go in this section.
    {FEEDRATE LINE}
    {CHECK AHC}
    IF $CONFIGUSEKERFONMOVE=0
    {KERF DIRECTION :M}
    END
    {TOUCH AND GO}
    {OUTPUT PREHEAT}
    {LINENO :M}M03
    {OUTPUT PIERCEDELAY}

    [OUTPUT CUT1 OFF]
    IF $FORCEOFFUP=0
    // Turn off the cutting device, but leave the head at cutting height
    {CHECK AHC}
    {LINENO :M}M05
    {OUTPUT ENDDELAY}
    // Should we really call Safe Z here?
    {SAFE Z}
    IF $PREKERFED=0 && $INTAB=0 && ($CONFIGNOG40ONARC=0 || $CURRENTMOTION<2)
    {KERF OFF}
    END
    $KERF:=0.0
    {FORCE AHCON}
    IF $CONFIGSUPRESSFEEDRATE=0
    $FEEDRATE:=0.0
    END
    ELSE
    {OUTPUT CUT1 OFFUP}
    END

    [OUTPUT CUT1 OFFUP]
    // Turn off the cutting device, and raise the head to travel height
    {CHECK AHC}
    {LINENO :M}M05
    {OUTPUT ENDDELAY}
    {SAFE Z}
    IF $PREKERFED=0 && $INTAB=0 && ($CONFIGNOG40ONARC=0 || $CURRENTMOTION<2)
    {KERF OFF}
    END
    $KERF:=0.0
    {FORCE AHCON}
    IF $CONFIGSUPRESSFEEDRATE=0
    $FEEDRATE:=0.0
    END

    [SAFE Z]
    ARGUMENT=$SAFEZ
    FORMAT={LINENO :M}{RAPID MOTION CODE :M} Z{Z FORMAT}

    [OUTPUT SCRIBE1 ON]
    // Scribing or Marking commands go in this section
    $PREKERFED:=1
    {CANCEL PREVIOUS OFFSET}
    {SOP LINENO 0}
    IF $PARTNAMEASCOMMENT = TRUE
    {PART NAME COMMENT}
    END
    {ACTIVATE CURRENT OFFSET}
    {PROCESS ON MOTION}
    {LINENO :M}M08

    [OUTPUT SCRIBE1 OFF]
    {LINENO :M}M07
    $KERF:=0.0
    IF $CONFIGSUPRESSFEEDRATE=0
    $FEEDRATE:=0.0
    END

    [OUTPUT PUNCH1 ON]
    // Depending on customer choice, this could be a piercing routine or a point
    // marking routine. Or duplicate the section and make both.
    $PREKERFED:=1
    {CANCEL PREVIOUS OFFSET}
    {SOP LINENO 0}
    IF $PARTNAMEASCOMMENT = TRUE
    {PART NAME COMMENT}
    END
    {ACTIVATE CURRENT OFFSET}
    {PROCESS ON MOTION}
    {TOUCH AND GO}
    {OUTPUT PREHEAT}
    {LINENO :M}M03
    {OUTPUT PIERCEDELAY}
    {LINENO :M}M05
    {OUTPUT ENDDELAY}
    {SAFE Z}
    $KERF:=0.0
    IF $CONFIGSUPRESSFEEDRATE=0
    $FEEDRATE:=0.0
    END

    [COMMENT FORMAT]
    (%s)

    [FORMAT PART OF THE CFF]


    [INITPTX]
    ARGUMENT=($INITPTX - $ZEROPTX) * $CONVERSION
    FORMAT=X{XY FORMAT}

    [INITPTY]
    ARGUMENT=($INITPTY - $ZEROPTY) * $CONVERSION
    FORMAT=Y{XY FORMAT}

    [CONVERSION]
    IF $UNITS=INCH
    1.00
    ELSE
    25.40
    END

    [NWORD]
    // Use N%d for no leading zeros
    // Use N%03d for 3 digit N numbers
    // Use N%04d for 4 digit N numbers
    FORMAT=N%d{SP}
    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 $UNITS=INCH
    IF $PRECISION=NORMAL
    %1.3lf
    ELSE
    %1.4lf
    END
    ELSE
    IF $PRECISION=NORMAL
    %1.2lf
    ELSE
    %1.3lf
    END
    END

    [IJ FORMAT]
    IF $UNITS=INCH
    IF $PRECISION=NORMAL
    %1.3lf
    ELSE
    %1.4lf
    END
    ELSE
    IF $PRECISION=NORMAL
    %1.2lf
    ELSE
    %1.3lf
    END
    END

    [Z FORMAT]
    IF $UNITS=INCH
    IF $PRECISION=NORMAL
    %1.3lf
    ELSE
    %1.4lf
    END
    ELSE
    IF $PRECISION=NORMAL
    %1.2lf
    ELSE
    %1.3lf
    END
    END

    [DIMENSION DISPLAY FORMAT]
    IF $UNITS=INCH
    IF $PRECISION=NORMAL
    %1.3lf
    ELSE
    %1.4lf
    END
    ELSE
    IF $PRECISION=NORMAL
    %1.2lf
    ELSE
    %1.3lf
    END
    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]
    1

    [TOOL]
    ARGUMENT=$TOOL
    FORMAT=%d

    [CURRENTX]
    IF $CONFIGUSEMODALXY>0
    MODAL_ARGUMENT=$X
    END
    IF $MODE=ABSOLUTE
    ARGUMENT=($X - $ZEROPTX) * $CONVERSION * $XYIJDECIMALSHIFT
    ELSE
    ARGUMENT=($X - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT
    END
    FORMAT=X{XY FORMAT}

    [CURRENTY]
    IF $CONFIGUSEMODALXY>0
    MODAL_ARGUMENT=$Y
    END
    IF $MODE=ABSOLUTE
    ARGUMENT=($Y - $ZEROPTY) * $CONVERSION * $XYIJDECIMALSHIFT
    ELSE
    ARGUMENT=($Y - $LASTY) * $CONVERSION * $XYIJDECIMALSHIFT
    END
    FORMAT=Y{XY FORMAT}

    [CURRENTI]
    IF $MODE=ABSOLUTE && $CONFIGIJALWAYSINCREMENTAL=0
    ARGUMENT=($I - $ZEROPTX) * $CONVERSION * $XYIJDECIMALSHIFT
    ELSE
    ARGUMENT=($I - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT
    END
    FORMAT=I{IJ FORMAT}

    [CURRENTJ]
    IF $MODE=ABSOLUTE && $CONFIGIJALWAYSINCREMENTAL=0
    ARGUMENT=($J - $ZEROPTY) * $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]
    IF $CONFIGUSEDVALUE=1
    // D value as kerf
    ARGUMENT=$DVALUE
    FORMAT=D%02d
    ELSE
    IF $CONFIGUSEDVALUE=0
    // Kerf as actual kerf (typically with a leading K)
    MODAL_ARGUMENT=$KERF
    ARGUMENT=$KERF * $CONVERSION * $KERFDECIMALSHIFT
    FORMAT=K{XY FORMAT}
    ELSE
    IF $CONFIGUSEDVALUE=3
    // For TurboNest CFFs that want a D register but can't use a Process
    // Parameter column, use the Kerf column as the D register number
    ARGUMENT=$KERF * $CONVERSION
    FORMAT=D%02.0lf
    END
    END
    END

    [OUTPUT DWELL]
    ARGUMENT=$DWELL * $DWELLDECIMALSHIFT
    // Dwell times are usually specified with an F, X, or P value
    FORMAT={LINENO :M}G04F{DWELL FORMAT}

    [OUTPUT PREHEAT]
    IF $PREHEAT>0
    ARGUMENT=$PREHEAT * $DWELLDECIMALSHIFT
    FORMAT={LINENO :M}G04 P{DWELL FORMAT}
    END

    [OUTPUT PIERCEDELAY]
    IF $PIERCEDELAY>0
    ARGUMENT=$PIERCEDELAY * $DWELLDECIMALSHIFT
    FORMAT={LINENO :M}G04 P{DWELL FORMAT}
    END

    [OUTPUT ENDDELAY]
    IF $ENDDELAY>0
    ARGUMENT=$ENDDELAY * $DWELLDECIMALSHIFT
    FORMAT={LINENO :M}G04 P{DWELL FORMAT}
    END

    [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

    [NORMAL AXIS DIRECTION]
    (($AXIS_SWAP_TYPE=NONE) || ($AXIS_SWAP_TYPE=SWAP90) || ($AXIS_SWAP_TYPE=SWAP180) || ($AXIS_SWAP_TYPE=SWAP270))

    [INSIDE CW ARC TOO SMALL FOR KERF]
    ($CONFIGUSEDVALUE<3 && ($MOTIONTYPE=2 && $KERFDIR=RIGHT && $RADIUS<$KERF*0.5))

    [INSIDE CCW ARC TOO SMALL FOR KERF]
    ($CONFIGUSEDVALUE<3 && ($MOTIONTYPE=3 && $KERFDIR=LEFT && $RADIUS<$KERF*0.5))

    [ARC TOO LINEAR]
    ({CHORD LENGTH}<(($RADIUS^2-($RADIUS-0.002)^2)^0.5)*2 && $RADIUS>3 && $ARCANGLE<10)

    [ARC RADIUS TOO SMALL]
    ($RADIUS < 0.008000 || ({CHORD LENGTH} < 0.00200 && $ARCANGLE<10))

    [CHECK FOR ARC TOO SMALL]
    $ARCTOOSMALL:=0
    IF {INSIDE CW ARC TOO SMALL FOR KERF}
    $ARCTOOSMALL:=1
    END
    IF {INSIDE CCW ARC TOO SMALL FOR KERF}
    $ARCTOOSMALL:=1
    END
    IF {ARC TOO LINEAR}
    $ARCTOOSMALL:=1
    END
    IF {ARC RADIUS TOO SMALL}
    $ARCTOOSMALL:=1
    END

    [RAPID INIT MOTION ALLOWED]
    (($X - $INITPTX)^2 + ($Y - $INITPTY)^2)^0.5 > 0.0100 && $PROCESSONSTATE = FALSE

    [ARC RADIUS]
    (($I - $LASTX)^2 + ($J - $LASTY)^2)^0.5

    [CHORD LENGTH]
    (($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5

    [CNC TOKEN DEBUG]
    // See FogBugz #2923 for details
    0

    [SP]
    ARGUMENT=$SPACE
    FORMAT=%c

    [CHARACTER REPLACE TABLE]
    (|_
    )|_

    [CFFDIR]
    IF $CFFDIR=none
    $CFFDIR:='SUBSTRING($CFFNAME,'RANGE(0,'TEXTLEN($CF FNAME)-'TEXTLEN($ROOTCFFNAME)-6))
    END
    ARGUMENT=$CFFDIR
    FORMAT=%s
    // As of the 8.3 release version, the CFFDIR variable is optional in the user
    // defined variables. In all prior release versions, it is required.

    [ROOT CFF NAME]
    ARGUMENT=$ROOTCFFNAME
    FORMAT=%s

    [POST PROCESSING]
    // Uncomment if an executable is needed
    //'EXECUTE "{CFFDIR}\{ROOT CFF NAME}.exe" "{CNC NAME}"

    [USER DEFINED VARIABLES]
    SAVEPARTNAME|STRING|0
    SAVENUM|INTEGER|0
    DX|DOUBLE|0.0
    DY|DOUBLE|0.0
    EXACTSTOPCHECK|INTEGER|0
    ANGLECHANGE|DOUBLE|0.0
    KERFSTATUS|INTEGER|0
    PREKERFED|INTEGER|0
    AHCISON|INTEGER|3
    AHC|STRING|ON
    SPACE|INTEGER|32
    CONFIGTOUCHNGO|STRING|ALL
    CONFIGUSEDVALUE|INTEGER|0
    CONFIGUSEKERFONMOVE|INTEGER|0
    CONFIGNOG40ONARC|INTEGER|0
    CONFIGFEEDRATEONMOVE|INTEGER|0
    CONFIGSUPRESSFEEDRATE|INTEGER|0
    CONFIGUSEEXACTSTOPCHECK|INTEGER|0
    CONFIGUSEMODALMOTIONCODES|INTEGER|0
    CONFIGUSEMODALXY|INTEGER|0
    CONFIGAHCISON|INTEGER|0
    CONFIGIJALWAYSINCREMENTAL|INTEGER|1
    CONFIGSOPLINENOLOCATION|INTEGER|0
    CONFIGFORCEEXTERIORTOOFFUP|INTEGER|1
    FORCEOFFUP|INTEGER|0
    ZEROPTX|DOUBLE|0.0
    ZEROPTY|DOUBLE|0.0
    CFFDIR|STRING|none
    CURRENTMOTION|INTEGER|-1
    MOTIONTYPE|INTEGER|-1
    INTAB|INTEGER|0
    ARCTOOSMALL|INTEGER|0
    DOTOUCHNGO|INTEGER|1
    PossibleProcParamsStartHere|INTEGER|0
    CUTSUB|INTEGER|0
    CUTCONDITION|INTEGER|0
    ProcParamColsStartHere|INTEGER|0
    EXACTSTOPANGLE|DOUBLE|45.0
    FEEDRATE|DOUBLE|0.0
    DVALUE|INTEGER|0
    DISABLEAHC|INTEGER|0
    KERF|DOUBLE|0.0
    DWELL|DOUBLE|0.0
    PIERCEHEIGHT|DOUBLE|0.0
    SWITCHOFFSET|DOUBLE|0.054
    G28Z|DOUBLE|0.0
    SAFEZ|DOUBLE|2.0
    PREHEAT|DOUBLE|0.0
    PIERCEDELAY|DOUBLE|0.4
    ENDDELAY|DOUBLE|0.0
    TOOL|INTEGER|7
    SCODE|INTEGER|500

  8. #8
    Join Date
    Oct 2010
    Posts
    0

    Pronest Mach3 postprocessor

    Can anyone help me out to make g code output from pronest for mach3 plasma?

  9. #9
    Join Date
    Nov 2010
    Posts
    24
    Hi there is a way to turn off the (touch and go)?? for exaple if I have an capacitive sensor?

  10. #10
    Join Date
    Jul 2007
    Posts
    11

    'Mach with mtc pronest'

    Yes, this is possible.

  11. #11
    Join Date
    Nov 2010
    Posts
    24
    I found it!
    Attached Thumbnails Attached Thumbnails touchandgo.JPG  

  12. #12
    Join Date
    Aug 2011
    Posts
    0

    Plasma machine CFF file change

    Hello guys,
    I have a question for you.
    I'm using Pronest 8 to generate a cnc code. I am using the default plasma machine. The code I got does not match the code that our plasma cutter understands. How can I customize the cff file to get the code that I need?

    I need X and Y coordinate in every line, and G01 or G00 as well

    This is what I get

    %
    N1G70
    N2G91
    N3G00X0.404Y-0.593
    (Seq 1 - roof.dxf)
    N4G41
    N5M20
    N6G01X0.393
    N7X73.92
    N8Y-17.875
    N9X-73.92
    N10Y17.875
    N11Y0.196
    N12M21
    N13G40
    M03
    %

    This is what I need

    %
    N1G70
    N2G91
    N3G00X0.404Y-0.593
    (Seq 1 - roof.dxf)
    N4G41
    N5M20
    N6G01X0.393Y+0
    N7XG0173.92Y+0
    N8G01X+0Y-17.875
    N9G01X-73.92Y+0
    N10G01X+0Y17.875
    N11G01X+0Y0.196
    N12M21
    N13G40
    M03
    %

    I'd appreciate any suggestion. Thanks

  13. #13
    Join Date
    Sep 2010
    Posts
    0
    Hi All do you have any information about using pronest for software flash cut
    i fed up from all these post processors that doesnt match my software

  14. #14
    Join Date
    Nov 2010
    Posts
    11
    Not necessarily speaking from a milling standpoint, but we use it all the time for our water jet applications (don't mill any production jobs our Haas's are just used for mold work so not any nesting involved). At the initial purchase about 2 years ago now it was hard to swallow the price. In hindsight much like mastercam it was well worth it.

    My only complaint with MTC and the other software companies is the ongoing update fees (not that we subscribe to any of them.). Yes you get the upgrades when you do it and I don't at all mind that aspect of it, but for the bug fixes you have to be subscribed to, really? Wish I could send my customers parts with bugs and if they didn't pay me an ongoing fee of about 10% of the total job cost yearly I wouldn't have to care about a rejection. (Well can't say I wish that because I like standing behind what we make, but I think everyone else in this situation gets my point.)

  15. #15
    Join Date
    Jan 2008
    Posts
    66
    We use ProNest on a Tanaka laser and 4 Flow waterjets. Overall its good, and the nesting is great.

    MTC has provided and tailored the posts to suit our machines. My only complaint is that post and UI are pretty non-intuitive and seem unnecessarily complex. I do the quoting/programming, so most of my concern regards accurate quoting (i.e. accurate production-time calculations). ProNest is useless for Flow quoting since Flow's quoting algorithm (i.e. production-time calculation) is not divulged.

  16. #16
    Join Date
    Sep 2010
    Posts
    0
    Dear Friends
    I have pronest 2008 and the cutting software Flash cut controller, the problem that i dont have the post processor of the flash cut what i need if any body have the flash cut post processor, or could create a post processor for it.
    Example:
    when i cut a square on flash cut i have the NC file like this:

    (File created using flashCut CNC DXF Import)
    (Import File: 0.dxf)
    (Import Date: 1/12/2012)

    N10 G00 X0.27 Y1.45
    N20 M3 ( means start sequence)
    N30 G04 X2.0
    N40 M7 ( Plasma On)
    N50 G04 X0.1
    N60 G01 X100.27 Y1.45 F5000.00
    N70 G01 X100.27 Y101.45
    N80 G01 X0.27 Y101.45
    N90 G01 X0.27 Y1.45
    N100 M9 (plasma Off)
    N110 M5 (Stop sequence)
    N120 G04 X1

    So If anyone can help me to have this g codes from pronest i will be very great full
    my email is ([email protected])

  17. #17
    Join Date
    Oct 2006
    Posts
    8
    you need ? I have for Turbonest2010

    Ahmed
    [email protected]

  18. #18
    Join Date
    Oct 2011
    Posts
    5
    Well, using Pronest 8, but cant get the kerf compensation to work, any combination with $configuserkerfonmove and $configusedvalue wont do the trick

    Any ideas what am i doing wrong? Similar problems?

    Thanks

  19. #19
    Join Date
    Nov 2010
    Posts
    24

    Smile

    Quote Originally Posted by hayaome View Post
    Well, using Pronest 8, but cant get the kerf compensation to work, any combination with $configuserkerfonmove and $configusedvalue wont do the trick

    Any ideas what am i doing wrong? Similar problems?

    Thanks
    This works with for me:
    Attached Thumbnails Attached Thumbnails 001.JPG   002.JPG  

  20. #20
    Join Date
    Oct 2011
    Posts
    5
    Thanks! I'll try it on monday right away Guess it was staring right at me...

    Best regards

Page 1 of 2 12

Similar Threads

  1. Need post for Pronest and Torchmate
    By SpeedFreak039A in forum Post Processor Files
    Replies: 3
    Last Post: 12-16-2015, 01:31 PM
  2. SheetCam or MTC pronest 1999?
    By jason_alex in forum SheetCam
    Replies: 2
    Last Post: 01-05-2014, 07:38 PM
  3. MTC Pronest and mach 3
    By matttargett4 in forum Waterjet General Topics
    Replies: 2
    Last Post: 01-06-2013, 10:16 PM
  4. Pronest problem
    By Peter Tsai in forum CNC Plasma / Oxy Fuel Cutting Machines
    Replies: 0
    Last Post: 12-22-2012, 05:39 AM
  5. Pronest post processor
    By SpeedFreak039A in forum Torchmate
    Replies: 2
    Last Post: 02-22-2012, 02:38 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •