![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| Post Processor Files Discuss post processor files here! |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| |||
| |||
Hello all, I am having a problem with my post processor. This first post is from Mastercam7 and the next is from Mastercam X3. % O0001 (PROGRAM NAME - MC7) (DATE=DD-MM-YY - 19-11-10 TIME=HH:MM - 12:12) (1/8 CENTERDRILL TOOL - 1 DIA. OFF. - 1 LEN. - 1 DIA. - .125) N100G20 N102G0G17G40G49G80G90 N110T1M6 N112G0G90X0.Y0.A0.S2250M3 N114G43H1Z.5M8 N116G98G81Z-.05R.25F6. N118G80 N120M5 N122G91G0G28Z0.M9 N124G90 N126M30 % % O0000 N10G54X0.Y0.Z.5 N20G98G81Z-.05R.25F6. N30G80 (PROGRAM NAME - MCX3) (DATE=DD-MM-YY - 19-11-10 TIME=HH:MM - 12:13) ( 1/8 CENTERDRILL TOOL - 1 DIA. OFF. - 1 LEN. - 1 DIA. - .125) N40G20 N50G0G17G40G49G80G90 N60T1M6 N70G0G90X0.Y0.A0.S2250M3 N80G43H1Z.5M8 N90M5 N100G91G28Z0.M9 N110G90 N120M30 % The MC7 post works just fine but the X3 does not. I see that it placed two lines at the beginning of the program that should be between N80 and N90. My question is how to I modify my post processor to get it to post out in the correct format? Here is my MCX3 *.pst. [POST_VERSION] #DO NOT MOVE OR ALTER THIS LINE# V11.00 E1 P0 T1276788110 M11.00 I0 X0.00 # 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 # Executable : MP 7.20 # # WARNING: THIS POST IS GENERIC AND IS INTENDED FOR MODIFICATION TO # THE MACHINE TOOL REQUIREMENTS AND PERSONAL PREFERENCE. # # -------------------------------------------------------------------------- # Revision log: # -------------------------------------------------------------------------- # Features: # -------------------------------------------------------------------------- # This post supports Generic Fanuc code output for 3 and 4 axis milling. # It is designed to support features of Mastercam Mill V7. # # 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, G55.... based on Mastercam settings. # # mi2 - Absolute, or Incremental positioning # 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 = Ostop = output the "M01" optional stop code # 2 = Stop = output the "M00" 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 the axis of rotation about the axis # of the "Reference View" according to the setting you entered for # 'rot_on_x'. The Top View (Z plus of the Reference View) indicates # the position on the part of rotary axis zero. The top 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: # 1) Create the Cplane and Tplane as the rotation of the Top View about # the selected axis of the "Reference View". The toolplane is used # to calculate the position of the rotary axis. # #Axis substitution: # 1) Use the Rotary axis substitution by drawing the geometry flattened # from the cylinder. Positions are wrapped from and to the cylinder # by using the Roll function. Rapid positions in the NC parameters # are relative to the chained geometry. 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 the all the # Z position at output. # 2) Drill positions can also be substituted in this function. # #Rotary 4 axis: # 1) 4 axis toolpaths can be generated from the Multisurf Rotary 4 axis # function. Use the Top View for the toolplane and the Cplane to define # the step over slicing plane (uses depth). # #Additional Notes: # 1) G54 calls are generated where the work offset entry of 0 = G54, # 1 = G55, etc. # 2) Metric is applied from the first NCI met_tool variable. # 3) 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. # # -------------------------------------------------------------------------- # Debugging and program switches # -------------------------------------------------------------------------- fastmode$ : 1 #Posting speed optimizition bug1$ : 2 #0=No display, 1=Generic list box, 2=Editor bug2$ : 0 #Append postline labels, non-zero is column position? bug3$ : 0 #Append whatline no. to each NC line? bug4$ : 0 #Append NCI line no. to each NC line? whatno$ : yes$ #Do not perform whatline branches? (leave as yes) linktolvar$ : 1 #Associate X tolerance variables to V9- variable? linklvar$ : 1 #Associate X lathe specific variables to V9- variable? cant_tlchng$ : 1 #Ignore cantext entry on move with tlchng_aft? get_1004$ : 1 #Find gcode 1004 with getnextop? skp_lead_flgs$ : 1 #Do NOT use V9+ style contour flags? rpd_typ_v7$ : 1 #Use V7+ style contour flags/processing? strtool_v7$ : 2 #Use Version 7 toolname? arcoutput$ : 1 #0 = IJK, 1 = R no sign, 2 = R signed neg. over 180 arctype$ : 2 #Arc center 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc. stagetool : 0 #0 = Do not pre-stage tools, 1 = Stage tools use_gear : 0 #Output gear selection code, 0=no, 1=yes max_speed : 10000 #Maximum spindle speed min_speed : 50 #Minimum spindle speed index : 0 #Use index positioning 0=No,1=Direction M-Codes,2=Signed #3=Controler takes shortest path ctable : 5 #Degrees for each index step with indexing table rot_on_x : 0 #Axis rotating about, 0 = Y axis, 1 = X axis rot_ccw_pos : 0 #Axis signed direction, 0 = CW positive, 1 = CCW positive lock_table : no$ #Lock table for indexing operations use_frinv : 0 #Output feedrate with rotary as inverse time, 0=no, 1=yes maxfrdeg : 2000 #Limit for feed in deg/min maxfrinv : 999.99#Limit for feed inverse time force_wcs : no$ #Force WCS output at every toolchange? scaxadrs A #Address for the rotary axis # -------------------------------------------------------------------------- # INITIALIZE - initialize system variables # -------------------------------------------------------------------------- arccheck$ : 1 #Check for small arcs, convert to linear breakarcs$ : yes$ #Break arcs into quadrants? getnextop$ : 2 #Build the next variable table newglobal$ : 1 #Error checking for global variables nobrk$ : no$ #Omit breakup of x, y & z rapid moves omitseq$ : no$ #Omit sequence no. progname$ : 1 #Use uppercase for program name rotaxtyp$ : 1 #Rotary axis type for toolplane seqmax$ : 9999 #Max. sequence no. spaces$ : 0 #No. of spaces to add between fields tlchng_aft$ : 1 #Delay call to toolchange until move line tooltable$ : 1 #Read for tool table and pwrtt #Common variables and strings zero : 0 #Define constant one : 1 #Define constant two : 2 #Define constant c9k : 9999 #Define constant frc_cinit : 0 #Force C axis reset and C axis codes at each toolchange #overrides the modality based on postflg speed : 0 #Absolute value of ss bld : 0 #Block delete active result : 0 #Return value for functions sav_spc : 0 #Save spaces sav_gcode : 0 #Gcode saved sav_nobrk : 0 #nobrk saved absinc$ : 0 #Absolute/Incremental ctype : 0 #Cut type cflag : 0 #1 = in path #Position control variables x_mult : 1 #Multiplier for output on X axis y_mult : 1 #Multiplier for output on Y axis z_mult : 1 #Multiplier for output on Z axis #English constant variables, adjust according to metric/english setting conversion : 12 #Unit conversion value, do not change ltol$ : 0.002 #Length tolerance for arccheck vtol$ : 0.0001#System tolerance maxfeedpm : 500 #Limit for feed in unit/min pconsmet #Metric constant variables conversion = 1000 ltol$ = 0.05 vtol$ = 0.001 maxfeedpm = 10000 # -------------------------------------------------------------------------- # Format statements - n=nonmodal, l=leading, t=trailing, i=inc, d=delta # -------------------------------------------------------------------------- #Default english position format statements fs 1 0.4 #Decimal, absolute, 4 place, default for initialize ( ![]() fs 2 0.4 #Decimal, absolute, 4 place fs 3 0.4d #Decimal, delta, 4 place #Metric position format statements fs 22 0.3 #Decimal, absolute, 3 place fs 23 0.3d #Decimal, delta, 3 place #Common format statements fs 4 1 0 #Integer, not leading fs 5 2 0l #Integer, force two leading fs 6 3 0l #Integer, force three leading fs 7 4 0l #Integer, force four leading fs 8 0 4t #No decimal, absolute, four trailing fs 9 0.1 #Decimal, absolute, 1 place fs 10 0.2 #Decimal, absolute, 2 place fs 11 0.3 #Decimal, absolute, 3 place fs 12 0.4 #Decimal, absolute, 4 place fs 13 0.5 #Decimal, absolute, 5 place fs 14 0.3d #Decimal, delta, 3 place fs 15 0 3t #No decimal, absolute, 3 trailing fs 16 0 2t #No decimal, absolute, 2 trailing # -------------------------------------------------------------------------- #Address string definitions srad "R" srminus "R-" sblank # -------------------------------------------------------------------------- # 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 5 -1 0 # -------------------------------------------------------------------------- # 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 3 -1 0 # -------------------------------------------------------------------------- #Select english/metric code sg20 G20 #Inch code sg21 G21 #Metric code smetric #Target string fstrsel sg20 met_tool$ smetric 2 -1 0 # -------------------------------------------------------------------------- #Select reference return code sg28 G28 #First reference point return sg30 G30 #Second reference point return sg28ref #Target string fstrsel sg28 mi3$ sg28ref 2 -1 0 # -------------------------------------------------------------------------- # 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 3 -1 0 # -------------------------------------------------------------------------- # Select incremental or absolute G code sg90 G90 #Absolute code sg91 G91 #Incremental code sgabsinc #Target string fstrsel sg90 absinc$ sgabsinc 2 -1 0 # -------------------------------------------------------------------------- # Feed mode G code selection sg94 G94 #UPM sg94d G94 #DPM sg93 G93 #Inverse sgfeed #Target for string fstrsel sg94 ipr_type sgfeed 3 -1 0 # -------------------------------------------------------------------------- # Generate string for spindle sm04 M4 #Spindle reverse sm05 M5 #Spindle off sm03 M3 #Spindle forward spindle #Target for string fstrsel sm04 spdir1 spindle 3 -1 0 # -------------------------------------------------------------------------- # Coolant M code selection sm09 M9 #Coolant Off sm08 M8 #Coolant Flood sm08_1 M8 #Coolant Mist sm08_2 M8 #Coolant Tool scoolant #Target for string fstrsel sm09 coolant$ scoolant 4 -1 0 # -------------------------------------------------------------------------- # Table rotation direction sindx_m M22 #Rotate CCW code sindx_p M21 #Rotate CW code sindx_m2 M22 #Rotate CCW code sindx_mc #Target for string fstrsel sindx_m indx_mc sindx_mc 3 -1 0 sunlock M11 # Unlock Rotary Table slock M10 # Lock Rotary Table # -------------------------------------------------------------------------- # Define the gear selection code flktbl 1 3 #Lookup table definition - table no. - no. entries 40 0 #Low gear range 41 400 #Med gear range 42 2250 #Hi gear range # -------------------------------------------------------------------------- # Toolchange NC output # -------------------------------------------------------------------------- fmt O 7 progno$ #Program number fmt T 4 t$ #Tool No fmt T 4 first_tool$ #First Tool Used fmt T 4 next_tool$ #Next Tool Used fmt D 4 tloffno$ #Diameter Offset No fmt H 4 tlngno$ #Length Offset No fmt G 4 g_wcs #WCS G address fmt P 4 p_wcs #WCS P address fmt S 4 speed #Spindle Speed fmt M 4 gear #Gear range fmt 11 indx_out #Index position # -------------------------------------------------------------------------- fmt "TOOL - " 4 tnote # Note format fmt " DIA. OFF. - " 4 toffnote # Note format fmt " LEN. - " 4 tlngnote # Note format fmt " DIA. - " 1 tldia$ # Note format # -------------------------------------------------------------------------- ptoolcomment #Comment for tool tnote = t$ toffnote = tloffno$ tlngnote = tlngno$ "(", pstrtool, *tnote, *toffnote, *tlngnote, *tldia$, ")", e$ pstrtool #Comment for tool if strtool$ <> sblank, pstrtool2 pstrtool2 #Comment for tool strtool$ = ucase(strtool$) *strtool$, " " pcomment$ #Comment from manual entry pcomment2 pcomment2 #Comment from manual entry scomm$ = ucase (scomm$) if gcode$ = 1007, "(", scomm$, ")" else, "(", scomm$, ")", e$ pheader$ #Start of file "%",e$ *progno$,e$ psof0$ #Start of file for tool zero psof$ psof$ #Start of file for non-zero tool number nextcflg$ = c9k plast_recd rc1 = one gcode1 = rbuf ( one, rc1 ) if ntools$ = one, stagetool = two #skip single tool output gcode$ = zero cc_pos$ = zero pspindle pcom_movbtl "(PROGRAM NAME - ", sprogname$,")",e$ "(DATE=DD-MM-YY - ", date$, " TIME=HH:MM - ", time$, ")",e$ ptoolcomment comment$ pbld, n$, *smetric,e$ pbld, n$, *sgcode, *sgplane, "G40", "G49", "G80", *sgabsinc,e$ if mi1$ <= one, pg92_rtrnz, pg92_rtrn, pg92_g92 absinc$ = mi2$ if stagetool <> two, pbld, n$, *t$, "M6",e$ pindex pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1,e$ pbld, n$, "G43", *tlngno$, pfzout, scoolant, [if stagetool = one, *next_tool$],e$ pcom_movea ptlchg0$ #Call from NCI null tool change (tool number repeats) if workofs$ <> prv_workofs$, [ sav_nobrk = nobrk$ nobrk$ = zero ] pctype prv_x$ = vequ (xa) pspindle comment$ pbld, n$, sgplane, e$ if prv_spdir1 <> spdir1, [spdir1 = 1], pbld, n$, *spindle, e$ if prv_speed <> speed | prv_spdir1 <> spdir1, pbld, n$, *speed, *spindle, pgear, e$ pbld, n$, scoolant,e$ ptlchg$ #Tool change gcode$ = zero pspindle pcom_movbtl if mi1$ = one, pg92_rtrn, pg92_g92 absinc$ = mi2$ pbld, n$, "M01", e$ ptoolcomment comment$ if stagetool <> two, pbld, n$, *t$, "M6",e$ pindex pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1,e$ pbld, n$, "G43", *tlngno$, pfzout, scoolant, [if stagetool = one, *next_tool$],e$ pcom_movea ptlchg1002$ #Call at actual toolchange pctype absinc$ = mi2$ prv_feed = c9k linarc$ = zero brklinestype$ = zero xh$ = xh$ * x_mult yh$ = yh$ * y_mult zh$ = zh$ * z_mult prv_xia = vequ (xh$) if abs(ctype) = two & rotdia$ = zero, proterror ptoolend$ #End of tool path gcode1 = rbuf ( one, rc1 ) if gcode1 <> 1000, ptoolend_t ptoolend_t #End of tool path, toolchange gcode$ = zero coolant$ = zero absinc$ = one if cc_pos$ <> zero, cc_pos$ = zero pbld, n$, sccomp, "M5", e$ pbld, n$, sgabsinc, sgcode, *sg28ref, "Z0.", scoolant, e$ if mi2$ = one, pbld, n$, *sg28ref, "X0.", "Y0.", protretinc, e$ else, protretabs protretinc #Reset the C axis revolution counter if frc_cinit = one, presetrev protretabs #Reset the C axis revolution counter if frc_cinit = one, pbld, n$, *sg28ref, presetrev, e$ presetrev #Reset the C axis revolution counter rev = zero cabs = zero prv_csav = zero prv_cabs = zero *scaxadrs sav_spc = spaces$ spaces$ = zero "0." spaces$ = sav_spc peof0$ #End of file for tool zero peof$ peof$ #End of file for non-zero tool ptoolend_t pbld, n$, "G90",e$ comment$ if stagetool = one, pbld, n$, *first_tool$,e$ pbld, n$, "M30",e$ "%",e$ pwcs #G54+ coordinate setting at toolchange if mi1$ > 1, pwcs_g54 pwcs_g54 #G54 coordinate setting if workofs$ < 6, g_wcs = workofs$ + 54 else, p_wcs = workofs$ - 5 if workofs$ < 6 & (prv_g_wcs <> g_wcs | force_wcs = yes$), *g_wcs if workofs$ > 5 & (prv_p_wcs <> p_wcs | force_wcs = yes$), "G54.1", *p_wcs !workofs$, !g_wcs, !p_wcs pwcs_2 #G54+ coordinate setting and position absinc$ = zero if (workofs$ < 6 & prv_g_wcs <> workofs$ + 54) | (workofs$ > 5 & prv_p_wcs <> p_wcs), pbld, n$, sgabsinc, pwcs_g54, pfxout, pfyout, pfzout, e$ absinc$ = mi2$ nobrk$ = sav_nobrk pg92_rtrnz #Z home position return absinc$ = one pfbld, n$, sgabsinc, *sg28ref, "Z0.", e$ pg92_rtrn #XY home position return pfbld, n$, *sg28ref, "X0.", "Y0.", e$ pg92_g92 #G92 coordinate setting at tool change pfbld, n$, "G92", *xh$, *yh$, *zh$, e$ pgear #Find spindle gear if use_gear = one, pgear2 pgear2 #Find spindle gear and output gear = frange ( 1, speed ) *gear pcan #Canned text - before output call pcan1 #Canned text - with move pcan2 #Canned text - after output call if opcode1 = 3 & dwell$ <> zero & gcode$ = one, pdwell1 if cantext$ = one, pbld, n$, "M01", e$ if cantext$ = two, pbld, n$, "M00", e$ pspindle #Spindle speed calculations for RPM speed = abs (ss1) if speed > max_speed, speed = max_speed if speed < min_speed, speed = min_speed pctype #Determine the cut type #Multisurf Rotary 4 axis or 11 gcode = one #Axis substitution = two ctype = zero if nextop$ = 11, ctype = one if (rotaxis$ = one & rot_on_x = one) | (rotaxis$ = two & rot_on_x = zero), psuberror if rotaxis$ = one | rotaxis$ = two, ctype = two if rot_on_x = zero, ctype = -ctype # -------------------------------------------------------------------------- # Motion NC output # -------------------------------------------------------------------------- #The variables for absolute output are xabs, yabs, zabs. #The variables for incremental output are xinc, yinc, zinc. #They are found from the variables xa, ya, za. #To prevent disturbing xa, ya, za they are used to calculate the output #variables with multipliers. fmt N 4 n$ #Sequence number fmt X 2 xabs #X position output fmt Y 2 yabs #Y position output fmt Z 2 zabs #Z position output fmt X 3 xinc #X position output fmt Y 3 yinc #Y position output fmt Z 3 zinc #Z position output fmt 11 cabs #C axis position fmt 14 cinc #C axis position fmt I 3 iout #Arc center description in X fmt J 3 jout #Arc center description in Y fmt K 3 kout #Arc center description in Z fmt R 2 arcrad$ #Arc Radius fmt F 10 feed #Feedrate fmt P 11 dwell$ #Dwell # -------------------------------------------------------------------------- prapidout #Output to NC of linear movement - rapid pbld, n$, sgplane, sgcode, pccdia, pxout, pyout, pzout, pcout, pcan1, e$ plinout #Output to NC of linear movement - feed pbld, n$, sgfeed, sgplane, sgcode, pccdia, pxout, pyout, pzout, pcout, pfr, pcan1, e$ pcirout #Output to NC of circular interpolation pbld, n$, sgfeed, sgplane, sgcode, pccdia, pxout, pyout, pzout, pcout, parc, pfr, pcan1, e$ prapid$ #Output to NC of linear movement - rapid pcom_moveb if mi1$ > 1, pwcs_2 ppos_cax_lin prapidout pcom_movea pzrapid$ #Output to NC of linear movement - rapid Z only prapid$ plin$ #Output to NC of linear movement - feed pcom_moveb if mi1$ > 1, pwcs_2 if ctype = zero, ppos_cax_lin plinout pcom_movea pz$ #Output to NC of linear movement - feed Z only plin$ pmx$ #Output to NC of Multisurf Rotary if fr$ = -2,gcode$ = zero else, gcode$ = one if gcode$ = one, plin$ else, prapid$ pcir$ #Output to NC of circular interpolation pcom_moveb if mi1$ > 1, pwcs_2 if ctype = zero, ppos_cax_lin pcirout pcom_movea ppos_cax_lin #Position the rotary axis before move - rapid if ctype = zero & fmtrnd(prv_cabs) <> fmtrnd(cabs), ppos_cax_lin2 pindex ppos_cax_lin2 #Position the rotary axis before move - rapid sav_gcode = gcode$ gcode$ = zero pbld, n$, sgcode, pcout, e$ gcode$ = sav_gcode pdwl_spd$ #Call from NCI gcode 4 ss1 = ss$ spdir1 = spdir$ + one pspindle comment$ pdwell1 if prv_spdir1 <> spdir1, pbld, n$, "M5", e$ if prv_speed <> speed | prv_spdir1 <> spdir1, pbld, n$, *speed, *spindle, pgear, e$ pdwell2 #Output to NC of dwell gcode$ = 4 pbld, n$, *sgcode, *dwell$, e$ pdwell1 #Check for zero dwell if fmtrnd(dwell$) <> zero, pdwell2 pcom_movbtl #Common motion preparation routines, before, toolchange xa = vequ(x$) pxyzcout ps_prvx pcan pcom_moveb #Common motion preparation routines, before xa = vequ(x$) pxyzcout ps_prvx comment$ pcan pcom_movea #Common motion preparation routines, after pcan2 pe_prvx if cend$ = one, cflag = zero # -------------------------------------------------------------------------- # Motion output components # -------------------------------------------------------------------------- pbld #Canned text - block delete if cantext$ = 3, bld = one if cantext$ = 4, bld = zero if bld = one, '/' pfbld #Force - block delete "/" pccdia #Cutter Compensation #Force Dxx# if prv_cc_pos$ <> cc_pos$ & cc_pos$ <> zero, prv_tloffno$ = c9k sccomp if cc_pos$ > zero, tloffno$ pfxout #Force X axis output if absinc$ = zero, *xabs, !xinc else, *xinc, !xabs pxout #X output if absinc$ = zero, xabs, !xinc else, xinc, !xabs pfyout #Force Y axis output if absinc$ = zero, *yabs, !yinc else, *yinc, !yabs pyout #Y output if absinc$ = zero, yabs, !yinc else, yinc, !yabs pfzout #Force Z axis output if absinc$ = zero, *zabs, !zinc else, *zinc, !zabs pzout #Z output if absinc$ = zero, zabs, !zinc else, zinc, !zabs pfcout #Force C axis output if index = zero, pfcout2 pfcout2 #Force C axis output if absinc$ = zero, *cabs else, *cinc pcout #C axis output if index = zero, pcout2 pcout2 #C axis output if absinc$ = zero, cabs, !cinc else, cinc, !cabs parc2 #Arc output for R if abs(sweep$) <= 180 | arcoutput$ = one, result = nwadrs(srad, arcrad$) else, result = nwadrs(srminus, arcrad$) *arcrad$ parc0 #Arc output for I, J, K iout = i$ * x_mult jout = j$ * y_mult kout = k$ * z_mult iout, jout, kout parc #Select the arc output if arcoutput$ = zero, parc0 else, parc2 pindex #Index output if prv_indx_out <> fmtrnd (indx_out), [ if lock_table = yes$, pbld, n$, *sunlock, e$ if index = one, pbld, n$, *sindx_mc, *indx_out, e$ else, pbld, n$, *indx_out, e$ if lock_table = yes$, pbld, n$, *slock, e$ ] if index <> zero, !cabs, !cinc !indx_out pffr #Output feedrate, force *feed pfr #Output feedrate feed # -------------------------------------------------------------------------- # Drilling # -------------------------------------------------------------------------- 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 # -------------------------------------------------------------------------- fmt Q 2 peck1$ #First peck increment (positive) fmt 2 peck2$ #Second or last peck (positive) fmt Q 2 shftdrl$ #Fine bore tool shift fmt R 2 refht_a #Reference height fmt R 3 refht_i #Reference height 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 # 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 #misc #1 - no dwell sgm1d G76 #misc #1 - with dwell sgm2 G81 #misc #2 - no dwell sgm2d G82 #misc #2 - with dwell sgdrill #Target for string fstrsel sg81 drlgsel sgdrill 16 -1 0 # -------------------------------------------------------------------------- #Canned drill cycle reference height sg98 G98 #Reference at initht sg99 G99 #Reference at refht sgdrlref #Target for string fstrsel sg98 drillref sgdrlref 2 -1 0 # Drill cycle G string select # -------------------------------------------------------------------------- pdrill0$ #Drill, motion test gcode$ = zero znci$ = initht$ * x_mult xa = vequ(xnci$) pxyzcout if mi1$ > 1, pwcs_2 pdrlcommonb #Canned Drill Cycle common call, before if cstart$ = one, cflag = one if drillcyc$ = 3, drlgsel = fsg1 (-ss1) + drillcyc$ * 2 else, drlgsel = fsg2 (dwell$) + drillcyc$ * 2 if initht$ <> refht$, drillref = 0 else, drillref = 1 z$ = depth$ * z_mult if absinc$ = one, prv_zia = refht$ * z_mult feed = fr_pos$ pcom_moveb pindex pdrlcommona #Canned Drill Cycle common call, after pcom_movea z$ = initht$ * z_mult za = initht$ * z_mult prv_zia = initht$ * z_mult pxyzcout prv_gcode$ = -1 prdrlout #R drill position refht_a = refht$ * z_mult refht_i = (refht$ - initht$) * z_mult if absinc$ = zero, *refht_a else, *refht_i pdrill$ #Canned Drill Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, dwell$, pffr, e$ pdrlcommona ppeck$ #Canned Peck Drill Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, *peck1$, pffr, e$ pdrlcommona pchpbrk$ #Canned Chip Break Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, *peck1$, pffr, e$ pdrlcommona ptap$ #Canned Tap Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, pffr, e$ pdrlcommona pbore1$ #Canned Bore #1 Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, dwell$, pffr, e$ pdrlcommona pbore2$ #Canned Bore #2 Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, pffr, e$ pdrlcommona pmisc1$ #Canned Misc #1 Cycle pdrlcommonb pbld, n$, *sgdrlref, *sgdrill, pxout, pyout, pfzout, pcout, prdrlout, shftdrl$, dwell$, pffr, e$ pdrlcommona pmisc2$ #Canned Misc #2 Cycle (User Option) pdrill$ prdrlout_2 #R drill position refht_a = refht$ * z_mult refht_i = (refht$ - initht$) * z_mult if absinc$ = zero, refht_a else, refht_i pdrill_2$ #Canned Drill Cycle pdrlcommonb pbld, n$, pxout, pyout, pzout, pcout, prdrlout_2, dwell$, e$ pdrlcommona ppeck_2$ #Canned Peck Drill Cycle pdrill_2$ pchpbrk_2$ #Canned Chip Break Cycle pdrill_2$ ptap_2$ #Canned Tap Cycle pdrill_2$ pbore1_2$ #Canned Bore #1 Cycle pdrill_2$ pbore2_2$ #Canned Bore #2 Cycle pdrill_2$ pmisc1_2$ #Canned Misc #1 Cycle pdrill_2$ pmisc2_2$ #Canned Misc #2 Cycle pdrill_2$ pcanceldc$ #Cancel canned drill cycle pbld, n$, "G80", e$ prv_dwell$ = zero @dwell$ # -------------------------------------------------------------------------- # Position calculations # -------------------------------------------------------------------------- #Unshifted machine position xa : 0 #Absolute unshifted value for X ya : 0 #Absolute unshifted value for Y za : 0 #Absolute unshifted value for Z #Incremental calculations xia : 0 #Formated absolute value for X yia : 0 #Formated absolute value for Y zia : 0 #Formated absolute value for Z #Rotary/Index output csav : 0 #C saved value prvcabs : 0 #Saved cout calculation from deg. ctol : 225 #Tolerance in deg. before rev flag changes cdelta : 0 #Calculation for angle change rev : 0 #Calculation for deg/min ixtol : 0.01 #Tolerance in deg. for index error indx_dlt : 0 #Rotation direction calculation indx_dlt2 : 0 #Rotation direction calculation indx_mc : 0 #Rotation direction calculation indx_out : 0 #Rotation direction calculation aaxisx : 1 #A rotation vector aaxisy : 0 aaxisz : 0 baxisx : 0 #B rotation vector baxisy : 1 baxisz : 0 #Feed output control variables ipr_type : 0 #0 = UPM, 1 = DPM, 2 = Inverse frdegstp : 10 #Step limit for feed in deg/min 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 ccdelta : 0 #Calculation for deg/min, rotary cldelta : 0 #Calculation for deg/min, linear and rotary circum : 0 #Calculation for deg/min # -------------------------------------------------------------------------- #Incremental calculations ps_prvx #Incremental calculations, start xia = fmtrnd(xabs) yia = fmtrnd(yabs) zia = fmtrnd(zabs) xinc = vsub (xia, prv_xia) cinc = cabs - prv_cabs pe_prvx #Incremental calculations, end !xia, !yia, !zia !x$, !y$, !z$ #Pre-process rotary motion control flags plin0$ #Linear movement, mill motion test if cstart$ = one, cflag = one linarc$ = zero brklinestype$ = zero if abs(ctype) = two, plin0_1 pcc_upd plin0_1 #Set brklinestype if ctype = two & cflag = one, brklinestype$ = 4 if ctype = -2& cflag = one, brklinestype$ = 5 pcir0$ #Circular interpolation, mill arc motion test if cstart$ = one, cflag = one linarc$ = zero brklinestype$ = zero if abs(ctype) = two, linarc$ = one pcc_upd pcc_upd #Update cc_pos for cutter comp. control if ccomp$ <> 1 & nextcflg$ = 1000 & (nextccomp$ = two | nextccomp$ = 3), cc_pos$ = nextccomp$ - one if ((nextop$ = 1011 & ccomp$ = 4 & nextcflg2 = 1000 & prv_cc_pos$ = cc_pos2) | (nextcflg$ = 1000 & ccomp$ = one & (nextccomp$ - one) = prv_cc_pos$) | (ccomp$ = 4 & cend$ = one)), cc_pos$ = prv_cc_pos$ #Map coordinates pxyzcout #Output values if ctype = zero, pxyzcout_0 #Tool plane positioning if abs(ctype) = one, pxyzcout1 #Multisurf Rotary if abs(ctype) = two, pxyzcout2 #Axis substitution xabs = xabs * x_mult yabs = yabs * y_mult zabs = zabs * z_mult pcoutrev pindxcalc pfcalc !xa, !ya, !za prvcabs = fmtrnd(cabs) #Toolplane positioning, ctype = 0 pxyzcout_0 #Multisurf rotary axis motion about X axis xabs = vequ (xa) csav = c$ if rot_ccw_pos = one, csav = -csav #Multisurf Rotary, ctype = 1 pxyzcout_1 #Multisurf rotary axis motion about X axis csav = atan2 (-vtooly$, vtoolz$) axisx$ = vequ (aaxisx) pxyzcout__1 #Multisurf rotary axis motion about Y axis #CNC<<CONVERT>>pxyzcout-1 #Multisurf rotary axis motion about Y axis #CNC<<MSG-ERROR(1007)>> Illegal character(s) encountered csav = atan2 (vtoolx$, vtoolz$) axisx$ = vequ (baxisx) pxyzcout1 #Multisurf rotary axis motion if ctype = one, pxyzcout_1 #Multisurf Rotary about X else, pxyzcout__1 #Multisurf Rotary about Y #CNC<<CONVERT>> else, pxyzcout-1 #Multisurf Rotary about Y #CNC<<MSG-ERROR(1015)>> Illegal character(s) encountered xabs = rotp (-csav, xa) if rot_ccw_pos = zero, csav = -csav #Y axis substitution, ctype = 2, directions are ok pxyzcout_2 #Output values for Y axis substitution, top view xabs = xa * x_mult yabs = zero zabs = (za + (rotdia$ / two)) * z_mult csav = ya * (360 / (pi$ * rotdia$)) pxyzcout__2 #Output values for X axis substitution, top view #CNC<<CONVERT>>pxyzcout-2 #Output values for X axis substitution, top view #CNC<<MSG-ERROR(1028)>> Illegal character(s) encountered xabs = zero yabs = ya * x_mult zabs = (za + (rotdia$ / two)) * z_mult csav = xa * (360 / (pi$ * rotdia$)) pxyzcout2 #Axis substitution if ctype = two, pxyzcout_2 #Y axis substitution if ctype = -2,pxyzcout__2 #X axis substitution #CNC<<CONVERT>> if ctype = -2,pxyzcout-2 #X axis substitution #CNC<<MSG-ERROR(1038)>> Illegal character(s) encountered if rot_ccw_pos = one, csav = -csav #Index calculations pindxcalc #Index move calculations if frac (abs(csav)/ctable) > ixtol & index = one, pindxerror indx_dlt = prvcabs - cabs indx_dlt2 = abs (indx_dlt) indx_mc = zero if indx_dlt < zero, indx_mc = one if indx_dlt2 > 180, indx_mc = indx_mc + one # Absolute Positioning 1 = M-Codes # 3 = control takes shortest path if index = 1 | index = 3, indx_out = abs(csav) # Signed direction calculation if index = 2, indx_out = csav # Adjust format assignment if frac(ctable), result = newfs(11, indx_out) else, result = newfs(4, indx_out) #Rotary axis revolution calculation pcoutrev2 #Add or subtract 360 degree for position if cdelta > zero, rev = rev - one else, rev = rev + one pcoutrev1 #If motion exceeds ctol, add wind-up if abs(cdelta) > ctol, pcoutrev2 pcoutrev #Modify for wind-up cdelta = csav - prv_csav pcoutrev1 cabs = rev * 360 + csav !csav #Feedrate calculation pfcalc #Feedrate calculations ipr_type = zero if fmtrnd(cabs) = prvcabs | index = one | opcode$ = 3 | (abs(ctype) = two & cflag = zero), pfcalc2 else, pfclc_deg_inv pfcalc2 #Feedrate if ipr_type <> prv_ipr_type, prv_feed = c9k feed = fr_pos$ if feed > maxfeedpm, feed = maxfeedpm prvfrdeg = feed pfclc_deg_inv #Feedrate deg/min circum = zabs * two * pi$ if circum = zero, circum = c9k #Don't allow Zero ldelta = sqrt(((xabs-prv_xabs)/x_mult)^2+((yabs-prv_yabs)/y_mult)^2+((zabs-prv_zabs)/z_mult)^2) ccdelta = ((abs(cabs - prvcabs))/360)*circum cldelta = sqrt(ccdelta^2 + ldelta^2) if cldelta = zero, cldelta = c9k if ldelta = zero, cldelta = ccdelta if use_frinv = one, pfcalc_inv else, pfcalc_deg pfcalc_inv #Feedrate inverse calculation ipr_type = two prv_feed = c9k frinv = fr_pos$ / cldelta if frinv > maxfrinv, frinv = maxfrinv feed = frinv pfcalc_deg #Feedrate deg/min calculation ipr_type = zero #Change to one to force on DPM if ipr_type <> prv_ipr_type, prv_feed = c9k frdeg = abs(ccdelta / cldelta) * abs(fr_pos$ * (360 / circum)) frdelta = abs(frdeg - prvfrdeg) if frdelta > frdegstp | prv_feed = c9k, pfcalc_deg2 if frdeg > maxfrdeg, feed = maxfrdeg pfcalc_deg2 #Feedrate deg/min control prvfrdeg = frdeg #Control output of frdeg feed = frdeg #Control output of frdeg # -------------------------------------------------------------------------- # Post setup and metric format conversion # -------------------------------------------------------------------------- pq$ #Setup post based on switch settings if stagetool = one, bldnxtool$ = one psetup #Setup post based on NCI settings if arctype$ = one | arctype$ = 4, pijkengabs else, pijkengdlt if met_tool$ = one, pmetric #Apply rotary axis address result = nwadrs(scaxadrs, cabs) result = nwadrs(scaxadrs, cinc) result = nwadrs(scaxadrs, indx_out) pmetric #Metric format, English is default pconsmet if arctype$ = one | arctype$ = 4, pijkmetabs else, pijkmetdlt #Metric conversion for position values result = newfs(22, xabs) result = newfs(22, yabs) result = newfs(22, zabs) result = newfs(23, xinc) result = newfs(23, yinc) result = newfs(23, zinc) result = newfs(22, arcrad$) result = newfs(9, feed) #Drill calculations metric conversion result = newfs(22, peck1$) result = newfs(22, peck2$) result = newfs(22, dwell$) result = newfs(22, shftdrl$) result = newfs(22, refht_a) result = newfs(23, refht_i) pijkmetabs #Metric ijk format, absolute result = newfs(22, iout) result = newfs(22, jout) result = newfs(22, kout) pijkmetdlt #Metric ijk format, delta result = newfs(23, iout) result = newfs(23, jout) result = newfs(23, kout) pijkengabs #English ijk format, absolute result = newfs(2, i$) result = newfs(2, j$) result = newfs(2, k$) pijkengdlt #English ijk format, delta result = newfs(3, i$) result = newfs(3, j$) result = newfs(3, k$) # -------------------------------------------------------------------------- # Tooltable look ahead routine # -------------------------------------------------------------------------- # Toolchange information buffer - (var#, 1 for current, 2 for next) wc1 : 1 #Initial count for write buffer 1 rc1 : 1 #Initial count for read buffer 1 size1 : 0 #Buffer 1 size gcode1 : 0 #Buffer 1 cc_pos1 : 0 #Buffer 1 cc_pos2 : 0 #Buffer 1 opcode1 : 0 #Buffer 1 ss1 : 0 #Buffer 1 spdir1 : 0 #Buffer 1 nextdc1 : 0 #Buffer 1 nextcflg2 : 0 #Buffer 1 fbuf 1 0 8 0 0 #Buffer 1 upd_pmv : 0 #Saved count for the first point motion (0 is off) # -------------------------------------------------------------------------- ppmv_recd2 #Update the toolchange point move, variables to update in prv_ !cc_pos1, !opcode1, !ss1, !spdir1, !nextdc1 rc1 = upd_pmv gcode1 = rbuf ( one, rc1 ) cc_pos1 = prv_cc_pos1 opcode1 = prv_opcode1 ss1 = prv_ss1 spdir1 = prv_spdir1 nextdc1 = prv_nextdc1 rc1 = upd_pmv gcode1 = wbuf ( one, rc1 ) #rc1 is used to write also upd_pmv = zero ppmv_recd #Update the point move if null or cancel if toolchange if gcode1 > 1000, upd_pmv = zero else, ppmv_recd2 plast_recd #Update the last record with the current information (2) rc1 = wc1 - one gcode1 = rbuf ( one, rc1 ) if nextccomp$ = zero | nextccomp$ = one | nextccomp$ = 4, cc_pos2 = zero if nextccomp$ = two, cc_pos2 = one if nextccomp$ = 3, cc_pos2 = two nextcflg2 = nextcflg$ rc1 = wc1 - one #rc1 is used to write also gcode1 = wbuf ( one, rc1 ) if upd_pmv <> zero & prv_opcode$ <> 15, ppmv_recd pcur_recd #Write to the current tool record (1) gcode1 = gcode$ cc_pos1 = cc_pos$ if opcode$ = 3, cc_pos1 = zero opcode1 = opcode$ ss1 = ss$ spdir1 = spdir$ + one nextdc1 = nextdc$ gcode1 = wbuf ( one, wc1 ) pwrtt$ #Buffer toolchange information if gcode$ = 1001, psetup #test for toolchange point move (opcode 15) update if gcode$ <> 1001, plast_recd pcur_recd if gcode$ > 1000 & opcode$ = 15, upd_pmv = wc1 - one !opcode$ # -------------------------------------------------------------------------- # Error messages # -------------------------------------------------------------------------- psuberror #Arc output not allowed "ERROR - WRONG AXIS USED IN AXIS SUBSTITUTION", e$ proterror #Rotaxis diameter not set "ERROR-ROTARY AXIS DIAMETER VALUE NOT SET", e$ rotdia$ = 0.1#Avoid divide error pindxerror #Index increments are not correct "ERROR-INDEX BY ", *ctable, " DEGREES", e$ # -------------------------------------------------------------------------- # Numbered questions for Mastercam # -------------------------------------------------------------------------- 38. Rapid feedrate? 300.0 80. Communications port number for receive and transmit (1 or 2) ? 2 81. Data rate (110,150,300,600,1200,2400,4800,9600,14400,19200,38400)? 300 82. Parity (E/O/N)? E 83. Data bits (7 or 8)? 7 84. Stop bits (1 or 2)? 2 85. Strip line feeds? N 86. Delay after end of line (seconds)? 0 87. Ascii, Eia, or Binary (A/E/B)? A 88. Echo keyboard to screen in terminal emulation? n 89. Strip carriage returns? N 90. Drive and subdirectory for NC and Material files? 91. Name of executable post processor? MP 92. Name of reverse post processor? RP 93. Reverse post PST file name? RPFAN 100. Number of places BEFORE the decimal point for sequence numbers? 3 101. Number of places AFTER the decimal point for sequence numbers? 0 103. Maximum spindle speed? 5000 107. Average time for tool change (seconds)? 2.0 158. Use wear compensation for pocket finish passes? n 159. Compensate the first and last point in cutter comp. in control simulation? y 160. Display first and last entity in toolpath when simulating cutter compensation in control? y 161. Enable Home Position button? y 162. Enable Reference Point button? n 163. Enable Misc. Values button? y 164. Enable Rotary Axis button? n 165. Enable Tool Plane button? y 166. Enable Construction Plane button? y 167. Enable Tool Display button? y 168. Check tplane during automatic work origin creation? n #110. Default tool library? TOOLS.TL7 # -------------------------------------------------------------------------- # Default Miscellaneous Real Values # -------------------------------------------------------------------------- 201. Default miscellaneous real variable 1 (mr1)? 0.0 202. Default miscellaneous real variable 2 (mr2)? 0.0 203. Default miscellaneous real variable 3 (mr3)? 0.0 204. Default miscellaneous real variable 4 (mr4)? 0.0 205. Default miscellaneous real variable 5 (mr5)? 0.0 206. Default miscellaneous real variable 6 (mr6)? 0.0 207. Default miscellaneous real variable 7 (mr7)? 0.0 208. Default miscellaneous real variable 8 (mr8)? 0.0 209. Default miscellaneous real variable 9 (mr9)? 0.0 210. Default miscellaneous real variable 10 (mr10)? 0.0 # -------------------------------------------------------------------------- # Default Miscellaneous Integer Values # -------------------------------------------------------------------------- 301. Work Coordinates [0-1=G92, 2=G54's] (mi1)? 2 302. Absolute or Incremental [0=ABS, 1=INC] (mi2)? 0 303. Reference Return [0=G28, 1=G30] (mi3)? 0 304. Miscellaneous integer variable 4 (mi4)? 0 305. Miscellaneous integer variable 5 (mi5)? 0 306. Miscellaneous integer variable 6 (mi6)? 0 307. Miscellaneous integer variable 7 (mi7)? 0 308. Miscellaneous integer variable 8 (mi8)? 0 309. Miscellaneous integer variable 9 (mi9)? 0 310. Miscellaneous integer variable 10 (mi10)? 0 # -------------------------------------------------------------------------- # Configuration File association parameters (default is "y") # -------------------------------------------------------------------------- 400. Name of associated cfg file? 401. Read SYSTEM COLORS section? y 402. Read ALLOCATIONS section? y 403. Read TOLERANCES section? y 404. Read DATA PATHS section? y 405. Read COMMUNICATIONS section? y 406. Read DRAFT SETTINGS section? y 407. Read MISCELLANEOUS section? y 408. Read NC SETTINGS section? y 409. Read DIALOG SCRIPTS section? y 410. Read DESIGN SETTINGS section? y 411. Read PLOTTER SETTINGS section? y 412. Read ALT-KEY ASSIGNMENTS section? y 413. Read CAD section? y 414. Read START/EXIT section? y 415. Read SCREEN section? y 416. Read FILE NAMES section? y [CTRL_MILL|DEFAULT] [misc integers] 1. //2 [CTRL_MILL|JJMPFAN] [misc integers] 1. //2 [CTRL_TEXT_END] |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Need Help!- post processor problems | meldusa | BobCad-Cam | 0 | 02-26-2010 02:06 PM |
| Post Problems? | MSPP | BobCad-Cam | 3 | 10-10-2007 08:36 AM |
| Post problems | Ken_Shea | Forum Questions or Problems | 0 | 05-05-2007 12:45 PM |
| Post Problems | SPEEDRE | Vectric | 1 | 03-26-2006 05:33 PM |
| Post Problems | rfstar | GibbsCAM | 26 | 04-27-2004 12:39 PM |