shane's blog

Cutting a Chess Pawn From Five Hours to Two

· machining

TL;DR: My first 4-axis CNC chess pawn took over five hours of machine time. I got it down to about two hours and seven minutes by cutting waste, not by buying a faster machine. The biggest win was simple: the first pawn was finished with a needle-fine engraver that had to crawl, and a slightly larger one did the same job in roughly two hours less, indistinguishable after sanding. Most of the rest came from noticing that the CAM sweeps the whole model on every pass even when most of it is already finished, then splitting each piece into regions so the tool only travels where material remains. One tempting final speedup got rejected: it left ridges that pushed the work onto the sanding bench, so the fastest cut on the clock made a worse pawn.

Context

I set out to make a chess set: designed in CAD and machined from solid stock on a desktop CNC, rather than bought or 3D-printed. The machine is the Makera Z1, an entry-level desktop mill with three linear axes (X, Y, Z) plus a fourth rotary axis (A) that spins the stock in a chuck while the tool cuts. It arrived not long after the post where I was still waiting on it. A chess piece is mostly a surface of revolution, a silhouette spun around a central axis, which suits rotary machining well. You draw the profile, the machine spins the blank, and the tool traces the outline as the material rotates past it.

Two facts about the machine shape everything that follows. It runs open-loop steppers: the controller commands a move and assumes it happened. Nothing feeds actual position back, so if the tool stalls or the part slips, the machine keeps going, blind. And the rotary axis is belt-driven rather than harmonic-drive, so it flexes under load. Both point the same way: keep cutting forces low, keep the tool engaged smoothly, and don't count on the machine to notice when something goes wrong.

The pawn is the right piece to learn on. A set needs sixteen of them, more than double any other piece, so time saved on a pawn multiplies hard. They are also simple enough that failures are easy to read: when something goes wrong on a pawn, you can usually see what and why.

Problem

The first pawn that came out clean took over five hours of machine time. That is a lot for one decorative piece, and punishing across sixteen. Buying speed was not an option, so the useful question was where the five hours actually went, and how much of it was real cutting versus wasted motion.

Two things were eating the time. The finishing pass was running a tool so fine it had to crawl to lay down a smooth surface. And a good share of the remaining time was the tool moving through empty space at cutting speed, tracing surfaces that were already finished on its way to the small amount of material that still needed removing. The fine-tool problem was the bigger chunk of raw time. The wasted motion taught me more.

Approach

The mental model I leaned on borrows a term from CAM: rest machining. After a roughing pass removes the bulk, much of the remaining toolpath is spent revisiting regions that are already at final dimension. A CAM package with true rest machining carries a running stock model, a simulation of what material is left, and restricts each later pass to only the regions that still have stock. The tool goes straight to what is unfinished and skips what is done.

My CAM does not do that. It is capable but coarse: it takes the imported model, treats it as a single object, and generates operations that cover the whole object. So the plan became to recreate rest machining by hand, using the one thing I controlled, which was the geometry and operations fed into the CAM. If the CAM insists on covering the whole object, I can make the object smaller or split it into pieces it will scope separately.

Most of the fixes below share one idea: keep the tool from accounting for material that is not there or is already done. The first fix is different and it is the largest, so I will start there.

Process

1. Stop finishing with a needle

The largest single cut came first and was almost embarrassingly simple. The five-hour pawn was finished with a 0.1 mm engraver, a tiny-tipped tool taking a correspondingly tiny bite on every pass. At that tip size the stepover has to be minuscule to leave a smooth surface, so the finishing pass became thousands of hair-width lines crawling over the whole piece. That tool is right for genuinely fine detail and wrong for finishing a broad curved surface.

Switching the finish to a 0.3 mm engraver, roughly triple the tip and a much larger effective stepover, took about two hours off the pawn on its own. After sanding and staining, the open curved surfaces looked the same as the 0.1 mm version. The fine tool had been buying surface resolution that the finishing process erased anyway. The takeaway, which comes back later in a worse form: fit the finishing tool to the surface, and don't pay machine time for detail the bench will wipe out.

A 0.1 mm tip still earns its place, but only in the tight valleys and sharp corners where a bigger tool physically cannot reach and sandpaper cannot follow. Everywhere else it is a needle doing a trowel's job.

2. Finding the waste: the tool sweeps a finished body to reach the stems

