Skip to content
Asztalos Attila Oszkár edited this page May 15, 2015 · 9 revisions

Welcome to the GCAM Special Edition wiki!

GCAM Special Edition running on Windows XP

GCAM SE is a free (GPL3 licensed) 2.5D CAD/CAM software for Linux and Windows intended to define simple tasks and generate G-code for a 3-axis CNC mill. The "2.5D" part simply means that rather that working freely in full 3D, GCAM is meant to work with horizontal 2D features like points, lines, curves and contours that are then extruded in the third dimension along a separately defined extrusion profile (at its simplest, just a vertical line from the material surface down to the desired milling depth); this mirrors the inherent limitation of 3-axis mills to normally only being able to access their workpiece vertically straight down with the tool bit. Even so, creative use of the extrusion profile and features like raster-based image milling can yield parts that push the limits of classic 2.5D design. To download the latest version of GCAM SE click here.

Notable features

  • Define open curves or closed contours to be milled along / around or "pocketed" inside
  • Automatic ordering of out-of-sequence segments in otherwise continuous contours
  • Automatic detection and prominent marking of points of discontinuity
  • Define patterns of holes or arbitrary points where holes are to be drilled
  • Define raster-based height maps to be milled starting from an image
  • Import specific elements from existing GCAM projects into the current one
  • Import Gerber (RS274X) files for PCB manufacturing by isolation milling
  • Import Excellon drill files as holes to be drilled for PCB manufacturing
  • Import SVG paths for (limited) interoperability with other design tools
  • Save projects to original ".gcam" binary or new ".gcamx" XML-based format
  • Generate G-code (either with or without the use of canned cycles) for a 3-axis CNC mill
  • Internally simulate execution of the generated G-code as a "resulting workpiece" in 3D

Basic workflow

The graphic interface consist of three major elements:

  • the main 3D view that shows either all features as outlines or the 3D rendering of the resulting workpiece
  • a list of all the elements contained in the project, as a hierarchic tree of "blocks" below the main 3D view
  • a panel on the left that displays the defining parameters of the element selected in the list of "blocks"

Initially there is no project open at startup, the first step is to create or load an existing one. With "New Project" we can choose a name and define basic parameters like workpiece size, thickness and material, the tool to be used and the units (imperial or metric) all values will be in. These settings can also be changed later at any moment using "Project Settings", including the native units of the project - all values get converted to the new unit automatically.

Once a project is open, there are several types of "blocks" we can insert to continue - these will appear in the project's block list below the main 3D view as soon as we insert them. Our options are "Sketch" (which then lets us add lines and arcs to define curves or outlines to be milled along or around), "Bolt Holes" (which is a tool to define a regular pattern - either circular or a matrix - of equally sized holes to be either milled or drilled out, depending on the tool we specify), "Drill Holes" (which is exactly what it sounds like - a collection of arbitrarily placed points where identical holes are to be drilled), or "Image" which... well... is a bit of an experimental feature meant to create a shallow 3D "embossed copy" of an image, where the height of every point is based on the shade of grey of the corresponding pixel in the source image: think of it as an embossed portrait based on a photo.

There is one more basic feature called "Template" which defines nothing on its own, but can contain other features (including other templates - fingers crossed...) either in order to group them together (under a common comment and with the ability to switch them on/off collectively) or, perhaps more significantly, to rotate and/or translate everything it contains with an arbitrary amount that can also be changed at any time.

Each of these blocks - as it appears in the block list - has a checkbox that allows us to "turn off" that block and all blocks it contains. Such blocks are not visible in the 3D view and are not exported in the generated G-code output. Each block also features an editable "comment" field that lets us attach a short note / description to that block, which also gets carried over into the generated G-code as a comment; the field is automatically filled out with a type description (eg. "Sketch", "Arc" or "Line") when a new block is created.

