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:

Wrong axis order on code


Recommended Posts

Hi everyone, 

I'm new in this community and i need your help with an issue i have, i work with a 5 axis DMS router with fagor 8065m on mastercam 2018, recently we adquire another DMS machine but it has fagor 8055m, all axes and equipment are the same and when i post works the machine can run them pretty good, but when i do 5 axis complex toolpaths sometime mastercam post the B and C axes on wrong order, in the 8065m theres no problem with that but with the 8055m the machine stops and alarms because of this, does any one know on what part of the post is declared the output format of the controled movement of axis? 

Right know i'm changing manually the order of the cordinates from CXXX.XXX BXXX.XXX to BXXX.XXX CXXX.XXX

I will really apreciatte if someone can help me.

Link to comment
Share on other sites

I have made some modifications to this post to correct some issues we use to have but i have never seen on the post a part that declares the order of the axis on the movements, this post was adcquired with the mastercam license when the first machine arrived i wasn't here on that time so i don't know who's the person who wrote this post or to who ask for help.

Link to comment
Share on other sites
1 hour ago, Jesus Pacheco said:

I have made some modifications to this post to correct some issues we use to have but i have never seen on the post a part that declares the order of the axis on the movements, this post was adcquired with the mastercam license when the first machine arrived i wasn't here on that time so i don't know who's the person who wrote this post or to who ask for help.

You may have a post from a 3rd party, such as In House Solutions or Postability. If that is the case & your company has maintenance, you may be able to have them fix the post as part of the maintenance.

Link to comment
Share on other sites
37 minutes ago, So not a Guru said:

You may have a post from a 3rd party, such as In House Solutions or Postability. If that is the case & your company has maintenance, you may be able to have them fix the post as part of the maintenance.

I have checked that but the company decided not to pay the anual maintenance fee last year due to a budget reduction for the Covid 

Link to comment
Share on other sites
19 hours ago, Jesus Pacheco said:

Hi everyone, 

I'm new in this community and i need your help with an issue i have, i work with a 5 axis DMS router with fagor 8065m on mastercam 2018, recently we adquire another DMS machine but it has fagor 8055m, all axes and equipment are the same and when i post works the machine can run them pretty good, but when i do 5 axis complex toolpaths sometime mastercam post the B and C axes on wrong order, in the 8065m theres no problem with that but with the 8055m the machine stops and alarms because of this, does any one know on what part of the post is declared the output format of the controled movement of axis? 

Right know i'm changing manually the order of the cordinates from CXXX.XXX BXXX.XXX to BXXX.XXX CXXX.XXX

I will really apreciatte if someone can help me.

I would really depend on what your "base post" is that you are starting from. If this was a purchased Post, from a 3rd Party, then all bets are off.

If your Post happened to be based on the Generic Fanuc 5X Mill Post, then swapping the output variables is a piece of cake (when you know how, of course).

Here is a sample 'output line' of code from the Gen Fan 5X Mill Post:

          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *yout, *p_out, *s_out,
            *speed, *spindle, pgear, strcantext, e$

In this case, the variables are:

p_out

s_out

Which stand for "primary" and "secondary" rotary axes.

All you would have to do is reverse the order, like so:

          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *yout, *s_out, *p_out,
            *speed, *spindle, pgear, strcantext, e$

Keep in mind, you would need to do this in any place where the Post was outputting the codes.

So I would search through the Post for [p_out] and [s_out], without the square brackets: no [ ].

Wherever you find "p_out" as part of an output line, I would reverse the 'p_out' and 's_out' variables.

You can tell it is an output line, by the fact that each parameter is separated by a comma (,), and because the line ends with (e$).

In Generic Fanuc 5X Mill, here are the locations you would have to change:

