It takes a long toolchain to take the garage-machinist-to-be through all the hoops needed to start cranking out parts. From the choice of CAD software to the CAM tools that turn 3D models into gcode, to the gcode interpretters that chew up this source code and spit out step and direction pulses to turn the cranks of a cnc mill, there’s a multitude of open-and-closed source tools to choose from and even an opportunity to develop some of our own. That’s exactly what [Nick] and the folks over on the cnc-club forums did; they’ve written their own CAM tool that enables the end user to design a procedure of cuts and toolpaths that can export to gcode compatible with LinuxCNC.
Their tool, dubbed “LinuxCNC-features”, embeds a LinuxCNC-compatible graphical gcode programming interface directly into the LinuxCNC native user interface. Creating a part is a matter of defining a list of sequential cuts along programmable toolpaths. These sequential cuts are treatments like drilled holes, square pockets, bolt holes, and lines. The native embedding enables the machinist to preview each of the 3D toolpaths in LinuxCNC’s live view, giving him-or-her a quick-and-dirty check to make sure that their gcode performs as expected before running it. [Nick] has a couple of videos to get you up-and running on either your mill or lathe.
LinuxCNC-features has been out in the wild for almost two years now, but if you’re looking to get started cranking out parts in the garage, look no further for a CAM tool that can quickly generate gcode for simple projects. In case you’re not familiar with LinuxCNC, it’s one of the most mature open-source gcode interpreters designed to turn your PC into a CNC controller, and it’s the brains behind some outstanding DIY CNC machines like this plasma cutter.
Looks like a good start to firing off quick patterns.
The graphical design style is nice for the quick and dirty designs. However, if you want real parametric designs, you are better off using Gcmc. Each has its own advantages and drawbacks.
That acronym means a lot of different things. Do you have a link to Ccmc?
Click on the username of the message, or http://www.vagrearg.org/content/gcmc
Thanks for the tip, BsAtWork! This is “the high-level” descriptive programming language that I’ve been hoping existed! gcmc looks like it lets you describe toolpaths in a high-level language and then export to gcode, dxf, svg, etc which offers a really nice use-case for parametric, descriptive machining. While you can absolutely use it to generate gcode, I actually appreciate dxf2gcode for a slightly different use-case, and that’s going from CAD software–to dxf–to gcode for flat parts, rather than having to separate the instance of designing my part in CAD software and then describing it again as toolpaths. Nevertheless, I think both these tools have a place in the garage-fab!
My biggest issue with GCMC is that it does not use G02 or G03 arc commands. Instead, it emits a bunch of very small linear moves that approximate curves to some (I think) default precision. I prefer to use arc commands for for circular motion for several reasons: the cnc controller on the machine may be smoother at implementing arcs than very short linear moves, using G02 and G03 instead of many small linear moves will significantly reduce NC file size (important if you’re running from a machine with limited memory rather than drip feed over some network), and the code is easier to read and modify at the machine with G02 and G03.
Also, this may be an edge case for most users, but using very small linear moves sets an upper limit to how fast your machine can cut surfaces to a set precision. For instance, you want to machine a complex 3D surface to 0.001″ tolerance, so you have your CAM software emit 3D linear moves for every 0.001″ maximum. If your machine can execute 100 instructions per second, then your max feedrate will be (100 instructions per second) * (0.001 inches per instruction) * (60 seconds per minute) = 6.0 inches per minute, which is really slow. Even if your programmed feedrate is much faster than 6.0 inches per second, that’s all your machine can keep up with. Your choices are to loosen your tolerance (0.005″ 3D linear moves, instead of 0.001″) or buy a faster machine.
Been waiting for years for something like this- finally CAM for linux! Can’t wait to dig into this more after xmas- my hackerspace could really use this if it works!
To be honest, GCAM [1] has been running on either Linux or Windows for ages, and it does pretty much the same thing these guys seem to have done, plus some svg import and PCB isolation milling stuff (see the wiki for details and screenshots)…
[1] – https://github.com/blinkenlight/GCAM/releases
I want to tip about a CAD-CAM software, Fusion 360, it´s not open source or free or for linux but as a hobbyist i dont need to pay for it.
Also makes a lot more sense to me than solidworks. Runs on my hackintosh too, a bit buggy though.
I run the G-code in LinuxCNC on really old hardware, works great.
I was going to say the same thing. Fusion 360 has HSMWorks built in for CAM which is actually pretty good. And the price is hard to beat.
Though I prefer Solidworks, I dont like how Autocad does things.
you can get HSMXpress for Solidworks for free :)
even if its “just” 2,5D i think its worth a shot
Oh, I dont need CAM for solidworks, it is just the drawing system in solidworks that I prefer over Autodesk’s methods.
I have a laser cutter. If anyone cares, my work-around for this was to write toolpath code in python, and use it in a macro in Rhino. I do design on my Mac, in Rhino, hit an icon, it generates the toolpath for the part and exports it to a directory available to linuxcnc over the network. Contact smouldering.dog@gmail.com for details.
This is just plain wrong, although I can see it’s use. My main gripe against it that they choose to use (again) as a full programming language. Gcode to me is just an intermediate descriptive language, it should not have all these features (that linuxCNC offers).
They capture information that does not end up in your original design, which makes it a lot harder to actually reproduce some design. My machines are sprinkled daily with pixie dust, so gcode is not transferable to other machines. converting gcode back to dxf or some other format misses that extra machining info that is not captured: for instance to what point a tool is zero’d or it’s actual cutting diameter means a lot for the final part; you never store that in a gcode file.
For a quick and dirty I’m happy with just the axis interface and a keyboard.
Features is just a system to write subroutines – any third party cli cam can be easily integrated into Features.
In fact some of them are already integrated – like gcode generator for text milling.
The version described in this article is really outdated version. Now days with great help of FernV and other guys from linuxcnc.org forum, LinuxCNC Features has been introduced with a lot of new “features” :).
And I hope next LinuxCNC release will include features from scratch, there’s a brunch in linuxcnc git repository which I believe will be merged with main branch.
See the following:
https://forum.linuxcnc.org/forum/40-subroutines-and-ngcgui/26578-linuxcnc-features-a-kind-of-ngcgui?start=280
and
http://fernv.github.io/linuxcnc-features/
—
sorry for my “English” :)
—
Nick