CNC Software Toolchain Using Only Open Source Software

For hobbyists, there are two types of machines that can make parts at home. The first type is matter-adding machines (3D printers) and the other is matter-subtracting machines (like CNC milling machines).  [Mario] recently tipped us about an article he made detailing which free software can be used to design and produce parts on CNC machines.

The first step of the process is obviously designing the part you want to make using a Computer-Aided Design (CAD) application. [Mario] suggests Heeks or Freecad for which you can find plenty of tutorials on YouTube. The next step consists in converting the part you just designed to machine tool paths using a Computer-Aided Manufacturing (CAM) application. Fortunately, Heeks can do both so it may be the best option for beginners. [Mario] also mentions the pcb2gcode  application, which allows you to manufacture printed circuit boards at home for the prototypes you may want to produce. Finally, the well known LinuxCNC (previously Linux EMC2) software is used to control the CNC machine using the GCode that the CAM software produced.

At Hackaday, we’d really like knowing what our readers currently use for their CNCs so don’t hesitate to leave us a comment below.

46 thoughts on “CNC Software Toolchain Using Only Open Source Software

  1. I may be wrong, but I think that CNC covers more than just matter removing machines. By definition, “computer numerical control” applies to any machine which is controlled by a computer, so 3D printing would come under that.

  2. CNC stands for computer numerical control. It simply means some sort of machine is being controlled with a computer, your 3d printer, regular inkjet printer and several other devices are all CNC. A milling machine is what you guys should have been referring to which in this case is being CNC’ed.

  3. My recently finished cnc router is controlled by GRBL on an arduino.
    Since I haven’t got a dedicated cnc computer, installing linux or downgrading to 32bit windows for mach3 (and getting a parallel port) wasn’t really an option.
    However, GRBL is incredibly easy to use, and works very well with any gcode sending software. I personally use Universal GcodeSender. The CNC is jogged and controlled by an oldschool xbox controller, interfacing with gcodesender by an autohotkey script (and xpadder).

    For the parts-creation, I mostly use cambam (with illustrator/photoshop for image tracing if I’m doing engraving), the easiest to use for a beginner imho, though heeks is better for 3d parts.

    1. I’m trying to implement something similar with a microcontrolled CNC, but I don’t know much about the software end of things. How did you get GRBL to run on an arduino? Is it possible on other microcontroller brands?

    2. For what an arduino and a gshield cost, you can easily find an old computer w. a parallel port and get linuxCNC going. GRBL is very slick, but a far cry from the flexibility and motion control of software that can run a 9 axis machine (if you could find/afford cam software for 9 axis CNC! : o) )

  4. If all you are doing is 2.5D, you could probably get away with a vector image and pstoedit, or, a bitmap image, potrace, then pstoedit.
    potrace converts bitmaps to vector images, and, pstoedit can convert vector images to dxf or even output LinuxCNC formatted gcode.

    1. I am very interested in this toolchain, can you possibly post an example set of the commands to go from bitmap to gcode? Can you specify different parameters for different layers? Like if one layer is pockets, and another is cut outs?

    while its not free its cheap and its pretty easy to use.
    again not free but cheap and he has a demo version that has tons of features. I bought it because his demo version is so strong. You know how sometimes you just want to support the good people that bring good products? Far and few between now days. Well with both of those purchases that was the case.

  6. I recommend HSMexpress for Solidworks. It’s not open source but it is a free download and great for 2.5D milling. You must also have Solidworks which is not free or open source, but there is a student option. For motion control I use LinuxCNC which is okay – my current setup suffers from latency issues every 30 mins or so which is dangerous, so I will probably get one of those cheap boards that buffers the step signal between the computer and motor drivers.

  7. Does anyone have any experience on the speed between something like pycam and Heeks vs. a paid package like VCarve? I’ve used VCarve and pycam and the speed difference is astounding. VCarve spits out the gcode in a fraction of the time. I’m not talking about simple 2D or 2.5D parts. I mean a complex curved surface, not a simple hole drilling problem. Maybe I’m doing something wrong, but the difference is very large in my experience.

    The CAM part of the equation is the weak link, IMHO. It’s easy to find software to design the part. It’s easy to set up something to run the gcode. Generating the tool path code is the difficult part.

  8. for my metal cutting laser ( I use Rhino -> LinuxCNC. But the tough part is making the tool path. For that I use a VB-based dump of the file out of rhino which specifies the parts and the cuts inside of those parts. I dont think I could give up Rhino, the software has too many features that I need for design.

    Then I wrote python code:

    that does a traveling-salesman-esque attempt at choosing the parts to be cut, and the path through the cuts for each part. I havent heard of any open source options for people doing plasma or laser cutting.

    It might sounds complicated but the advantage of this is the dump from Rhino is down with mouse click, and the conversion by my python code is a call done in linuxcnc. So to go from CAD to loaded in linuxcnc is two mouse clicks. This is very helpful when doing rapid part design at my laser.

  9. Does anyone mentioned “Only Open Source Software” toolchains?

    I use Kicad->Cyclone PCB Factory scripts->Printrun->Teacup firmware (-> and Gen7 hardware) to manufacture PB’s.

  10. So far I’ve been using Draftsight for design (though Inkscape is great for turning pdf’s into dwg’s to then open and edit in Draftsight),
    then dxf2gcode for conversion (though I can never get it to cut alongside the toolpath rather than on it).
    The ngc. file is put into a network folder, then I fire up an old motherboard running LinuxCNC which I control on my Android tablet using AndroidVNC. (While LinuxCNC’s Ubuntu has remote desktop out of the box, it does still require some extra work to get it to start without a monitor actually plugged in.) LinuxCNC finds the .ngc and sends the G-code to the mill.

    I’d be really interested in hearing from anyone what their open source toolchain would be for DLP 3d printing, as I am looking into retrofitting my old Sable CNC to this task.

  11. Really? No one here using MasterCAM or ArtCAM? Geeze! These together are so powerfull. I know they’re expensive but since when does a guy making personal non profit projects need to buy em?

  12. Is there a software package than can do both 3D Printing as well as milling/routing? I was thinking about a machine build that would accommodate both functions, addition and removal. Obviously at different times. Such a creature could use the same gantry/stepper framework, but would driver boards and other electronics work for both applications?

  13. In my garage resides a SX1 Mill , 4axis , ballscrews ,TTS style power drawbar , 3.5 dc motor, G0704 CNC , Im in the middle of converting my G4000 and G3102 6×26 knee mill. I use Solidworks and solidcam for cad cam and Mach 3 to run it all. When the CNC bug bites watch out!

  14. for all my 2d and 2.5d i’m using Inkscape+gcodetools plugin, for 3d it’s FreeCAD to BlenderCAM for generating g-code. my setup = Raspberry PI 2 > GRBL on Arduino uno> g-540, I run g-code from inkscape or blender with the Universal Gcode Sender

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s