p_goto_strt_tl  #Make the tool start up at toolchange
      pfd_shft_inc
      psign_ang_out

      ##### Custom changes allowed below #####

      #Unlock rotary axis
      if use_clamp,
        [
        p_lock = zero
        s_lock = zero
        pbld, n$, s_slock, e$
        pbld, n$, s_plock, e$
        ]
      if stagetool <= one, pbld, n$, *t$, "M6", e$

      if n_tpln_mch > m_one, #Toolplane mapping mode
        [
        #Enter your mapping scheme here...
        pg68_map
        pbld, n$, "G43", *tlngno$, *zabs_s, e$
        pbld, n$, *sg00, pwcs, "X0.", "Y0.", *zabs_s, e$
        pcan1, pbld, n$, *sgcode, *xabs_s, *yabs_s, *p_out, *s_out, strcantext, e$
        ]
      else, #5 axis and regular mode ( n_tpln_mch = -2)
        [
        if cut_ra_head & use_g45, #Swap xout and yout based on offset axis
          [
          tloffno2 = tlngno$ + g45_of_add
          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *yout, *p_out, *s_out,
            *speed, *spindle, pgear, strcantext, e$
          pbld, n$, "G45", *tloffno2, *xout, e$
          ]
        else,
          [
          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *xout, *yout, *p_out, *s_out,
            *speed, *spindle, pgear, strcantext, e$
          ]
        ]
      if stagetool = one, pbld, n$, *next_tool$, e$

      #Lock rotary axis
      if use_clamp & (cuttype = zero | opcode$ = three | opcode$ = 16),
        [
        p_lock = one
        s_lock = one
        pbld, n$, s_slock, e$
        pbld, n$, s_plock, e$
        ]

      if n_tpln_mch > m_one, #Toolplane mapping mode
        [
        #Enter your mapping scheme here...
        pg68
        pbld, n$, *xout, *yout, *zout, pscool, e$
        ]
      else, pbld, n$, "G43", *tlngno$, *zout, pscool, e$

      ##### Stop custom changes #####

      if top_map, !n_tpln_mch
      psign_ang_res
      pcom_movea
      #locally set delta for feed calculation
      p_dlt_ang = zero
      s_dlt_ang = zero
      toolchng = zero

p_goto_strt_ntl #Make the tool start up at null toolchange
      if workofs$ <> prv_workofs$
        | (top_map & (prv_n_tpln_mch <> n_tpln_mch
        | prv_p_abs <> fmtrnd(p_abs) | prv_s_abs <> fmtrnd(s_abs))),
        [
        pfd_shft_inc
        sav_absinc = absinc$
        absinc$ = zero
        p_absinc_chng
        psign_ang_out

      ##### Custom changes allowed below #####

        if n_tpln_mch > m_one, #Toolplane mapping mode
          [
          #Enter your mapping scheme here...
          pg68_map
          pbld, n$, pwcs, sgabsinc, *xabs_s, *yabs_s, *zabs_s, *p_out, *s_out, e$
          pg68
          pbld, n$, *xout, *yout, *zout, e$
          ]
        else, pbld, n$, pwcs, sgabsinc, *xout, *yout, *zout, *p_out, *s_out, e$

      ##### Stop custom changes #####

        psign_ang_res
        pe_inc_calc
        absinc$ = sav_absinc
        ps_inc_calc #calls p_absinc_chng
        pcom_movea
        ]
      else, p_goto_pos
      if top_map, !n_tpln_mch

      #locally set delta for feed calculation
      p_dlt_ang = zero
      s_dlt_ang = zero

 


protretinc      #Reset the C axis revolution counter
      if frc_cinit,
        [
        p_abs = zero
        p_inc = zero
        s_abs = zero
        s_inc = zero
        pset_dlt_to_abs
        if use_clamp,  #Unlock rotary axis
          [
          p_lock = zero
          s_lock = zero
          pbld, n$, s_slock, e$
          pbld, n$, s_plock, e$
          ]
        pbld, n$, *sg28, p_out, s_out, e$
        p_wnd_ang = zero
        s_wnd_ang = zero
        !p_wnd_ang, !s_wnd_ang
        ]

 


prapidout       #Output to NC of linear movement - rapid
      pcan1, pbld, n$, `sgcode, sgplane, sgabsinc, pccdia,
        xout, yout, zout, p_out, s_out, strcantext, pscool, e$

plinout         #Output to NC of linear movement - feed
      punclamp
      pcan1, pbld, n$, `sgcode, sgplane, sgabsinc, `sgfeed, pccdia,
        xout, yout, zout, p_out, s_out, `feed, strcantext, pscool, e$
      if nc_lout$ <> m_one & feed = zero, psfeederror
      pclamp

