Contact Haas

Haas Automation, Inc.
2800 Sturgis Rd.
Oxnard, CA 93030

Phone: 805-278-1800
Toll Free (U.S. Calls Only):

Find a Distributor
Questions or Comments?

Haas Automation Inc
Haas VMC Machines

Technical Forum

Do you have a question or comment concerning the operation of your Haas machine? Do you need help with a tough programming task, or want to know a better way to produce your parts? Maybe you have a better way to do something and want to share it. Check out the Technical Forum menu below for the right solution - or the right link!


Haas Resource Center


Get the latest Haas Automation has to offer!
The Haas Resource Center website is here to make sure you stay up-to-date on the latest Tip & Tricks. Your Source For Routine Maintenance, "How To", Manuals & Documentation, Repairs & Service and Drawings & Diagrams.

Check it Out: Haas Resource Center


3D Tips & Tricks


By John Nelson, Haas Applications Manager
All of my experience in 3-D programming has been with Mastercam® software. Many of the terms I will be using will be specific to Mastercam, but most CAM systems have similar features. Although the names of the features may be different, your system should still have them.


Modeled Surfaces


A & B: These sides of the surface can be machined.


To get a good surface toolpath, you must start with a good surface. If your surfaces were created in a software program different from the software you are using to generate the toolpaths, it will be well worth your time to do some checks on the surfaces provided.

You need to determine the direction of the "positive surface normal." A surface normal is a vector (direction) that is perpendicular to the tangent plane of a surface at the point of tangency. It is an attribute that is attached to each individual surface and not to a specific part shape. In the diagrams below, the green arrows represent the vector that is perpendicular to the surface at the point where the vector intersects the surface, and they point in the direction of the positive surface normal.

Each surface has two normal vectors, which point in opposite directions. One is referred to as the positive (front, outward) direction; the other as the negative (back, inward) direction. The positive surface normal side of the surface should always be the side you are machining. When a surface is created, the default positive normal direction is based on the relative directions of the curves defining the surface. This becomes a problem if you are machining a model that has several surfaces, with some positive normals pointing inward and some outward. The normal direction must be flipped so all the positive normals point in the same directions. In the graphic below, the surface on the left has the positive surface normal pointing outward. The surface on the right has the positive surface normal pointing inward.

It is important to know the surface normal direction, because it affects the ways in which offset surfaces are created, curves are projected onto surfaces, and fillet surfaces are created between two sets of surfaces.

Also, check the surface creation tolerance or maximum surface deviation tolerance. These will determine the maximum distance by which a surface can be separated from its generating curve. If the tolerance is too large, the final machined surface may not be desirable.

Tip: I usually set my maximum surface deviation tolerance set to 0.00005" (0.0013mm).


Choosing the Correct Surface Tool Path


A: Smaller Z-axis steps during roughing leave less material for finishing.

B: Roughing at twice the Z-axis depth leaves more stock for finishing.


All CAM systems provide a variety of surface toolpaths. For surface roughing toolpaths, the shape of the finished part and the stock you are starting with will help you decide which path to choose. If you are removing material from inside a workpiece – in other words, cutting a cavity – a surface pocketing toolpath is usually the logical choice. If you are cutting a core, or removing material from the outside of a workpiece, a surface contour path may be best. Most surface rough toolpaths will step down to constant Z-axis depths and rough the stock, leaving a specified amount of material on the designated surfaces. The depth of the steps in the Z axis during roughing will affect the amount of material left for finishing. Larger steps in the Z axis leave more material for finishing; smaller steps in the Z axis leave less stock to be removed during your finish cut.

Obviously, roughing with smaller Z-axis steps will increase cycle time, so there are three main factors to consider during programming: material type; size of the finish cutter; and required surface finish. If you are machining soft material like aluminum or mild steel, the larger "chunks" of stock will not have much effect on your finish cutter. If you are machining hard or tough materials, your finish cutter may deflect when becoming engaged in uneven amounts of leftover stock. The result could be an uneven surface finish.