Once a basic container block like a Sketch exists in the project, we are free to add primitives such as lines and arcs to define a feature we want to mill along or around. Usually such a feature would consist of one or more closed contours (either to be milled along or completely milled out as a pocket - see the "pocket" checkbox among the properties of a sketch), but non-closed curves are also perfectly valid: they are the simplest way to just carve a line or arc into the workpiece wherever we need one. Needless to say, if a curve is not closed, milling it as a pocket is not going to be possible - and often "not closed" only means an incredibly small gap between the end point of one element and the start point of the next. Such gaps are only observable as a tiny difference in the coordinates of the points involved, the difference is often much too small to be visible in the graphic view; to aid spotting of such problems, GCAM SE marks points of discontinuity with a small square marker in red - which is why such markers can be seen at both ends of the first line or arc we insert into a new sketch. As the curve expands, the red markers stay on its open endpoints and disappear completely once the contour closes up.

Once a point, line or arc is added, we can define it precisely using numeric values:

  • Simplest of all is of course the point: all it takes to define one is a pair of coordinates in 2D: one value for "X" and one for "Y".
  • A line isn't much more complicated either: it's simply the straight segment between a starting point (with its X/Y values) and an ending point (another X/Y pair). The only notable thing is that once those are defined, we can also see the length of the resulting line and the angle it makes with the "X" axis - and more than that, we can tweak an existing line directly editing those values.
  • Finally, arcs are a bit more tricky: there are several different practical ways to define an arc, and we are free to switch between them using the "arc interface" selector at the top of the panel:
  • The default way is using the X/Y coordinates of the starting point, the radius of the arc, the "start angle" of the arc, and the "sweep" of the arc. The sweep is simply the number of degrees covered by the arc (either in the positive or the negative direction - those are different things), a semicircle for instance would have a sweep of +/- 180.0 degrees. The start angle is a wee bit more confusing at first (and second, and third...) - think of it as the angle the radius passing through the start point would make with the "X" axis. A start angle of 0.0 would mean the arc started "at the rightmost point" of a circle, while 90.0 degrees would mean starting from "the top of a circle".
  • Seeing how intuitive the previous way to define arcs is, you might be happy to hear arcs can also be defined (much like lines) by the coordinates of their two endpoints and their radius. That's not quite enough though - usually there are four different arcs fitting that description. Therefore in this mode we must also specify whether we want a "clockwise" or "counter-clockwise" arc, and perhaps less obviously, whether we want the "small" or the "big" one. Playing around with those settings (and hitting "Apply" each time) on a simple arc should demonstrate quite clearly what I'm talking about here. Rather unlike the first method though it's quite possible to define impossible arcs this way, if the two endpoints are further apart than twice the radius can reach: entering such numbers results in GCAM SE refusing to "apply" them.
  • Lastly, there is a third way to define arcs - like previously, using the coordinates of their two endpoints but this time using the explicit coordinates of the center instead of the radius. This means there no longer are four different arcs fitting those numbers - only two. So to pin down which one we want, a direction still has to be specified - as before, either "clockwise" or "counter-clockwise". The thing to note here though, as before, is that it's easy to end up entering endpoints in such a way that one of them is not exactly as far from the specified center as the other one - and such an arc would be impossible (or more exactly, it would be called an "elliptic arc" - and we don't take kindly to that type around here a.k.a. forget it), so such data will again refuse to "apply" in GCAM SE. You've been warned.

After the sketch containing our curves / outlines looks just the way we want, we then need to define its third dimension (the .5 in the "2.5D") - we need an extrusion profile. All major blocks that need such a feature include one right from the start (and it cannot be deleted) that can be accessed under the "extrusion" element of each such block. Initially, it consists of a single vertical line from the material surface all the way through the material (depth is equal to the workpiece thickness). To reduce the milling depth we simply define the ending point of that line higher up, ie. having a smaller negative height coordinate. It is possible to "slant" the initially vertical line, to add further lines or even to add arcs to the extrusion profile - but be warned, there still be dragons, and overplaying this is the surest way to unpredictable results.

Finally, when the project is complete, it's time to save it (come to think of it, you should have saved it long ago...) - our choices here (beyond choosing an appropriate file name) are either using the traditional GCAM extension ".gcam" which will save in the original binary format or the new GCAM SE extension ".gcamx" which will automatically save in a new, XML-based, human readable format. Currently the two should be fully interchangeable - ie. a project saved as ".gcamx" could still be saved again as ".gcam" and be readable even by the older GCAM versions.