pcirout         #Output to NC of circular interpolation
      sav_gcode = gcode$
      parc_setup
      pcan1, pbld, n$, `sgcode, sgplane, sgabsinc, `sgfeed, pccdia,
        xout, yout, zout, p_out, s_out, parcijk, `feed, strcantext, pscool, e$
      gcode$ = sav_gcode
      if nc_lout$ <> m_one & feed = zero, psfeederror
ppos_cax_lin    #Position the rotary axis before move - rapid
      if p_inc | s_inc,
        [
        sav_gcode = gcode$
        gcode$ = zero
        punclamp
        pbld, n$, sgcode, p_out, s_out, e$
        pclamp
        !p_abs, !s_abs
        ps_cinc_calc
        gcode$ = sav_gcode
        ]

 

prdrlout        #Output drill position
      psign_ang_out
      if plane_2 = zero, #XY
        [
        if gcode$ = 81,
          [
          result = force(drlz, drlz)
          result = force(refhtoutz, refhtoutz)
          ]
        xout, yout, drlz, p_out, s_out, refhtoutz
        ]
      else,
        [
        if plane_2 = one, #YZ
          [
          if gcode$ = 81,
            [
            result = force(drlx, drlx)
            result = force(refhtoutx, refhtoutx)
            ]
          drlx, yout, zout, p_out, s_out, refhtoutx
          ]
        else, #XZ
          [
          if gcode$ = 81,
            [
            result = force(drly, drly)
            result = force(refhtouty, refhtouty)
            ]
          xout, drly, zout, p_out, s_out, refhtouty
          ]
        ]
      !refhtoutx, !refhtouty, !refhtoutz, !drlx, !drly, !drlz

 

 

 

  • Like 2
Link to comment
Share on other sites
4 hours ago, Colin Gilchrist said:

I would really depend on what your "base post" is that you are starting from. If this was a purchased Post, from a 3rd Party, then all bets are off.

If your Post happened to be based on the Generic Fanuc 5X Mill Post, then swapping the output variables is a piece of cake (when you know how, of course).

Here is a sample 'output line' of code from the Gen Fan 5X Mill Post:


          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *yout, *p_out, *s_out,
            *speed, *spindle, pgear, strcantext, e$

In this case, the variables are:

p_out

s_out

Which stand for "primary" and "secondary" rotary axes.

All you would have to do is reverse the order, like so:


          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *yout, *s_out, *p_out,
            *speed, *spindle, pgear, strcantext, e$

Keep in mind, you would need to do this in any place where the Post was outputting the codes.

So I would search through the Post for [p_out] and [s_out], without the square brackets: no [ ].

Wherever you find "p_out" as part of an output line, I would reverse the 'p_out' and 's_out' variables.

You can tell it is an output line, by the fact that each parameter is separated by a comma (,), and because the line ends with (e$).

In Generic Fanuc 5X Mill, here are the locations you would have to change:


p_goto_strt_tl  #Make the tool start up at toolchange
      pfd_shft_inc
      psign_ang_out

      ##### Custom changes allowed below #####

      #Unlock rotary axis
      if use_clamp,
        [
        p_lock = zero
        s_lock = zero
        pbld, n$, s_slock, e$
        pbld, n$, s_plock, e$
        ]
      if stagetool <= one, pbld, n$, *t$, "M6", e$

      if n_tpln_mch > m_one, #Toolplane mapping mode
        [
        #Enter your mapping scheme here...
        pg68_map
        pbld, n$, "G43", *tlngno$, *zabs_s, e$
        pbld, n$, *sg00, pwcs, "X0.", "Y0.", *zabs_s, e$
        pcan1, pbld, n$, *sgcode, *xabs_s, *yabs_s, *p_out, *s_out, strcantext, e$
        ]
      else, #5 axis and regular mode ( n_tpln_mch = -2)
        [
        if cut_ra_head & use_g45, #Swap xout and yout based on offset axis
          [
          tloffno2 = tlngno$ + g45_of_add
          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *yout, *p_out, *s_out,
            *speed, *spindle, pgear, strcantext, e$
          pbld, n$, "G45", *tloffno2, *xout, e$
          ]
        else,
          [
          pcan1, pbld, n$, *sgcode, pwcs, *sgabsinc, *xout, *yout, *p_out, *s_out,
            *speed, *spindle, pgear, strcantext, e$
          ]
        ]
      if stagetool = one, pbld, n$, *next_tool$, e$

      #Lock rotary axis
      if use_clamp & (cuttype = zero | opcode$ = three | opcode$ = 16),
        [
        p_lock = one
        s_lock = one
        pbld, n$, s_slock, e$
        pbld, n$, s_plock, e$
        ]

      if n_tpln_mch > m_one, #Toolplane mapping mode
        [
        #Enter your mapping scheme here...
        pg68
        pbld, n$, *xout, *yout, *zout, pscool, e$
        ]
      else, pbld, n$, "G43", *tlngno$, *zout, pscool, e$

      ##### Stop custom changes #####

      if top_map, !n_tpln_mch
      psign_ang_res
      pcom_movea
      #locally set delta for feed calculation
      p_dlt_ang = zero
      s_dlt_ang = zero
      toolchng = zero

p_goto_strt_ntl #Make the tool start up at null toolchange
      if workofs$ <> prv_workofs$
        | (top_map & (prv_n_tpln_mch <> n_tpln_mch
        | prv_p_abs <> fmtrnd(p_abs) | prv_s_abs <> fmtrnd(s_abs))),
        [
        pfd_shft_inc
        sav_absinc = absinc$
        absinc$ = zero
        p_absinc_chng
        psign_ang_out

      ##### Custom changes allowed below #####

        if n_tpln_mch > m_one, #Toolplane mapping mode
          [
          #Enter your mapping scheme here...
          pg68_map
          pbld, n$, pwcs, sgabsinc, *xabs_s, *yabs_s, *zabs_s, *p_out, *s_out, e$
          pg68
          pbld, n$, *xout, *yout, *zout, e$
          ]
        else, pbld, n$, pwcs, sgabsinc, *xout, *yout, *zout, *p_out, *s_out, e$

      ##### Stop custom changes #####

        psign_ang_res
        pe_inc_calc
        absinc$ = sav_absinc
        ps_inc_calc #calls p_absinc_chng
        pcom_movea
        ]
      else, p_goto_pos
      if top_map, !n_tpln_mch

      #locally set delta for feed calculation
      p_dlt_ang = zero
      s_dlt_ang = zero

 



protretinc      #Reset the C axis revolution counter
      if frc_cinit,
        [
        p_abs = zero
        p_inc = zero
        s_abs = zero
        s_inc = zero
        pset_dlt_to_abs
        if use_clamp,  #Unlock rotary axis
          [
          p_lock = zero
          s_lock = zero
          pbld, n$, s_slock, e$
          pbld, n$, s_plock, e$
          ]
        pbld, n$, *sg28, p_out, s_out, e$
        p_wnd_ang = zero
        s_wnd_ang = zero
        !p_wnd_ang, !s_wnd_ang
        ]

 



prapidout       #Output to NC of linear movement - rapid
      pcan1, pbld, n$, `sgcode, sgplane, sgabsinc, pccdia,
        xout, yout, zout, p_out, s_out, strcantext, pscool, e$