The two common solutions for this problem are to use smaller Z-axis steps during roughing or to add a semi-finish path. The semi-finish path should be created with a larger step-over than the finish path, and using a different tool. It can be the same size as the finish tool, but should be a separate tool. This way, the finish tool does not wear out as fast as it would if it were both semi-finishing and finishing.

TIP: Typically, a semi-finish path will leave 0.005" to 0.015" (0.127 to 0.381 mm) stock for the finish cut.


Carboloy brand round insert endmill, also known as a "copy mill" or "button" cutter.

When using smaller Z-axis steps during roughing, you can reduce cycle time by using a copy mill cutter. A copy mill cutter is an insert endmill with round inserts, but it's not spherical like a ball endmill. Most carbide insert tooling manufacturers make this type of cutter in various diameters and insert sizes. The round inserts allow you to cut at higher feedrates, because they create a variable chip thickness.


At any Z-axis depth, there will be much less stock left over when using a copy mill.

The higher feedrates will reduce your roughing cycle time. The entering angle of the cut varies from 0 to 90 degrees, based on depth of cut. This gives a very smooth cutting action. These cutters are also very strong, because the cutting action takes place over a larger area than with other insert geometries. The round inserts also allow you to remove material much closer to the true surface on non-vertical walls when compared to cuts from a 90-degree endmill at the same Z-axis depth.


Surface Finish Toolpaths


A: True Surface / B: Cut Tolerance / C: Machined Surface.


Surface finish toolpath selection can be more difficult. There are a few basic concepts that must be understood in order to produce an excellent quality surface finish toolpath. In 99% of cases, a finish toolpath will be created using a spherical (ball) endmill. A ball endmill is used specifically because of its spherical shape. This shape allows it to move over all surfaces and cut at any point around the sphere. For example, think of a ball bearing placed in a bowl. You can roll the ball over any part of the bowl and it will make contact with the surface in different points around the sphere, depending on the location of the ball in the bowl. The point of contact is called the tangent point.

The next concept to understand is called radial step-over. Radial step-over is the distance between centerlines of successive parallel cuts. When the radial step-over is increased, the cusp height will increase. The cusp height is the primary factor that will determine the smoothness of the machined surface. A cusp height of 0.00003" to 0.00005" (0.00076 to 0.00127 mm) will produce a very fine finish. Since the cusp height is controlled by the radial step-over (rso) and the tool diameter, the following formula can be used to calculate the cusp height on a flat surface:


The radial of the bowl are all 0.250" (6.35 mm), and the radius of the ball bearing is 0.125" (3.175 mm).

When selecting a finishing toolpath, the first consideration should be the required surface finish. If you are creating a mold and the surface finish must be extremely smooth, you will have to make different choices than if you are cutting sculpted surfaces with a large surface finish tolerance.

The first type of finishing toolpath is called a parallel path. It moves the tool across the surfaces in straight, parallel cuts. These straight cuts do not need to be parallel to a machine axis. They can be produced at any angle, but all passes over the surfaces will be parallel to each other. This toolpath produces the best finish in most situations.

There are two ways to cut a parallel toolpath. The first is zigzag, and the second is one way. A one-way parallel toolpath takes a pass, rapids up in the Z axis, rapids back to the beginning and takes another pass in the same direction at the specified radial step-over. All passes are made in the same direction.

Zigzag cutting moves the tool back and forth across the part, stepping over at each change in direction.

TIP: It has been my experience that a one-way toolpath will produce a better surface finish, but will take longer to run because of the rapid moves at the end of each pass. Zigzag toolpaths have a tendency to climb cut while moving in one direction across the part, but conventional cut while moving in the other direction. This usually produces uneven surface finishes, and can cause premature cutter wear on hard or abrasive materials.


Scallop: The toolpath changes direction on the surface.


Parallel: Each cut over the surface is parallel to the other cuts.

