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

About Rob @ Target Machine

  • Birthday 09/18/1970

Uncategorized

  • Location
    Beverly, MA

Recent Profile Visitors

2,271 profile views

Rob @ Target Machine's Achievements

Newbie

Newbie (1/14)

  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

3

Reputation

  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.

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...