plinout         #Output to NC of linear movement - feed
      punclamp
      pcan1, pbld, n$, `sgcode, sgplane, sgabsinc, `sgfeed, pccdia,
        xout, yout, zout, p_out, s_out, `feed, strcantext, pscool, e$
      if nc_lout$ <> m_one & feed = zero, psfeederror
      pclamp

pcirout         #Output to NC of circular interpolation
      sav_gcode = gcode$
      parc_setup
      pcan1, pbld, n$, `sgcode, sgplane, sgabsinc, `sgfeed, pccdia,
        xout, yout, zout, p_out, s_out, parcijk, `feed, strcantext, pscool, e$
      gcode$ = sav_gcode
      if nc_lout$ <> m_one & feed = zero, psfeederror

ppos_cax_lin    #Position the rotary axis before move - rapid
      if p_inc | s_inc,
        [
        sav_gcode = gcode$
        gcode$ = zero
        punclamp
        pbld, n$, sgcode, p_out, s_out, e$
        pclamp
        !p_abs, !s_abs
        ps_cinc_calc
        gcode$ = sav_gcode
        ]

 


prdrlout        #Output drill position
      psign_ang_out
      if plane_2 = zero, #XY
        [
        if gcode$ = 81,
          [
          result = force(drlz, drlz)
          result = force(refhtoutz, refhtoutz)
          ]
        xout, yout, drlz, p_out, s_out, refhtoutz
        ]
      else,
        [
        if plane_2 = one, #YZ
          [
          if gcode$ = 81,
            [
            result = force(drlx, drlx)
            result = force(refhtoutx, refhtoutx)
            ]
          drlx, yout, zout, p_out, s_out, refhtoutx
          ]
        else, #XZ
          [
          if gcode$ = 81,
            [
            result = force(drly, drly)
            result = force(refhtouty, refhtouty)
            ]
          xout, drly, zout, p_out, s_out, refhtouty
          ]
        ]
      !refhtoutx, !refhtouty, !refhtoutz, !drlx, !drly, !drlz