The scallop toolpath is another common one. Scallop-finish toolpaths create consistent scallop heights over an entire set of surfaces. The toolpath consistently touches the surfaces and minimizes retraction motion. This path works very well because it can start from the outside and "collapse" in toward the center, or start in the center and expand outward. The drawback to this toolpath is the same: Because it expands outward or collapses inward, it changes the cut direction on the surfaces. When the cutter changes direction, it leaves visible "seams" on the finished surface. Still, this toolpath is very useful as a semi-finish toolpath to get rid of the steps from the constant Z-axis surface rough toolpath. It also works great when a very fine surface finish is not required.

Parallel – one-wayBest surface finish, more consistent cut direction (climb vs. conventional).Longer cycle times due to rapid motion at the end of each pass.
Parallel – zigzagShorter cycle time – cutter stays on workpiece during cycle.Uneven surface finish & premature cutter wear.
Scallop – expandShorter cycle time – cutter stays on workpiece during cycle. Excellent for semi-finish cut.Toolpath plunges into center of stock & expands outward; visible seams on the surface.
Scallop – collapseTool starts on outer edge of stock. Shorter cycle time – cutter stays on workpiece during cycle. Excellent for semi-finish cut. Best scallop path.Visible seams on surfaces where cutter path changes direction in the cut.


Cut Tolerance


In the photos above, the same shape was cut with the same cutter at the same spindle speed, feedrate and step-over. Everything was the same except the cut tolerance. The difference in surface finish is like night and day.

Photo A: Cut tolerance set to 0.00033" (0.008 mm).

Photo B: Cut tolerance set to 0.00002" (0.0005 mm).


In all cases with surface toolpaths, the cut tolerance controls the precision with which the cutter follows the surface. This is sometimes referred to as linearization tolerance. The cut tolerance determines the accuracy of the surface using chordal deviation (distance between the toolpath and the true curve, surface, or solid face). The cut tolerance linearizes the toolpath and controls how closely the tool follows the true curve, surface, or solid face.

Since the toolpath is linearized (all toolpath moves are G01, linear interpolation), the cutter cannot always be in absolute contact with any surface that has curvature to it. Therefore, the toolpath leaves the actual surface by an amount specified in the cut tolerance. When the cutter has deviated from the true surface by the cut tolerance value, a block of motion is output to bring the cutter back in contact with the surface. When the cutter is back on the surface, another block of motion is output to avoid violating the surface.

Because of this linear toolpath, the machined surface is actually a series of flat surfaces called facets. Think of a diamond: It is round and conical, but is truly a series of flat surfaces. If the cut tolerance on a finishing surface toolpath is too large, the resulting surface will have large facets. Also, because the toolpath is deviating from the true surface, you will see gouges in the machined surface. These gouges do not violate the true surface – they are only gouges in the uncut stock left over from the linearization process. This is because the tool will not always deviate from the true surface by the same amount, in the same position, along the true surface on successive step-over passes. To solve this problem, I have found that a very small cut tolerance will greatly reduce both gouging and size of the facets.

TIP: For the finest surfaces, I recommend setting the cut tolerance to a value of 0.00002" (0.0005 mm).


Filtering Toolpaths


Filtering toolpaths is a great way to reduce the size of the G-code file used to produce complex 3-dimensional surfaces. When you filter a toolpath, the CAM system replaces toolpath moves that lie within a specified tolerance, in a straight line, with a single toolpath move. This is contrary to the purpose discussed above of setting the cut tolerance to a small value, but if you set the cut tolerance and the filter tolerance to the same value, you will get very little reduction in the amount of code produced. Now, we can set the arc filter to reduce the amount of G-code without reducing any accuracy.

With the toolpath filter you can replace multiple linear tool moves with a single arc move of a specified minimum and maximum radius. You can choose to create arcs in the XY, XZ, and/or the YZ planes, but the tool motion must be parallel to a machine axis to get the arc output. Setting the arc filter parameters allows you to smooth the faceting that is typical of linearized surface toolpaths, and create a single arc move out of several linear moves to reduce the amount of G-code produced.


High-Speed Machining


The graphic on the left shows the cutter machining into a sharp corner. The 120-degree change in vector direction in one block of code causes the machine to slow down dramatically. If the cutter can interpolate a more gradual change in direction, it will result in a noticeable reduction in cycle time.


