Jump to content

Welcome to eMastercam

Register now to participate in the forums, access the download area, buy Mastercam training materials, post processors and more. This message will be removed once you have signed in.

Use your display name or email address to sign in:

Rob @ Target Machine

Verified Members
  • Posts

    737
  • Joined

  • Last visited

Everything posted by Rob @ Target Machine

  1. Chip, Thanks for sharing your Macro B knowledge here. I tried out your macro on my RoboDrill and found that I needed to change your offset value from 2000 to 2200. FYI for Robodrill operators. Thanks for sharing your macro.
  2. I'm looking at InspectionExpert for FAI report generation, and trying to decide what approach is most likely to yield decent results. Most of our customers will supply us with a dxf file that will hopefully allow capture of associative dimensions and notes or other callouts without alot of hand editing the reports. Can anyone recommend a better software for this purpose or share experience with this software? Or maybe suggest a different format to import the dim's from? I have AutoCad 2014 and Solidworks 2013. I think dxf is probably the best format to import dim's from without having a solid model to work with. Any suggestions?
  3. Colic - That's strictly homebrewed logic I added to conform with the program header requirements of this shop. Here's a sample of one of my headers: % O500 (MVS3050.500..MP) (REV -) (OP 1) (SET ALL TOOLS .490" ABOVE BOTTOM OF PART) (MC-510VF MATSUURA) ( MCX FILE - D3050-1 REV -.MCX-5 ) ( NC FILE - MVS3050.500.NC ) (JUL-13-2011) (2:31 PM) (T1 - 3/8" EM ) (T2 - 1/8" EM ) (T3 - .060 EM ROUGHER ) (T4 - .060 EM ) (T5 - 1/8" C'SINK U/C .110 X .200 ) If you want to know more, I'll need a couple days to put it together for you.
  4. Ok. Sorry about the misunderstanding. These are the variables you need to output: stck_ht$ stck_wdth$ stck_thck$ In Mpmaster they are already formatted to output with L, W, and H addresses. If you want to output them a different way, you can initialize your own variables and format them the way you want. fmt S 4 cyl_typ # Predator Cylindral Stock Type fmt L 2 stck_ht$ fmt W 2 stck_wdth$ fmt H 2 stck_thck$ # My new format statements - outputs stock size my way <----Add new format statements fmt "LENGTH = " 2 stck_mystock_ht fmt "WIDTH = " 2 stck_mystock_wdth fmt "HEIGHT = " 2 stck_mystock_thck Then assign the stock values to your variables and output them where you want them in your program. For this example, I'll output the stock size at the start of the file after the tool table. pmystock # My new postblock - outputs stock size my way <----Add new postblock stck_mystock_ht = stck_ht$ stck_mystock_wdth = stck_wdth$ stck_mystock_thck = stck_thck$ scomm_str, stck_mystock_ht, scomm_end, e$ scomm_str, stck_mystock_wdth, scomm_end, e$ scomm_str, stck_mystock_thck, scomm_end, e$ psof$ #Start of file for non-zero tool number ptravel pwritebuf5 pcuttype toolchng = one if ntools$ = one, [ #skip single tool outputs, stagetool must be on #stagetool = m_one !next_tool$ ] tooltotal = rbuf(4,0) #Reads total tool and null tool changes if toolcountn <= tooltotal, nexttool = rbuf(4,toolcountn) else, nexttool = first_tool$ if tool_table = 2, ppredstck if tool_table = 3, pmetastck else, pmystock #<----Call the new postblock from psof$ postblock if we're not using Predator or Metacut Utilities Finally, make sure tool_table is set to 1. # -------------------------------------------------------------------------- # General Output Settings # -------------------------------------------------------------------------- ask : 0 #Ask for part name, rev level, and op number #Example nci name: SA11251 REV B OP 3 hel_2100 : no$ #Acramatic 2100 style helical moves, 0=no, 1=yes force_dpts : no$ #Force XY output on all drilling lines including cycle call? haas : 0 #Haas style peck drill and extended offsets, 0=no, 1=yes wcstype : 2 #0 = G92 at start, 1 = G92 at toolchanges, 2 = G54, 3 = Off force_wcs : yes$ #Force WCS output at every toolchange? tool_table : 1 #Tool table, 0=no, 1=yes, 2=Predator VCNC, 3=MetaCut View HTH
  5. Maybe I'm misunderstanding what you're trying to do. You are looking to post stock and tool information to run Metacut Utilities right?
  6. Jeff - I think you're due to have your post updated. pcancelcc$ is called by the mp.dll when gcode 1004 is found in the nci. I suspect you won't find the 1004 in the nci for that toolpath. The use of the pcancelcc$ postblock is not recommended. This was fine way back in V9, but I don't think you're going to have much luck using this V9 style post in X5 without some modification. If I'm not mistaken, your cutter comp string select table is likely using ccomp$, and needs to be modified to use cc_pos$, to select the string to output and cancel your cutter comp codes correctly. You can grab the framework and logic right out of the mpmaster if you're comfortable making the edits, otherwise, I'd give a call to my VAR for the mods.
  7. Personally, I think transform is alot easier. If you ask your reseller, they can email you a copy of the post ref guide. Look at the subout$ command and how it allows you to switch output streams. Keep in mind that if you output subs this way, you won't be able to use non-transform subs like depth cuts and drill point subs.
  8. This is how I'm doing it in my 4ax post. Similar to mpsubrep. Mi1$ is the trigger Mi2$ is globally assigned to sub_offsets to output reps. Here are the calls: Entry point ptlchg_com #Tool change common blocks #if force_output | sof, if force_output, [ result = force(ipr_type,ipr_type) result = force(absinc$,absinc$) result = force(plane$,plane$) ] pcom_moveb pcheckaxis #Check for valid rotary axis c_mmlt$ #Multiple tool subprogram call #ptoolcomment if sof & scomm_sav <> snull, [ spaces$ = 0 n$, pspc, scomm_str, *scomm_sav, scomm_end, e$ spaces$ = sav_spc ] if sof = 0, scomm_sav = snull comment$ pcomment3 pmisccheck pcan if stagetool >= zero, [ if omitseq$ = 1 & tseqno > 0, [ if tseqno = 2, n$ = t$ pbld, *n$, e$ pbld, *t$, "M6", ptoolcomm, e$ ] else, pbld, n$, *t$, "M6", ptoolcomm, e$ ] spaces$=0 if output_z = yes$, [ preadbuf5 if (opcode$ > 0 & opcode$ < 16) | opcode$ = 19, [ #n$, pspc, scomm_str, "CLEAR HEIGHT - ", *max_depth, scomm_end, e$ n$, pspc, scomm_str, "MAX DEPTH - ", *min_depth, scomm_end, e$ ] ] spaces$=sav_spc pstock if plane$ < 0 | opcode$ = 3 | opcode$ = 16, plane$ = 0 sav_absinc = absinc$ if wcstype > one, absinc$ = zero pindex if safe_index, [ if lock_codes = one & not(index) & rot_on_x, pbld, n$, *sunlock, sunlockcomm, e$ pbld, n$, pgear, e$ pcan1, pbld, n$, *sgcode, sgplane, [if not(index), sgabsinc, pwcs], pfspeedout, scoolant, pfcout, strcantext, e$ if lock_codes = one & not(index) & rot_on_x & cuttype = 0, pbld, n$, *slock, slockcomm, e$ if convert_rpd$ = one, [ gcode$ = one feed = maxfeedpm ipr_type = zero ] pbld, n$, sgcode, [if gcode$ = 1, sgfeed], pfxout, pfyout, [if gcode$ = 1, *feed], e$ ] else, [ if lock_codes = one & not(index) & rot_on_x, pbld, n$, *sunlock, sunlockcomm, e$ pbld, n$, pgear, e$ if convert_rpd$ = one, [ gcode$ = one feed = maxfeedpm ipr_type = zero ] pcan1, pbld, n$, *sgcode, sgplane, [if not(index), sgabsinc, pwcs], [if gcode$ = 1, sgfeed], pfcout, pfxout, pfyout, pfspeedout, scoolant, [if gcode$ = 1, *feed], strcantext, e$ if lock_codes = one & not(index) & rot_on_x & cuttype = 0, pbld, n$, *slock, slockcomm, e$ ] phsm1_on #must remain before G43 #pbld, n$, "G43", *tlngno$, pfzout, scoolant, pfspindleout, next_tool$, e$ #Set bias if absinc$ = zero, local_z = zabs - bias else, local_z = zinc - bias # pbld, n$, "G91", "G43", *tlngno$, *local_z, pfspindleout, next_tool$, e$ pbld, n$, "G92", pfzout, scoolant, e$ #pbld, n$, "G92", pfzout, e$ pcan2 pbld, n$, "G90", e$ #pcan2 #Added so M and G codes in canned text will output before phsm2_on phsm2_on #must remain after G43 sav_coolant = coolant$ if coolant$ = 1, sm09 = sm09_0 if coolant$ = 2, sm09 = sm09_1 if coolant$ = 3, sm09 = sm09_2 absinc$ = sav_absinc pcom_movea toolchng = zero c_msng$ #Single tool subprogram call ptool_sub_s # <------------------------------------------------tool sub start plast Exit point pretract #End of tool path, toolchange phsm_off sav_absinc = absinc$ absinc$ = one sav_coolant = coolant$ ptool_sub_e #<----------------------- tool sub end coolant$ = zero pbld, n$, strcantext, scoolant, e$ # if nextop$ = 1003, #Uncomment this line to leave coolant on until eof unless # [ # explicitely turned off through a canned text edit if all_cool_off, [ #all coolant off with a single off code here if coolant_on, pbld, n$, *sall_cool_off, e$ coolant_on = zero ] else, [ local_int = zero coolantx = zero while local_int < 20, [ coolantx = and(2^local_int, coolant_on) local_int = local_int + one if coolantx > zero, [ coolantx = local_int pbld, n$, scoolantx, e$ ] coolantx = zero ] coolant_on = zero ] # ] #cc_pos is reset in the toolchange here cc_pos$ = zero if convert_rpd$ = one, [ gcode$ = one feed = maxfeedpm ipr_type = zero ] else, gcode$ = zero #pbld, n$, sccomp, *sm05, psub_end_mny, e$ pbld, n$, sccomp, psub_end_mny, e$ pbld, n$, sgabsinc, sgcode, [if gcode$ = 1, sgfeed], *sg28, "Z0", "M19", [if gcode$ = 1, feed], scoolant, e$ #if lock_codes = one & rot_on_x, pbld, n$, *sunlock, sunlockcomm, e$ #pbld, n$, *sg28, "X0", "Y0", protretinc, e$ #if lock_codes = one & rot_on_x & cuttype = 0, pbld, n$, *slock, slockcomm, e$ if abs(fmtrnd(cabs)) > 360 & nextop$ <> 1003 & not(index), [ if lock_codes = one, pbld, n$, *sunlock, sunlockcomm, e$ rotretflg = 1 pbld, n$, `sg28, protretinc, e$ rotretflg = 0 if lock_codes = one & cuttype = 0, pbld, n$, *slock, slockcomm, e$ ] absinc$ = sav_absinc coolant$ = sav_coolant Here are the postblocks called psub_st_s$ #Header in sub level result = nwadrs(stro, sub_prg_no$) spaces$ = 0 sub_ext = sub_prg_no$ *sub_prg_no$," (", s_progname, *sub_ext, "..SP", ")", e$ [if scomm_sav <> snull, scomm_str, *scomm_sav, scomm_end], e$ #adding comment to the sub line makes it show up on the control spaces$ = sav_spc pbld, n$, sgabsinc, e$ result = force(gcode$,gcode$) psub_end_s$ #End in sub level spaces$ = 0 pbld, n$, "(", s_progname, *sub_ext, ")", e$ spaces$ = sav_spc n$, "M99", e$ prv_absinc$ = -1 # -------------------------------------------------------------------------- # Custom post blocks - Subprograms by tool # -------------------------------------------------------------------------- ptool_sub_s # Start Toolpath Sub if mi1$ = 1, [ pcust_call_s spaces$ = 0 result = workofs$ counter = sub_offsets - 1 while counter > 0, [ workofs$ = workofs$ + 1 pfbld, n$, pwcs, e$ pfbld, prpt_call_2, e$ counter = counter - 1 ] workofs$ = result !workofs$ subout$ = 1 psub_st_s$ pbld, n$, pfxout, pfyout, e$ ] spaces$ = sav_spc ptool_sub_e # End Toolpath Sub if mi1$ = 1, [ psub_end_s$ subout$ = 0 ] pdrlcst_sub_s # Start Custom Drill Sub if mi10$ = 0, [ pcust_call_s subout$ = 3 psub_st_s$ ] pdrlcst_sub_e # End Custom Drill Sub if mi10$ = 0, [ psub_end_s$ if mi1$ = 1, subout$ = 2 else, subout$ = 0 ] prpt_call_2 sub_prg_call = sub_prg_no$ pbld, n$, "M98 ", *sub_prg_call, e$
  9. Here's the switch to select the tooltable output format # -------------------------------------------------------------------------- # General Output Settings # -------------------------------------------------------------------------- hel_2100 : no$ #Acramatic 2100 style helical moves, 0=no, 1=yes force_dpts : no$ #Force XY output on all drilling lines including cycle call? haas : 0 #Haas style peck drill and extended offsets, 0=no, 1=yes wcstype : 2 #0 = G92 at start, 1 = G92 at toolchanges, 2 = G54, 3 = Off force_wcs : yes$ #Force WCS output at every toolchange? tool_table : 1 #Tool table, 0=no, 1=yes, 2=Predator VCNC, 3=MetaCut View Here's the logic that triggers the output # -------------------------------------------------------------------------- # Tooltable Output # -------------------------------------------------------------------------- pwrtt$ # Write tool table, scans entire file, null tools are negative if rotaxis$ > 0 | rotary_type$ > 0 | mill5$ <> 0, [ sav_rot_on_x = rot_on_x output_z = no$ ] if vmc = 0 & tlplnno$ <> 2, sav_rot_on_x = rot_on_x if vmc = 1 & tlplnno$ > 1, sav_rot_on_x = rot_on_x #sav_rot_on_x = rot_on_x #Uncomment this line to output rotary axis value even when it's not used t$ = wbuf(4,wc4) #Buffers out tool number values if tool_table = 1, ptooltable if tool_table = 2, ppredtool # <----------------Predator tooltable if tool_table = 3, pmetatool # <----------------Metacut tooltable if t$ >= zero, tcnt = tcnt + one ptravel pwritbuf5 if use_g10, pwritbuf9
  10. After giving your 2nd post another read, I'm inclined to think that your oversized bore problem is more likely an insert problem. Sometimes what looks like normal wear on an insert is causing a "built up edge" causing an oversize cut, or a rake angle change causing a change in the amount of and / or direction of deflection. It's a more likely scenario if this is across the board as you say. I'd rule out the chip problem in one machine first by cleaning and filling all the tool pockets. Then throughout a full shift, have the operator monitor the bore sizes noting the degee of wear on the insert, finish achieved on the part, and the # of cuts the insert has made. Give him a pen, pad of paper, and a profilometer to record the results. M00 a tool check point after the bore is cut and try to catch the oversize bore right after it's been cut, but before the tool change. Check for runout, look for that chip and pull the insert. Mark the edge that cut big and set it aside. A pattern is bound to appear. Assuming feeds and speeds are dialed in or close, more than likely, a change in insert geometry, grade, or frequency of insert change is all you need to change to solve your problem. JM2C
  11. Maybe one on the simplest solutions to keep chips out of the spindle: Keep all of your tool pockets clean and full! The same goes for all moving parts within your tool changer. Arm, door, etc. Edit: Usually the culprit is atomized coolant condensing in empty tool pots. This dries and thickens and will let a stray chip stick in the pot. Eventually the chip will get turned around and the dried coolant will help it stick to a tool holder, That's usually how they get in the spindle taper. Chips can't easliy get into an occupied tool pot, and neither can the coolant mist. Been working for me for years. As for test cuts, I'll use one for a first piece and at tool or insert changes/indexes.
  12. +1 Do it once and be done with it. I have to constantly change machines and repost here, so a prompt would drive me nuts.
  13. First we need to define an error message. Do a search through your post for "error" and find a section that looks like this: # -------------------------------------------------------------------------- # 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 ('wcstype') DOES NOT SUPPORT TRANSFORM SUBPROGRAM" ssubprgerror : "ERROR - TOOL SUBS (REPS) ('mi1) DO NOT SUPPORT TRANSFORM SUBPROGRAMS - SET mi1$ TO ZERO AND REPOST" scdsubprgerror : "ERROR - CUSTOM DRILL SUBS ('mi10) DO NOT SUPPORT TRANSFORM SUBPROGRAMS - SET mi10$ TO ZERO AND REPOST" sprognoerror : "ERROR - PROGRAM NUMBER CANNOT BE ZERO" sprogfmterror : "ERROR - NCI NAME MUST BE FORMATTED AS 5 SPACE DELIMITED FIELDS CONTAINING 'REV' AND 'OP' Example:'CC33042 REV 2 OP 1'" sprgnerror : "ERROR - SUBPROGRAM NUMBER MATCHES THE MAIN PROGRAM NUMBER" scompwarn : "WARNING - CUTTER COMP APPLIED ON ARC MOVE" smiscerror : "WARNING - MISC VALUES SET TO POST DEFAULT FOR CURRENT OPERATION" srotaxerror : "ERROR - MORE THAN 1 ROTARY AXIS DETECTED IN SELECTED AXIS COMBINATION - OUTPUT MAY BE INVALID" swriteopserror : "ERROR - WRITE NC OPERATION INFORMATION MUST BE ENABLED IN CONTROL DEFINITION - SET AND REPOST" sxaxiswarn : "ERROR - SELECT MACHINE ACHIEVABLE TOOLPLANE WITH X-AXIS ALONG MACHINE X - SET AND REPOST" syaxiswarn : "ERROR - SELECT MACHINE ACHIEVABLE TOOLPLANE WITH Y-AXIS ALONG MACHINE Y - SET AND REPOST" szaxiswarn : "ERROR - SELECT MACHINE ACHIEVABLE TOOLPLANE WITH Y-AXIS ALONG MACHINE Y - SET AND REPOST" srotlimwarn : "WARNING - ROTARY LIMITS EXCEEDED (CANCEL TO EXIT)" saxissuberror1 : "ERROR - AXIS SUBSTITUTION IS SETUP FOR HMC WITH -Y ZERO POSITION (PLANES 2,5,3,6)" saxissuberror2 : "ERROR - AXIS SUBSTITUTION IS SETUP FOR VMC WITH +Z ZERO POSITION (PLANES 1,2)" swcserror : "ERROR - WORK OFFSET NUMBER OUT OF RANGE" Let's add a new one for this example. stool_length_error : "ERROR - TOOL LENGTH OFFSET NUMBER IS ZERO" Now look for the G43 output lines in your post. Usually there are two lines. One will be in ptlchg_com, and one in ptlchg0$. Here we need to test for the condition to warn against, and trigger a warning message. pbld, n$, "G43", *tlngno$, pfzout, scoolant, pfspindleout, next_tool$, e$ if tlngno$ = 0, [ result = mprint(stool_length_error) exitpost$ ] HTH
  14. Don't enter a zero in # of rough passes in multi-passes or your depth cuts will be skipped.
  15. I haven't seen this problem in particular, but I have seen "string select table out of range" errors generated in a stock post as well as the mpmaster post. The culprit was the video driver. Who would have guessed? Windows update burned me. Now I keep it turned off. rocheey1, If you're using a Quadro card and have the latest driver, you might want to roll back to the version recommended on the Solidworks site. I know it doesn't seem related, but you'd be suprised. HTH Btw - What are you running for a video card and what video driver version?
  16. Try out the sort circles c-hook. It sorts by diameter , changes color and level, then names the level as the diameter, for each diameter. Sort Circles X5 Sort Circles X4
  17. ftp://ftp.mastercam....cumentation.pdf Right-click...save as...
  18. Neurosis - Forgive my ignorance, I had considered the "X-coolant" issue a problem with the tool library, (can't save coolant settings to the tool). It is indeed a coolant issue. The root of the problem is the tool library though.
  19. What's not working with X-style coolant? I'm using it just fine. I have it set in my op defaults as a matter of fact, so I don't have to set my flood and thru coolant for every tool. Btw - We(Beta Sites) are aware of the Beta issues and can't discuss them in the main forum without breaking the Beta agreement, so don't be suprised when you don't get a straight answer. We're still waiting for Webby to put up the Beta forum, so it's very hard for us to get together on issues right now.
  20. I can tell you that the day will end in "y".

Join us!

eMastercam - your online source for all things Mastercam.

Together, we are the strongest Mastercam community on the web with over 56,000 members, and our online store offers a wide selection of training materials for all applications and skill levels.

Follow us

×
×
  • Create New...