Thanks Colin, i did it and try as you said changing the position of p_out and s_out for every line of code on mi post, but didn´t work, for what i see on coments written on the post this was a generic Fanuc 5x post that was adjusted for Fagor 8065, but what i can´t see on my post is the section of "prapidout" and "plinout" code could they be missing on the post and that´s why the mastercam isn´t giving me the correct order of the axis for the movemets?

 

 

 

Link to comment
Share on other sites
6 hours ago, jjones61 said:

If you bought your latest  machine new from DMS you should have gotten a new post with it. I would reach out to DMS and see if they won't help you. If they don't let me know and I'll help you work through it.

we didn´t get it from the manufacturer, this machine was moved from a plant that was shut down last year.

Link to comment
Share on other sites
On 3/12/2021 at 7:53 PM, Jesus Pacheco said:

we didn´t get it from the manufacturer, this machine was moved from a plant that was shut down last year.

Well, that shoots that idea! 

Unfortunately my next idea was to do what Colin suggested so if that didn't work I'm a little perplexed. (Of course most days that doesn't take much! lol)

I don't think the prapidout or the plinout should affect your rotary axis order but hey I've been wrong before. 

I can't promise you that I can fix it but I'll be happy to take a look at your post and see what I can come up with if you want.

Link to comment
Share on other sites
18 hours ago, jjones61 said:

Well, that shoots that idea! 

Unfortunately my next idea was to do what Colin suggested so if that didn't work I'm a little perplexed. (Of course most days that doesn't take much! lol)

I don't think the prapidout or the plinout should affect your rotary axis order but hey I've been wrong before. 

I can't promise you that I can fix it but I'll be happy to take a look at your post and see what I can come up with if you want.

The answer is that he is using a customized Post, and those sections have been hidden by whomever wrote his Post.

You need to reach out to the Post Developer, and will either need a Maintenance Agreement, or will need to be sure that your company made a legal Post purchase.

Link to comment
Share on other sites
2 hours ago, Colin Gilchrist said:

The answer is that he is using a customized Post, and those sections have been hidden by whomever wrote his Post.

You need to reach out to the Post Developer, and will either need a Maintenance Agreement, or will need to be sure that your company made a legal Post purchase.

Yeah, that was kind of my assumption...he said it was a generic Fanuc 5 axis post but that didn't make a lot of sense to me...you would have to do a lot of editing to convert a Fanuc post to a Fagor post. I'm sure it can be done, but that's a lot of unnecessary work when there are perfectly good Fagor posts available.

My guess is it's Postabilty post since that's what both our reseller and DMS gave me.

 

On 3/12/2021 at 7:53 PM, Jesus Pacheco said:

we didn´t get it from the manufacturer, this machine was moved from a plant that was shut down last year.

If this is the case I would try  to find out what happened to the post the previous programmer was using...

 

Link to comment
Share on other sites
12 hours ago, jjones61 said:

Yeah, that was kind of my assumption...he said it was a generic Fanuc 5 axis post but that didn't make a lot of sense to me...you would have to do a lot of editing to convert a Fanuc post to a Fagor post. I'm sure it can be done, but that's a lot of unnecessary work when there are perfectly good Fagor posts available.

My guess is it's Postabilty post since that's what both our reseller and DMS gave me.

 

If this is the case I would try  to find out what happened to the post the previous programmer was using...

 

Thanks for your help, here´s the post i´m using i assumed it was a generic post that was adjusted because of the comments wrote on it but it may be as you said from some developer.

The old plant that had the machine has the post that came with it but it´s used on BobCad Cam and we don´t have license for that software.

DMS_5AXIS_FAGOR_8055 MOD.pst

Link to comment
Share on other sites
7 hours ago, Jesus Pacheco said:

Thanks for your help, here´s the post i´m using i assumed it was a generic post that was adjusted because of the comments wrote on it but it may be as you said from some developer.

The old plant that had the machine has the post that came with it but it´s used on BobCad Cam and we don´t have license for that software.

DMS_5AXIS_FAGOR_8055 MOD.pst

Jesus

1st and foremost, make a backup of your post BEFORE making any changes

2nd, make a backup of your post before making any changes. :)

You could try using the replace function in Code Expert to replace all of the instances of this:

*p_out, *s_out

with this:

*s_out, *p_out

 

Link to comment
Share on other sites
13 hours ago, Jesus Pacheco said:

Thanks for your help, here´s the post i´m using i assumed it was a generic post that was adjusted because of the comments wrote on it but it may be as you said from some developer.

The old plant that had the machine has the post that came with it but it´s used on BobCad Cam and we don´t have license for that software.

DMS_5AXIS_FAGOR_8055 MOD.pst

I took a quick look at that post and it's definitely a binned post (As usual, Colin was right 😁). Unfortunately that pretty much means you're going to have to contact your reseller.

And BobCad??  Sorry, that brings back bad memories...I used BobCad for 3 years and while it's useable, it's most certainly NOT MC! 

Link to comment
Share on other sites
8 hours ago, So not a Guru said:

Jesus

1st and foremost, make a backup of your post BEFORE making any changes

2nd, make a backup of your post before making any changes. :)

