"One Perfect Part at a Time"

Thoughts on CAD/CAM/CNC

I am going to take a time out here from the product specific (BobCAD-CAM) examination I am making of a CAD/CAM software product.

I consider myself a competent self taught hobbyist CNC machinist. I didn’t get here without a lot of study and hands on practical experience. Let me say I have paid for my mistakes as well as my successes. The creative process of following through from an idea, to a sketch, Computer Aided Design (2D & 3D drafting), Computer Aided Manufacturing, (generation of Computer Numeric Control code), Controller (MACH3) set up and finally understanding the physical limitations of machine moves and feeds and speeds, and the huge variety of milling cutting tools… is a stupendous undertaking! I think I left out machine set-up for holding material and tool changing.

In my opinion CAD/CAM/CNC (the trinity) is a several orders of magnitude more difficult task than straight manual milling. However, I see thousands of examples of hobbyists running CNC so it is definitely a doable process for a single non professional to master, but not on day one.

CAD/CAM/CNC is not an easier way of machining simple parts. The actual machining stage of CAD/CAM/CNC is only a part of stage three (the CNC portion) of the trinity. There is a lot of “desk work” to master before making chips in the shop.

There exists a small number of hobbyist “Motor Spinners” out there. This is a slightly derogatory term for the folks that love the concept of CNC but build or buy a CNC machine just to watch the axis motors spin. They have no established need to make anything. I have no issue with that. This is what any hobby is all about. A hobby doesn’t need to do anything but make you happy.

I am guilty of watching my work run. I love to sit and observe a complex tool path. I know how much work it was to get to that point and I want to savor it all. Call it motor spinning if you want. From the number of CNC motor spinning video’s on YouTube, I am not alone.

Commercial CNC folks usually have a job needing run in the shortest time possible. Time is money. So I suspect they are less fascinated by the moving parts, but probably only slightly. I know I watch the first runs intently but then usually multitask to other activities after I feel all is well.

Of course a functioning CNC machine is a first requirement to participate in the wonderful experience of machining extremely accurate identical parts. Sooner or later though, right after unpacking the new machine, it becomes time to master the first 80% of the process, which is creating the code that controls those axis motors.

The human mind is capable of making hundreds if not thousands of decisions on the fly without conscious effort thinking of every step and variable. It is called training and conditioning. Autonomous Artificial Intelligence (AAI) is not yet ready for the CNC machine.  CNC is a form of robotic programming. A CNC mill is every bit (pun intended) a dumb robot. A human must make every decision of what moves and when. I have lots of software tools to help do that. The starting point (other than writing pure G-Code from scratch) requires a serious grasp of Computer Aided Design or CAD and Computer Aided Manufacturing (CAM).

CAD is the drawing part of the trinity. The first step is having the tools and ability to draw in both 2D and 3D exactly the part that is to be machined. CAD alone can be a full time occupation. Entire products such as an automobile can be drawn with all the parts and even tested before making one single chip. Skilled artists in CAD can make a rendering of the part that is indistinguishable from a picture of the real thing. I don’t need to go that far. I have to draw to exact scale but do not have to add any notations such as dimensions. All that can be done later if documentation is required.

The CAD document is next used by the CAM software process to generate tool paths. Note, CAD and CAM are two separate stages and not one program. They need to relate to each other and are often sold as a “package”.  CAM “looks” at the finished drawing and considers literally hundreds of variables such as tool size and type, speeds, and material; then creates a path the cutting tool will travel to make the part.  Usually a virtual run of the tool path can be viewed on the computer screen slower or much faster than real time. The final part of CAM is to run the tool path through a “post” (meaning “after”) processor that coverts the path to G and M code specific to the type of controller running the CNC machine.

The “post” CAM program output file is the actual numeric code to run the robot. But even with all that (semiautomatic) code creation, there is still a need to understand that code and sometimes make manual “adjustments”. It could be necessary to add the specific code to turn off or on the cooling flow at the proper points.

Sloppy code with lots of “cutting air” can get a part made, especially if it is a “one off” run. Cutting air is the time spent when the tool is traveling but not removing material. Being able to understand the post G and M code is necessary to manually remove unneeded steps.

For a hobbyist, ultimate tool path efficiency is not always a requirement. For me good code is a matter of function. I am not concerned so much with time.  I do work to get slow code to run faster, especially if I think I may want to make that part again. So I took the time to learn and understand manual G-Code and M-code editing. There are not that many commands to learn (or look up) and I can make changes and improvements no packaged software can do for me. Good CAM software is usually paired with a manual editor but MS Notepad works fine for most small edits. G and M code is just a plain text file.

G-Code is what stores the moves that cut the parts. The M-Code is standard but machine specific and is used to turn hardware on and off. Both are the heartbeat of CNC but there is one more step. That is the controller and controller software that reads the G and M codes. The controller can have hundreds of variables too. I use a program called MACH3 and my own home made controller. There are many others.

It should now be evident the path to making a part with CNC is very long and extremely complex. It can be learned and eventually mastered. I now pick name brand software that can be expanded so I don’t have to relearn a user interface, but cost is also a big factor. I started cheap and moved up to more complex software, but I am not sorry I did it that way.

I am often asked to share my drawings or code as if that is a short cut to spinning motors. The drawings may be shareable, but hardly ever is the machine specific code. After I put hundreds of hours into a complex CAD drawing, tweaking it to produce good CAM, I am not about to hand it over to any stranger who asks, really. The rule is if I don’t offer, don’t ask. I may be planning to recoup my investment some day.

I often share my ideas just by showing them. Sharing ideas is wonderful. That is the basis for me writing this blog and building web sites. I am “all over” doing that.


I have created and flawlessly run CNC programs containing a half MILLION lines of code, requiring continuous run times of over four hours. Of course I used CAD/CAM to create that much code. It can be done.

The secret is a good software package to build the code. There are many available. It is best to pick the best you can afford and settle in to master all the features. I am studying my third major package. I have also had several what I consider minor.  The most critical part in my opinion is the CAM portion of the package. That is what creates the tool pathing and produces the G-Code.

A combination of CAD and CAM that work closely together is the best use of designer skill and time. They can be separate products but most packaged CAM programs can also import many different types of 2D and 3D CAD output. That makes CAM the more versatile component. The CAD drawings can come from any source.

Two of my top end systems are combination CAD/CAM. That is the Vectric Software and now the BobCAD-CAM. I also use Rhino 3D CAD paired with RhinoCAM but they are not the same maker.  I also own DeskCNC a smaller less expensive CAD/CAM combination.

Everything I run ends up in a MACH3 machine controller. I am thankful I only have to learn one system there. It runs my Taig CNC mill and the HB2 CNC Router, perhaps a subject for another day.

NOTE: Log in is for admin and members only, not required to post comments.