I might be wrong here. The solid modeling done in CAD like Catia, NX, Solidworks,etc can be taken as input in CNC and the desired shape and size of piece can be obtained.The CAD itself convert the model into G -code.So why do we need to learn CNC programming if CAD can do it? Stay safe.

  • $\begingroup$ you don't need to learn anything. Some things make life easier. $\endgroup$
    – Tiger Guy
    Mar 30, 2020 at 19:00

5 Answers 5


Because some programs for some operations can be written quicker than the time it takes to produce the equivalent CAD file.

Also use of variables makes the program more useful ie a program to produce a cylinder can be written to take diameter as the controlling argument while producing many CAD files for various different diameters takes time.

  • $\begingroup$ Also to tack on to this, sometimes when G-Code is generated the cnc interpretation doesnt match and you need to modify it $\endgroup$
    – Diesel
    Apr 3, 2020 at 5:43

Well if engineers didn't learn G-code, why even learn what tool will be operated? Does it matter if its a lathe or mill or multi-axis something? It just produces a part that's an exact match of the CAD model, right?

I think however this assumes too much perfection and reality in the abstraction of a CAD model.

At the very least as a teaching device it is useful to learn G-code to gain understanding of the capabilities and limitations of the machine tool which is going to be operated.

Secondly, it is useful to learn about manufacturing because many engineers will go on to design & invent very similar machines themselves. So it serves as an example as well as a tool to make use of.

But I think more generally -- design optimization should include feedback from the manufacturing process so that a useful part can be produced without extra costs - costs including runtime, material waste, tool wear, etc.

Although CAD systems may be capable of abstracting away many of the details of how the G code would actually operate the machine I don't think you would be able to gain as much appreciation for these details if you only ever treated it as a black box.

(And for that matter more generally there are all sorts of "tools" in engineering that you could just use without really understanding them - engineering formulas are after all mostly approximations of physics, you just can plug in the numbers. But engineers are trained to understand at least several levels deeper that what you might need to just minimally scrape by with. This is done in order to recognize the limitations of these tools and generally be able to make sound decisions.)


If you operate a cnc machine you will learn g-code eventually. Even if its just a subset of the g code. The reasons are numerous but mostly it boils down to:

  1. You need to setup the machine and tools from time to time. Then it might be practical to be able to write short snippets to change tools, work coordinates etc. I mean this isnt really magic its more like saying load tool number 16. You catch this really quickly.

  2. You may be in a situation where you need to debug code generated by the postprocessor of your CAD/CAM application. Or you need to verify a program. In these cases you need to be able to read the g-code atleast superficially.

  3. You might want to be able to add a stop in the program to clean up a bore between operations, make automation changes between programs etc.

  4. You might need to change your postprocessor.

  5. You might need to make a small change to the program. Sure you can go back to the cad application. But that might mean leaving the shop floor opening the CAD or you might just type in the change then and there.

  6. You might want to do something your cam does not do. Like say a broaching operation or send commands to a tending robot.

  7. You may want to use same program for different parts so you might instrument it by variables. Or change your postprocessor to emit variables.

In either way g-code is often simple enough that youll pick it up along the way. Being able to read g-code becomes more important the more different jobs you run during the course of a week. A prototype machinist is much more likely to need to make changes so often that they benefit.

But do you really need to? Well, no. Its useful though.


Correct... you are very wrong. I understand the desire to apply the "black box" principle here, but that won't cut it in the shop. (see what I did there?)

The CNC machine moves based on the code. So if you don't know the code(s) then don't really understand how to make the machine work for you.

I've seen numerous people ask things like "can we get rid of draftsmen, ME's, AE's, programmers, machinists... basically everyone in the company?" Well, there is no software that can perform all those professions (especially for job shops & any shop that's looking to make something completely new to them).

Review the cutting tools & some cutting strategies sometime. Then you'll see why a mechanical drawing is required. And why you need programmers to figure out how to make everything work together.


Since certain projects for certain tasks can be composed speedier than the time it takes to create an identical CAD document.

Likewise, utilization of factors makes the program more helpful ie a program to create a chamber can be composed to accept width as the controlling contention while delivering numerous CAD records for different various measurements requires significant investment.

On the off chance that you work a CNC machine, you will learn g-code in the end. Regardless of whether it's simply a subset of the g code. The reasons are various however generally it comes down to:

You have to arrange the machine and apparatuses every once in a while. At that point it may be functional to have the option to compose short pieces to change instruments, work organizes, and so on I mean this isn't truly enchantment it's more like stating load instrument number 16. You get this actually rapidly.

You might be in a circumstance where you have to troubleshoot code created by the postprocessor of your CAD/CAM application. Or on the other hand, you have to check a program. In these cases, you should have the option to peruse the g-code at least cursorily.

You should have the option to include a stop in the program to tidy up a drag between activities, make computerization changes between programs, and so on

You may need to change your postprocessor.

You may need to roll out a little improvement to the program. Sure you can return to the scoundrel application. Yet, that may mean leaving the shop floor opening the CAD or you may very well sort in the change without even a moment's pause.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.