The pawn is held to the stock by small stems, thin necks of material at each end that keep the piece attached to the bar during cutting and give me something to grip and part off afterward. One sits at the base as the workholding stub. One sits at the top so the ball-end roughing tool can swing around the front of the pawn's head without fouling it.

Watching the toolpath preview, the problem showed itself. Once the body of the pawn was fully cut and only the top stem region still had material, the finishing pass was still sweeping the tool back and forth across the entire body on every rotation. It traced already-finished surface, the full length of the piece, to service a sliver of material at the top. On the tail-end passes the tool was maybe 10% engaged and 90% traveling through air.

This is the same waste rest machining exists to eliminate, in miniature. The tool is not cutting; it is commuting.

3. The root cause: the CAM imports the model as one object

Tracing why the tool swept the whole body led to the real cause. When I bring the model over from CAD as a STEP file, it imports as one solid body. The CAM sees one object, generates one operation to cover it, and that operation sweeps the object's whole extent on every pass. Import, operation, and toolpath all treat the pawn as a single undifferentiated thing to blanket. Nothing in the pipeline knows the body is done and only the top remains.

That reframed the fix. It was not a toolpath setting to tweak or a stray line of G-code to delete. It was upstream: give the CAM something other than one monolith to work from.

4. The fix: split the model into layers in CAD

The work happened back in CAD, not in the CAM. In Fusion I sliced the pawn into horizontal layers and split each into its own body, then exported them as five separate STEP files. Importing all five and lining them up in the CAM put them back into one continuous pawn in space, but the CAM now saw five objects instead of one. It cuts a single pawn; it just thinks of it as five stacked regions.

Each layer gets a roughing pass scoped to only that layer's body. When the tool works the top region, the object it is covering is just the top layer. There is no body below it to sweep, because that operation cannot see the rest of the pawn. This is rest machining by pre-slicing the geometry: the tool finishes each section and moves on, with no full-length traversal.

Reordering the layers and dropping one redundant stem cut roughly 30% off the estimated machine time on its own. Isolating the top of the head into its own layer captured more. The tightly-curved cap needs many fine layers to resolve, and each of those fine layers had been sweeping the whole head to service a few millimeters at the apex. The dead-air time per pass actually rises as the cap gets smaller, since the cut shrinks while the sweep stays the same length. Scoping the cap removes exactly the worst passes.

Seams matter. Every layer boundary is a place where two passes meet, and a badly-placed seam leaves a witness ridge on the finished surface. The trick is to put the splits on natural transitions in the profile, where the diameter already changes and a boundary hides in the geometry, and never through a smooth stretch where the seam would show. Placed on natural seams, the boundaries sand out invisibly. In one happy accident, the tool's tidy-up loop at each boundary read like a faint intentional turned ring rather than an artifact.

5. Model only the surface that exists

Still in CAD, using the same slice tool that cut the pawn into layers, I found another problem. The pawn's spherical head had been modeled as a full sphere intersecting the neck. The lower hemisphere of that sphere is buried inside the neck and never appears on the finished surface, but the CAM was still processing it, generating passes to account for interior geometry that does not exist on the real piece.

The fix was to slice the bottom off the sphere to match the neck intersection, removing the buried portion so the head geometry ends exactly where it meets the neck, with no hidden surface underneath. Same visible shape, no phantom interior, and the toolpath stops accounting for geometry that gets thrown away. The broader lesson is to watch for solids that intersect rather than meet cleanly, because the overlap is real geometry the CAM will dutifully process even though none of it survives to the finished part. The same class of problem had bitten me earlier, when a torus used for a collar ring refused to stay coaxial with the body. Intersecting primitives create surplus and sometimes misaligned surface; trimming them to meet cleanly, or building from a single revolved profile, avoids it.

6. A redundant rotation worth removing (not yet done)

One more source of waste I identified but have not acted on: the CAM inserts A0 moves between toolpath steps. On a full revolution, angle 0 and angle 360, and 36000 for that matter, are the same physical position, because rotation is modular. But the controller tracks cumulative commanded angle, so it does not count modulo 360; it keeps climbing. An inserted A0 after the axis has wound up to, say, 7000 degrees does not quietly reset a counter. It physically spins the part back nineteen turns to reach “zero.” For a surface-of-revolution cut where the tool already ends each step at a full-revolution boundary, that rewind is pure dead time.

