(此后处理是本人改好的,适用于零件加工,用了好久,没有问题!现呈上供网友共享!因PST文件不能上传,故改为文本文件上传,下载后打开另存为PST文件就可以用了!本段注释可删除)
# Post Name          : MPFAN
# Product            : MILL
# Machine Name        : GENERIC FANUC
# Control Name        : GENERIC FANUC
# Description        : GENERIC FANUC MILL POST
# Associated Post    : NONE
# Mill/Turn          : NO
# 4-axis/Axis subs.  : YES
# 5-axis              : NO
# Subprograms        : YES
# Executable          : MP v9.0
#
# WARNING: THIS POST IS GENERIC AND IS INTENDED FOR MODIFICATION TO
# THE MACHINE TOOL REQUIREMENTS AND PERSONAL PREFERENCE.
#
# --------------------------------------------------------------------------
# Revision log:
# --------------------------------------------------------------------------
# Programmers Note:
# CNC 01/12/01  -  Initial post update for V8.1, grt
# CNC 07/02/01  -  Add cantext to cancel drill and tool retract, jph
# CNC 01/09/02  -  Initial post update for V9.0, rjm
#郑元畅李多海
# --------------------------------------------------------------------------
# Features:   
# --------------------------------------------------------------------------
# This post supports Generic Fanuc code output for 3 and 4 axis milling.
# It is designed to support the features of Mastercam Mill V8.
#
# Following Misc. Integers are used:
#
# mi1 - Work coordinate system
#        0 = Reference return is generated and G92 with the
#            X, Y and Z home positions at file head.
#        1 = Reference return is generated and G92 with the
#            X, Y and Z home positions at each tool.
#        2 = WCS of G54, based on Mastercam settings.
#
# mi2 - Absolute or Incremental positioning at top level
#        0 = absolute
#        1 = incremental
#
# mi3 - Select G28 or G30 reference point return.
#        0 = G28, 1 = G30
#
#Canned text:
#    Entering cantext on a contour point from within Mastercam allows the
#    following functions to enable/disable.
#    Cantext value:
#    1 = Stop = output the "M00" stop code
#    2 = Ostop =  output the "M01" optional stop code
#    3 = Bld on = turn on block delete codes in NC lines
#    4 = bLd off = turn off block delete codes in NC lines
#
#Milling toolpaths (4 axis)
#Layout:
# The term "Reference View" refers to the coordinate system associated
# with the Top view (Alt-F9, the upper gnomon of the three displayed).
# Create the part drawing with the axis of rotation about the axis
# of the "Reference View" according to the setting you entered for
# 'vmc' (vertical or horizontal) and 'rot_on_x' (machine relative
hear me cry# axis of rotation).
# vmc = 1 (vertical machine) uses the top toolplane as the base machine
# view.
# vmc = 0 (horizontal machine) uses the front toolplane as the base machine
# view.
# Relative to the machine matrix -
李佳琦求生欲
# Ro
tation zero position is on the Z axis for rotation on X axis.
# Rotation zero position is on the Z axis for rotation on Y axis.
# Rotation zero position is on the X axis for rotation on Z axis.
# The machine view rotated about the selected axis as a "single axis
# rotation" are the only legal views for 4 axis milling.  Rotation
# direction around the part is positive in the CCW direction when
# viewed from the plus direction of the rotating axis.  Set the variable
# 'rot_ccw_pos' to indicate the signed direction.  Always set the work
# origin at the center of rotation.
#
#Toolplane Positioning:
# Create the Cplane and Tplane as the rotation of the machine view about
# the selected axis of rotation.  The toolplane is used to calculate
# the position of the rotary axis.  This is the default setting.
#
#3 Axis Rotary (Polar)
# Polar positioning is offered in Mastercam 3 axis toolpaths through the
# rotary axis options dialog.  The selected toolpath is converted to angle
# and radius position.  The axis of rotation is forced to zero.
#
#Axis substitution:
# Use the Rotary axis substitution by drawing the geometry flattened
# from the cylinder.  The rotary axis button must be active for axis
# substitution information to be output to the NCI file. The radius of
# the rotary diameter is added to all the Z positions at output. 
#
#Simultaneous 4 Axis (11 gcode):
# Full 4 axis toolpaths can be generated from various toolpaths under the
# 'multi-axis' selection (i.e. Rotary 4 axis). All 5 axis paths are
# converted to 4 axis paths where only the angle about the rotation axis
# is resolved.
#
#Drill:
# All drill methods are supported in the post.  See Simultaneous 4 Axis.
#
#Additional Notes:
# 1) Disable 4 axis by setting the numbered question 164. to 'n'.
# 2) G54 calls are generated where the work offset entry of 0 = G54,
#    1 = G55, etc.
# 3) Metric is applied from the NCI met_tool variable.
# 4) Incremental mode calculates motion from home position at toolchanges.
#    The home position is used to define the last position of the tool
#    for all toolchanges. 
# 5) The variable 'absinc' is now pre-defined, set mi2 (Misc. Integer) for
#    the 'top level' absolute/incremental program output.  Subprograms are
#    updated through the Mastercam dialog settings for sub-programs.
# 6) Always avoid machining to the center of rotation with rotary axis!
# 7) Transform subprograms are intended for use with G54.. workshifts.
#
# --------------------------------------------------------------------------
# Debugging and Factory Set Program Switches 
# --------------------------------------------------------------------------
m_one      : -1    #Define constant
zero        : 0    #Define constant
one        : 1    #Define constant
two        : 2    #Define constant
three      : 3    #Define constant
four        : 4    #Define constant
five        : 5    #Define constant
c9k        :
9999  #Define constant
fastmode    : yes  #Enable Quick Post Processing, (set to no for debug)
bug1        : 2    #0=No display, 1=Generic list box, 2=Editor
bug2        : 40    #Append postline labels, non-zero is column position?
bug3        : 0    #Append whatline no. to each NC line?
bug4        : 1    #Append NCI line no. to each NC line?
whatno      : yes  #Do not perform whatline branches? (leave as yes)
get_1004    : 1    #Find gcode 1004 with getnextop?
rpd_typ_v7  : 0    #Use Version 7 style contour flags/processing?
strtool_v7  : 2    #Use Version 7+ toolname?
tlchng_aft  : 2    #Delay call to toolchange until move line
cant_tlchng : 1    #Ignore cantext entry on move with tlchng_aft
newglobal  : 1    #Error checking for global variables
getnextop  : 0    #Build the next variable table
# --------------------------------------------------------------------------
# General Output Settings
# --------------------------------------------------------------------------
sub_level  : 1    #Enable automatic subprogram support
breakarcs  : 0      #Break arcs, 0 = no, 1 = quadrants, 2 = 180deg. max arcs
arcoutput  : 0    #0 = IJK, 1 = R no sign, 2 = R signed neg. over 180
skp_lead_flgs : 1  #Do NOT use v9 style contour flags
arctype    : 2    #Arc center 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc.
do_full_arc : 0    #Allow full circle output? 0=no, 1=no
helix_arc  : 0    #Support helix arc output, 0=no, 1=all planes, 2=XY plane only
arccheck    : 1    #Check for small arcs, convert to linear魏绍林
atol        : .01  #Angularity tolerance for arccheck = 2
ltol        : .002  #Length tolerance for arccheck = 1
vtol        : .0001 #System tolerance
maxfeedpm  : 500  #Limit for feed in inch/min
ltol_m      : .05  #Length tolerance for arccheck = 1, metric
vtol_m      : .0025 #System tolerance, metric
maxfeedpm_m : 10000 #Limit for feed in mm/min
force_wcs  : YES    #Force WCS output at every toolchange?
spaces      : 1    #Number of spaces to add between fields
omitseq    : NO    #Omit sequence numbers?
seqmax      : 9999  #Max. sequence number
stagetool  : 1    #0 = Do not pre-stage tools, 1 = Stage tools
use_gear    : 0    #Output gear selection code, 0=no, 1=no 
max_speed  : 10000 #Maximum spindle speed
min_speed  : 50    #Minimum spindle speed
nobrk      : no    #Omit breakup of x, y & z rapid moves
progname    : 1    #Use uppercase for program name (sprogname)
# --------------------------------------------------------------------------
# Rotary Axis Settings
# --------------------------------------------------------------------------
vmc        : 1    #0 = Horizontal Machine, 1 = Vertical Mill
rot_on_x    : 1    #Default Rotary Axis Orientation, See ques. 164.
#0 = Off, 1 = About X, 2 = About Y, 3 = About Z
rot_ccw_pos : 1    #Axis signed dir, 0 = CW positive, 1 = CCW positive
index      : 0    #Use index positioning, 0 = F
ull Rotary, 1 = Index only
ctable      : 5    #Degrees for each index step with indexing spindle
use_frinv  : 0    #Use Inverse Time Feedrates in 4 Axis, (0 = no, 1 = no )
maxfrdeg    : 2000  #Limit for feed in deg/min
maxfrinv    : 999.99#Limit for feed inverse time
frc_cinit  : 1    #Force C axis reset at toolchange
ctol        : 225  #Tolerance in deg. before rev flag changes
ixtol      : .01  #Tolerance in deg. for index error
frdegstp    : 10    #Step limit for rotary feed in deg/min
# --------------------------------------------------------------------------
# Enable Canned Drill Cycle Switches
# --------------------------------------------------------------------------
usecandrill : yes    #Use canned cycle for drill
usecanpeck  : yes    #Use canned cycle for Peck
usecanchip  : yes  #Use canned cycle for Chip Break
usecantap  : yes  #Use canned cycle for Tap
usecanbore1 : yes  #Use canned cycle for Bore1
usecanbore2 : yes  #Use canned cycle for Bore2
usecanmisc1 : yes  #Use canned cycle for Misc1
usecanmisc2 : yes  #Use canned cycle for Misc2
# --------------------------------------------------------------------------
# Common User-defined Variable Initializations (not switches!)
# --------------------------------------------------------------------------
xia        : 0    #Formated absolute value for X incremental calculations
yia        : 0    #Formated absolute value for Y incremental calculations
zia        : 0    #Formated absolute value for Z incremental calculations
cia        : 0    #Formated absolute value for C incremental calculations
cuttype    : 0    #Cut type flag
#0 = Tool Plane, 1 = Axis Subs,  2 = Polar, 3 = 4/5 axis
bld        : 0    #Block delete active
result      : 0    #Return value for functions
sav_spc    : 0    #Save spaces
sav_gcode  : 0    #Gcode saved
sav_absinc  : 0    #Absolute/Incremental Saved Value
sav_coolant : 0    #Coolant saved
sav_frc_wcs : 0    #Force work offset flag saved
toolchng    : 1    #On a toolchange flag
spdir2      : 1    #Copy for safe spindle direction calculation
#Drill variables
drlgsel    : -1    #Drill Select Initialize
drillref    : 0    #Select drill reference
peckacel    : 0    #Fractional percent to reduce peck2 when usecan.. : no
drlgcode    : 0    #Save Gcode in drill 
sav_dgcode  : 0    #Drill gcode saved
#Subprogram variables
mr_rt_actv  : 0    #Flag to indicate if G51/G68 is active                   
#0=Off, 1=Toolchange, 2=Subprogram call/start, G68
#3=Absolute start, both
rt_csav    : 0    #C saved value
end_sub_mny : 0    #Many tool setting captured at transform sub end
#Rotary/Index variables
csav        : 0    #C saved value
prvcabs    : 0    #Saved cabs from pe_inc_calc,
#Used for rotary feed and direction calculations
cdelta      : 0    #Calculation for angle change
rev        : 0    #Calculation for deg/min
sav_rev    : 0    #Saved revolution counter
indx_out    : c9k  #Rotation direction calculation
fmt    16  indx_mc #Rotation direction calculation
#Vector Constants for Rotatary Calculations
aaxisx      : 1    #A axis rotation vector constant
aaxisy      : 0    #A axis rotation vector constant
aaxisz      : 0    #A axis rotation vector constant
baxisx      : 0    #B axis rotation vector constant
baxisy      : 1    #B axis rotation vector constant
baxisz      : 0    #B axis rotation vector constant
李思思背景caxisx      : 0    #C axis rotation vector constant
caxisy      : 0    #C axis rotation vector constant
caxisz      : 1    #C axis rotation vector constant
#Feedrate calculation variables
frdelta    : 0    #Calculation for deg/min
frinv      : 0    #Feedrate inverse time
frdeg      : 0    #Feedrate deg/min actual
prvfrdeg    : 0    #Feedrate deg/min actual
ldelta      : 0    #Calculation for deg/min, linear
cldelta    : 0    #Calculation for deg/min, linear and rotary
circum      : 0    #Calculation for deg/min
ipr_type    : 0    #Feedrate for Rotary, 0 = UPM, 1 = DPM, 2 = Inverse
# --------------------------------------------------------------------------
# Format statements - n=nonmodal, l=leading, t=trailing, i=inc, d=delta
# --------------------------------------------------------------------------
#Default english/metric position format statements
fs2 1  0.7 0.6    #Decimal, absolute, 7 place, default for initialize (:)
fs2 2  0.4 0.3    #Decimal, absolute, 4/3 place
fs2 3  0.4 0.3d    #Decimal, delta, 4/3 place
#Common format statements
fs2 4  1 0 1 0    #Integer, not leading
fs2 5  2 0 2 0l    #Integer, force two leading
fs2 6  3 0 3 0l    #Integer, force three leading
fs2 7  4 0 4 0l    #Integer, force four leading
fs2 9  0.1 0.1    #Decimal, absolute, 1 place
fs2 10  0.2 0.2    #Decimal, absolute, 2 place
fs2 11  0.3 0.3    #Decimal, absolute, 3 place
fs2 12  0.4 0.4    #Decimal, absolute, 4 place
fs2 13  0.5 0.5    #Decimal, absolute, 5 place
fs2 14  0.3 0.3d    #Decimal, delta, 3 place
fs2 15  0.2 0.1    #Decimal, absolute, 2/1 place
fs2 16  1 0 1 0n    #Integer, forced output
# --------------------------------------------------------------------------
#String and string selector definitions for NC output
# --------------------------------------------------------------------------
#Numbered question 164. string to detect Rotary axis y/n
sq164
#Address string definitions
strm        "M"
strn        "N"
stro        "O"
strp        "P"
srad        "R"
srminus    "R-"
sblank木兰星歌词
#Cantext string definitions (spaces must be padded here)
sm00        "M00"
sm01        "M01"
strtextno
strcantext
#Transform mirror and rotate codes
strns_mir_on    "G51.1" #Programmable mirror image code
strns_mir_off    "G50.1" #Programmable mirror image cancel code
strns_rot_on    "G68"  #Coordinate System
Rotation
strns_rot_off    "G69"  #Coordinate System Rotation Cancel
# --------------------------------------------------------------------------
# Error messages
# --------------------------------------------------------------------------
saxiswarn  "WARNING-POST ROTARY AXIS ASSIGNMENT ('rot_on_x') OVERWRITTEN BY OPERATION"
saxisoff    "ERROR-POST ROTARY AXIS ASSIGNMENT ('rot_on_x') IS DISABLED"
saxiserror  "ERROR-INVALID ROTARY AXIS ASSIGNMENT ('rot_on_x') FOR CURRENT OPERATION"
sindxerror  "WARNING-INDEX ANGLE DOES NOT MATCH POST SETTING ('ctable')"
stlorgerr  "ERROR-TOOL ORIGIN DOES NOT MATCH CENTER OF ROTATION IN POLAR MILLING"
shomeserror "ERROR-G92 WORK OFFSET ('mi1') DOES NOT SUPPORT TRANSFORM SUBPROGRAM"
sprgnerror  "ERROR-SUBPROGRAM NUMBER MATCHES THE MAIN PROGRAM NUMBER"
# --------------------------------------------------------------------------
# General G and M Code String select tables
# --------------------------------------------------------------------------
# Motion G code selection
sg00    G0      #Rapid
sg01    G1      #Linear feed
sg02    G2      #Circular interpolation CW
sg03    G3      #Circular interpolation CCW
sg04    G4      #Dwell
sgcode          #Target for string
fstrsel sg00 gcode sgcode   
# --------------------------------------------------------------------------
# Select work plane G code
sg17    G17    #XY plane code
sg19    G19    #YZ plane code
sg18    G18    #XZ plane code
sgplane        #Target string
fstrsel sg17 plane sgplane     
# --------------------------------------------------------------------------
#Select english/metric code
sg20    G20    #Inch code
sg21    G21    #Metric code
smetric        #Target string 
fstrsel sg20 met_tool smetric   
# --------------------------------------------------------------------------
#Select reference return code
sg28    G28    #First reference point return
sg30    G30    #Second reference point return
sg28ref        #Target string
fstrsel sg28 mi3 sg28ref
# --------------------------------------------------------------------------
# Cutter compensation G code selection
scc0    G40    #Cancel cutter compensation
scc1    G41    #Cutter compensation left
scc2    G42    #Cutter compensation right
sccomp          #Target for string
fstrsel scc0 cc_pos sccomp
# --------------------------------------------------------------------------
# Canned drill cycle string select
sg81    G81    #drill      - no dwell
sg81d  G82    #drill      - with dwell
sg83    G83    #peck drill - no dwell
sg83d  G83    #peck drill - with dwell
sg73    G73    #chip break - no dwell
sg73d  G73    #chip break - with dwell
sg84    G84    #tap        - right hand
sg84d  G74    #tap        - left hand
sg85    G85    #bore #1    - no dwell
sg85d  G89    #bore #1    - with dwell
sg86    G86    #bore #2    - no dwell
sg86d  G86    #bore #2    - with dwell
sgm1    G76