You could try using the replace function in Code Expert to replace all of the instances of this:


*p_out, *s_out

with this:


*s_out, *p_out

 

This will work for "Tool Change" and "Null Tool Change" output, and a few other places, but none of the "linear", "rapid", or "circular" output is exposed. So these changes must be done through "CCCS", who is the person/company that wrote your post originally.

# --------------------------------------------------------------------------
# Revision log:
# --------------------------------------------------------------------------
# Programmers Note:
# CNC 07/09/05  -  Initial post update for Mastercam X.
# CNC 06/26/06  -  Initial post update for Mastercam X2.
# CNC 11/02/07  -  Added prv_shftdrl$ = zero
# CNC 08/05/08  -  X3 release - no changes made
# CNC 03/05/09  -  Initial post update for Mastercam X4
# CNC 05/06/09  -  Modified rotary axis clamping
# CNC 06/18/09  -  Correct the can text order of Stop and Ostop
# CCCS 05/31/12 -  Setup for DMS router with Fagor, gs
# CCCS 08/15/12 -  Adjustments to tool list and output formats, gs
# CCCS 12/23/13 -  Adjusted Work offset callout, gs
# CCCS 10/30/14 -  Compiled for SIM#s N09524, gs  Add's 11/6/14 mr

 

Link to comment
Share on other sites
13 hours ago, So not a Guru said:

Jesus

1st and foremost, make a backup of your post BEFORE making any changes

2nd, make a backup of your post before making any changes. :)

You could try using the replace function in Code Expert to replace all of the instances of this:


*p_out, *s_out

with this:


*s_out, *p_out

 

I already try it but didn't work, i have been  talking with the staff on the company but they don't want to spend on the anual fee yet as we are having problems with low customers orders, i will keep trying to fix this myself 

Thanks for everyones help. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

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