The high-speed machining option in the Haas control works by analyzing the change in vector direction, or change in angle, from one block to the next. When the change in vector direction is very small, as with code produced by using a small cut tolerance value, the control can interpolate the motion at a higher feedrate than when the change in vector direction is greater. The greater the change in vector direction, the more the control must slow the motion to stay on the programmed path. For this reason, you never want to drive your cutter into a sharp internal corner. The machine motion has to come to a nearly complete stop to change direction at such a sharp angle in the span of one block of motion. In that brief period of hesitation in a sharp corner, any tool pressure or tool deflection will be reduced and may result in small gouges at the surface intersections. You should always model a fillet radius larger than the radius of the cutter being used, or select a cutter with a smaller radius than the required fillets. This allows the machine to make the large change in direction over more blocks of code. The machine motion will be much smoother and faster, and produce better finishes in those areas.

The Haas high-speed machining option can process at a speed of up to 1000 blocks per second – that is, one block every one-thousandth of a second (1 millisecond). In order to maintain smooth, fluid motion, your program should not contain any block of code that takes less than 1 millisecond to execute. For example, if your feedrate is 150 inches per minute, the commanded speed is 2.5 inches per second (150 / 60 = 2.5). If you divide 2.5 in/sec by 1000, you will find that, at 150 ipm, you travel 0.0025" every millisecond. You can determine the 3-dimensional distance traveled (D) in a linear block of code by using the following formula (d = distance moved in that axis):



G-Code Verification


The photograph, at left, shows a customer's part with faceting. Metacut Utilities was used to produce a solid model representation, right, of the customer's G-code program, to show the customer that the problem was with the program and not the machine tool.


The best tip I can give on 3-D surface machining is to get a G-code verification software package. Every CAM system has toolpath verification built in. The problem with this is that it verifies the CAM operation, but the machine is reading the G-code. Many things can happen in the posting process, especially if you are applying the toolpath filter at the stage described above. Every Applications engineers at Haas Automation, Inc., has Metacut® Utilities on their computer. Metacut is an inexpensive software program that produces a solid model graphical representation of precisely what your programmed part will look like.

We hear complaints that a customer's machine is leaving a gouge in a part, but when the G-code is analyzed with Metacut, the gouge shows up in the graphical representation.

The Metacut software has functions such as graphical editing, verification, file and entity analysis, backplotting, and graphical file comparison. It gives you the ability to click on any block of code in the program and instantly analyze it. Metacut will give you the X, Y, and Z coordinates at the start point, mid point, and end point of each block. It calculates the 2-dimensional distance traveled in each axis as well as the 3-dimensional distance traveled in all axes combined.

You can download a copy for a 30-day free trial at Northwood Designs The software is helpful in determining if there is a major problem with your program, such as a machine crash. It is even more useful to determine the surface finish you can expect from your 3-D surface-milling program.


A: The G-code program is displayed.

B: The toolpath & solid are displayed in the graphics area.

C: Defined cutters are displayed.

D: Information on the highlighted block of G code is displayed.


The same lines that appear in the photograph (right) appear in the graphical representation generated by Metacut Utilities (left).



  1. Check your surfaces to make sure they can be machined.
  2. Investigate copy mill roughing to see if it is the right approach for your parts.
  3. Finish with a ball endmill and set the step-over to produce an acceptable cusp height.
  4. Set the cut tolerance appropriately for the desired surface finish.
  5. Filter to arcs when possible.
  6. Verify the G-code before you cut a part.
  7. If the result is not what you expected, verify the G-code again and zoom in on the area that doesn't look right. This will help you determine if the problem is in the program or caused by some other factor.
  8. For questions, contact a technical representative at your CAM system, tooling manufacturer, or machine builder. If you own a Haas machine, you can contact me directly: John Nelson, Applications Manager, Haas Automation, Inc.

Answers & Information Haas Facebook Haas Twitter Haas YouTube Haas Flickr Google+ Haas Linkedin Haas Instagram E-Newsletter