hexagon logo

CMM Programming Good Practices

I'm training a CMM Operator to become a beginner CMM programmer and he's making the same mistakes I did when starting out and it got me wondering: what are some of the standard CMM programming practices you all follow (either instructed to or from experience)?

I'll share a few of mine:

- Way prior to a new project kickoff, make sure to review all of the documentation (mainly CAD models and prints) to ensure everything on them is clarified by the designer/customer to avoid frustration and confusion down the line.

- After writing and running a program for the first time, check the reported measurements. If all is good, go back and refine the program to make it faster and more efficient, especially for high production parts.

- Create a rock solid manual and DCC alignment so that any operator can open the program and understand how to align it with minimal supervision, especially if the machine is in Operator mode.
  • Make sure you have the current rev print and/or model
  • Here are some of the things I had done starting out.

    I always review my print and create a plan for each dimension that I need to measure and the general flow of the program. I used to makes notes on the print for my plan but over time I stopped doing that. Then I ensure my setup will allow me to reach as many of the dims as possible if not all of them.

    I calibrate all of my probes before I run my program unless I have a whole lot. In that case I rely on my not calibrated in the last 30 days notification.

    If I had a physical part I would run each feature as I created it to ensure it did exactly as intended. Prevents any surprises when running the whole program.

    When running a program I wasn't familiar with or just created I would put a break point on each Tip articulation to ensure the probe wouldn't slam into the part or table.

    When setting my part up manually 90% of the time I use an iterative alignment due to simplicity and it removes any need to transform the CAD. I then follow up with a level rotate origin DCC alignment.

    Make sure you fully understand what measurements are being requested and if you don't... ask. Never assume.

    Once the program is complete and you have data take time to review it and make sense of it. Understand why each value was reported (mainly profiles/positions/parallelism etc.) This step is a huge in becoming an effective programmer.
  • Always make sure you have a good solid alignment. Garbage alignment will lead to garbage numbers.

    Making sure you level, rotate, and set X, Y, and Z origins to PNT31 couldn't hurt either. Right, ?
  • The most fundamental of all alignment practices. I'm glad you brought it up.
  • Always make sure you have a good solid alignment. Garbage alignment will lead to garbage numbers.


    Absolutely! Be sure to put a lot of effort into making a good set of alignments. It is easy to get impatient and want to get into measuring features, but you got to have a good alignment or you are just wasting your time.

    The most beneficial practice I have is planning. It can be rough when you are in a time crunch and bosses want to see you making progress, but I find it most important to take the time to fully review all the documents and inspection requirements for the part. Then consider the best way to fixture it. Then consider the best way to align it. On a complex part it might be hours before I have anything tangible to show for my efforts, but if I did all the planning right it goes pretty fast from there. I have seen too many people just want to jump into programming and later waste so much time fixing things, re-doing things, starting over, etc. and ultimately ending up with a program that needs to be constantly supervised by the CMM operator and doesn't give reliable results.

    That being said, I'm going to contradict myself a bit and say that the best thing for a beginner is to just jump into it and try a bit of everything. Really get a feel for the software and how everything works. Try different types of alignments. See firsthand what works and what doesn't work. It gives a person a much better ability to troubleshoot.
  • Programming efforts need to be relative to what the routine's intended purpose is. Some of this is static for an organization, but can definitely vary by company or industry.

    Some things to consider before even pressing a single keystroke:
    -Is it for a one-off part or short production run?
    -Is it going to require MSA and/or validation?
    -Is it for high production/reliability?
    -Is there a way to consolidate or parametrically adapt method of measure for multiple parts or phases of the parts?
    -What are the common defects or failure modes of the part?
    -Who/what skillset is going to be physically executing the routine?
    -How does data need to be documented, controlled or exhibited?


  • Absolutely! Be sure to put a lot of effort into making a good set of alignments. It is easy to get impatient and want to get into measuring features, but you got to have a good alignment or you are just wasting your time.

    The most beneficial practice I have is planning. It can be rough when you are in a time crunch and bosses want to see you making progress, but I find it most important to take the time to fully review all the documents and inspection requirements for the part. Then consider the best way to fixture it. Then consider the best way to align it. On a complex part it might be hours before I have anything tangible to show for my efforts, but if I did all the planning right it goes pretty fast from there. I have seen too many people just want to jump into programming and later waste so much time fixing things, re-doing things, starting over, etc. and ultimately ending up with a program that needs to be constantly supervised by the CMM operator and doesn't give reliable results.

    That being said, I'm going to contradict myself a bit and say that the best thing for a beginner is to just jump into it and try a bit of everything. Really get a feel for the software and how everything works. Try different types of alignments. See firsthand what works and what doesn't work. It gives a person a much better ability to troubleshoot.


    Absolutely - the best way to learn the Demon is to just jump right into the deep end of the pool and see if you can swim. It also helps to guide the new programmer by giving them a few goals. For example, I'm having this new guy program for the cylindrical base with a threaded hole (it's for screwing the qualification sphere onto). I requested that he find:

    1. The height of the base from the top face to the Rayco fixture;
    2. the circularity of the cylindrical base at 3mm increments starting from the top face.

    It's a very straightforward project, but it helps me find out where the new guy's weak points are and hone in on these, talk about the lessons learned, improve the program before moving onto some more complex parts/programming.
  • ooh other big contributors are:

    What's the company's current practices? Are they sufficient?
    Do you have a template made? why not?
  • Programming efforts need to be relative to what the routine's intended purpose is. Some of this is static for an organization, but can definitely vary by company or industry.

    Some things to consider before even pressing a single keystroke:
    -Is it for a one-off part or short production run?
    -Is it going to require MSA and/or validation?
    -Is it for high production/reliability?
    -Is there a way to consolidate or parametrically adapt method of measure for multiple parts or phases of the parts?
    -What are the common defects or failure modes of the part?
    -Who/what skillset is going to be physically executing the routine?
    -How does data need to be documented, controlled or exhibited?


    Would you say that it is important to learn the function and fit of the parts prior to programming as well? I find that it helps me understand the print better and helps me hone in on exactly how to approach the programming aspect of a project.
  • I think having a clear understanding of surface vector directions and which work plane to use saves a lot of confusion for a beginner.