The clean handling is to reset the position count at a full-revolution boundary, a no-motion bookkeeping reset that declares the current angle to be zero without moving the part, rather than commanding a rotation back to it. That keeps the accumulated angle from ballooning across a long job without spending time on needless spins between steps. I have filed this as a possible future enhancement. The analysis holds up, but I have not yet edited the posted G-code to do it, so it is not reflected in the times below.

Verify before you cut. A redundant A0 is only safe to remove if the tool genuinely ends the step at a full-revolution multiple. If a step ends at a partial angle and the next assumes it starts at zero, that A0 is a real reposition, and deleting it starts the next pass at the wrong angle. The general rule for editing generated G-code: find the structural redundancy, quantify it, and confirm it against the simulation. Never trim blind. That is why this one is still on the future list rather than done.

7. The tooling swap that looked like a win and wasn't

The last experiment was another finishing tool change. I had been finishing with the 0.3 mm engraver, and I tried a small reduced-neck ball end instead, a 1 mm cutting diameter on a 3 mm reach, for the curved surfaces. On paper it was a big speedup on the finishing pass, and it dropped the pawn's machine time to about an hour and twenty-two minutes. Two-beers-tonight territory.

Then I sanded it, and sanded it, and sanded it. The small ball end left pronounced ridges across the curved surfaces that took far more hand-sanding to remove than the finish from the larger tool. The extra bench work gave back much of the machine-time saving and left a worse surface for the trouble. I judged the hour-and-twenty-two pawn suboptimal and dropped the approach, even though it was the fastest number the machine ever posted.

This is a physics problem I had the intuition for and walked into anyway. A cutting tool sticking out of the collet is a cantilever beam, fixed at the collet and pushed sideways by the cutting force at the tip. Its deflection under that force scales with the cube of the stickout length and inversely with the fourth power of the diameter. A skinny 1 mm tool is far less rigid than a fatter one, so it flexes under the finishing load, and a finishing tool that flexes leaves ridges. The tool wandered and the surface recorded it.

The machine clock had told only half the story. The hour-and-twenty-two pawn was quick, but the ridges moved a chunk of the work from the machine onto the sanding bench, and the surface came out worse. Once the whole process was counted, the fastest machine time was not the best pawn. I kept the slower finishing pass, and the job I settled on comes in around two hours seven minutes, with a pawn that needs very little sanding.

Worth setting this next to the very first optimization, because they look contradictory and are not. Going from the 0.1 mm to the 0.3 mm engraver was a speed win that cost nothing, because the surface still came out clean and the finer detail was invisible after sanding. Going from the 0.3 mm engraver to the 1 mm ball was a speed win that cost too much, because that time the faster tool wrecked the surface. Same instinct, opposite outcome. The rule that fits both is to match the tool to the surface, and to bank a machine-time win only when the finish survives it.

Outcome

The pawn went from over five hours to a clean cut at two hours and seven minutes, and I learned where the real floor is.

StageMachine timeWhat changed
First clean pawn~5 hrBaseline: 0.1 mm engraver finish (crawling), one operation over the whole object, full traversal
Right-sized finish + coarse scoping~2 hr 28 minTwo changes at once: 0.1 mm to 0.3 mm engraver finish (the ~2 hr bulk of this drop), plus reordering bodies and dropping a redundant stem
Layered roughing on natural seams2 hr 10 minHand-rolled rest machining; the tool finishes each region with no full-length traversal
Sliced the buried sphere bottom2 hr 7 min (kept)Removed hidden interior geometry; the job I settled on
1×3 ball finish (rejected)~1 hr 22 min**Fastest on the clock, but left ridges that gave much of the saved time back at the bench and a worse surface for it. Not worth the trade.

The finishing-tool swap and the traversal cleanup land together in the second row because I made both changes before re-timing. The engraver swap was by far the larger share.

Final pawn tooling (the kept 2:07 job):

The lasting results are the methods rather than the numbers, and they carry to every piece in the set:

That last point reframed the exercise. Once the finishing is pipelined, with the next pawn cutting while the last one is sanded, the machine and the bench run in parallel, and the goal becomes balancing the two stations rather than minimizing either alone. Below the point where machine time meets hand time, more machine speed stops buying throughput and just leaves the machine idle waiting on hands. The real floor is not the fastest possible toolpath. It is the fastest toolpath that does not create work downstream.

Open Questions