The 3D view

The 3D view normally displays all features of the current project as outlines, and can be panned (holding the left mouse button), zoomed (with the scroll wheel or holding the right mouse button) and rotated (with the middle mouse button) in 3D. The view can always be restored to one of the primary axes (ie. "Top", "Left", "Front" etc.) using the "View" menu, where we can also choose between "orthographic" and "perspective" view modes - the basic difference being that the first displays all parallel lines as parallels while the second does not, but it's much simpler to just see the difference for yourself.

Each major block (Sketch, Template, Bolt Holes etc.) is highlighted uniformly in orange in the 3D view as it is selected in the block list; blocks that are not currently selected are displayed in grey. From any angle except the straight-on "Top" one it's readily apparent that each feature is displayed as multiple outlines: one for each depth level (or "pass") as dictated by the depth and resolution of its extrusion profile; a curve with a 6mm depth and a 1.5mm resolution will show up as four different curves, at the consecutive 1.5 / 3 / 4.5 / 6mm depths, which reflect the actual passes that the milling tool bit will execute, taking off 1.5mm of material each time. Although usually pointless, it is possible to force a pass at depth zero, with the appropriate checkbox in the sketch properties (could be useful as a "planing" pass over a material surface that isn't actually perfectly flat). The curves at different depths also reflect the extrusion profile - if that's not perfectly vertical, each curve will be slightly different as displaced by the profile at that depth.

If, on the other hand, a single element of a major block is selected (like a point, line or arc), only the topmost contour will be displayed to allow easier editing of that block, with only the selected primitive highlighted in orange (for lines and arcs) and the rest of the contour in grey. The endpoints (for lines and arcs) or the position (for points) of the selected feature also get highlighted with a small square marker in yellow (or red, if the curve is discontinuous at that point). Notably, the orange highlight also reflects the direction of the primitive - it goes from dark to bright orange from the start point towards the end point. This is an important visual clue, considering features get milled in the direction we define them - from start point to end point. Curves or contours consisting of a single primitive follow this rule naturally; for multiple continuous primitives, the direction of the majority of them dictates the overall direction the curve / contour will be milled in, if they don't all share the same direction.

There is another mode of the 3D view, triggered when an extrusion type block (or any primitive under one) is selected - an "X-Z" frame of the extrusion profile is displayed, highlighting the selected part of the extrusion, that can still be panned and zoomed but not rotated. The vertical axis here corresponds to the depth of the workpiece (with the top surface of the material normally at the vertical top), the depth the profile descends to dictating how deep we want to mill. Any slant on the profile is transferred perpendicularly onto the contour it applies to - a vertical extrusion on a circle would result in a cylinder, but a slanted one would produce a cone; a profile with both a vertical and a slanted section would yield a cylinder ending in a cone.

Finally, there is yet another mode of the 3D view - reachable through the "Render" / "Final Part" menu: just as it says, this simulates execution of the generated G-code chipping away at a 3D-block of volumetric pixels ("voxels"), removing them exactly as the milling tool-bit would remove material. This results in what is hopefully a faithful rendering of the execution of the generated G-code, ie. any mistakes resulting from errors in the generated code should be readily visible - this tended to be quite obvious when GCAM occasionally misinterpreted an arc and generated something completely different. Such events are hopefully well in the past now, but one can never know for sure. Which brings us to the last point:

WARNING

Perhaps needless to say, GCAM SE is provided "as-is", without any guarantees whatsoever. It is solely YOUR responsibility to make sure your machine or tools will not be damaged by whatever output GCAM SE generates. All new features are extensively tested in the hope of producing the most robust and reliable piece of software possible, but the possibility of errors slipping past testing is always there. Fair warning: GCAM SE is not to be expected to generate correct output for every possible combination of every setting it has - in other words, the further away you stray from what can be considered "typical" usage, the more likely erratic behaviour becomes. As such, even though GCAM SE should produce the intended results the vast majority of the time, you should ALWAYS verify the generated output with a G-code simulator before running it on actual hardware to avoid potentially costly mistakes...

Clone this wiki locally