Help troubleshooting a this 2-sided machining method?


When I made a chess set a little over a year ago, I used steel dowels to locate for 2-sided machining. I found it was difficult to get the perfect fit, both keeping the piece perfectly aligned while still letting me [somewhat easily] remove the dowels from the wasteboard/piece.

I had a new idea one day, and then to my delight/surprise, @jwr independently posted precisely that idea here.

I’ve been meaning to try it for some time, and finally did. I first tried one of my chess knights, but the halves were offset, so I backed up to make a test piece. I got the same stair step and wonder if someone here could identify what I’m missing.

First, here’s the idea: For side 1, you locate from a stock corner as shown:

After machining side 1, we’ll have the following:

In the real world, I have an acrylic square I machined after using tape/glue to attach it to the wasteboard. Stock for machining side 1 would be positioned like this, holding with tape/glue until I run the face/contour pass, then clamping for adaptive clearing to create the top half of the model:

I’ve already machined the piece, but you can see what side 1 looks like when completed:

For side 2, the idea is that I’ve machined those “supports” from side 1. When I flip, I flip the piece about the y-axis and align the final surface of side 1 against my square. So that finished corner becomes the side 2 origin:

Here’s the real-world piece as it was machined on side 2:

My origin xy has not moved, so I just locate off the wasteboard to zero z for side 2. However, after machining side 2, I have a very consistent stair step in both x and y. It’s like the piece would have needed to shift ~0.25 in -x and +y.

Miscellaneous relevant additional comments:

  • after I machined the acrylic square, I never touched the xy zero for the test knight. I did power cycle between side 1 and side 2, so I wondered if it was positional error from initialization… today I re-located on both edges of the square and did both sides in the same session, so I don’t think this is the issue
  • with dowels, I found that the base of my pieces would be near perfect, but toward the heads, the stair step became very pronounced. I took this to imply angular offset. The holes at the base were positionally correct, but because the piece could “wiggle” due to slop in the dowel holes, it could be tweaked by some small angle when I clamped it, increasing the error as the distance from the base increased
  • because this piece has a very consistent stair step along the whole perimeter, it seems like something purely positional, not due to me clamping it wonky with angular deviation
  • those “supports” that get fully machined from side 1 should be 6mm thick, 25mm wide. I get 6.2mm and 25.0mm. I thought some inaccuracy could shed light on the reason for the stair step, but with the x dimension being dead on, I don’t understand why it’s stepped in x. The y dimension could be due to end grain vs. face grain, or my x vs. y calibration (which I’ve never done)

Am I missing something silly here? @jwr did you ever have new insights or a breakthrough with this method? It seems so much easier to me than dowels in theory, so I’d really like to figure out what’s going on in real life!

Here’s the Fusion 360 link if anyone would like to take a look.

Many thanks!

You observe a 0.25 mm step / shift? That is not a lot. I think the procedure is sound, it is just a matter of having your machine in good shape and using careful machining practice. For instance, when was the last time you resurfaced your MDF? Is it truly a flat surface?

The first thing to verify would be the exact location of the XY position. Any deviation would be doubled in X when you flip the part. Is it possible you had a little springback cutting the guide? Maybe a second spring pass in that toolpath.Or just run it twice.??

There’s going to be some inherent error when flipping the part & moving the XYZ zero point to another spot on the part. Even if it’s the same spot on the machine, it flips & moves on the part.

Rather than banging my head against the wall. I might consider just cutting the full depth of the center section in the first setup, and then just finishing the bottom face & round ends on the 2nd setup. Take the parting line out of the equation.


Having been called out, I’ll try to describe my procedure as best I can. I slowly refined this technique and right now I’m getting fairly consistent results on my Nomad 3. But, to begin with, an error of 0.25mm is fairly small! I think I managed to get to around 0.1mm or slightly less (see pictures below), and I don’t think it’s possible to do much better, especially with wood.

Here’s how I approach two-sided machining. There are two CAM setups, but I zero the machine only once. I use the tiger claws and stops to hold my work, forming a square of sorts using gauge blocks. These are important! They help greatly with several things: aligning work, setting zero, and preventing the stops from biting into your work, which can ruin the positioning.

The first CAM setup machines the top side of the model, but leaves a frame around it. Two sides of that frame are important. These get a 12mm deep cut (12mm so that I clear the gauge blocks). The other two sides are left untouched, we don’t care about them. I also make sure the top gets surfaced.

After this step, we have the top side of our model and the frame. This is what it looks like (and note the position of the zero for the next setup!), the stock still hasn’t been flipped over:

The second setup has the zero positioned at the corner that we machined in step 1. The nice thing about this approach is that we don’t care about the stock, what we use for reference is a corner that we ourselves machined. So, we proceed with step 2 (this shows the stock already flipped).

I use Fusion 360, which makes this significantly easier. I model the thing itself and sometimes add tabs as well, but the frame is created in a “manufacturing model” (sometimes it’s easier to add tabs in the manufacturing model, too). This means I don’t have to redo everything from scratch if my model changes.

So, that’s the CAM part. Now let’s look at the physical side of things.

Here’s how this setup looks physically on my Nomad (I only have pictures taken at the end of step 2):

If you look closely, you will see that there is a “parting line” of sorts around the model, but it’s so tiny it’s almost negligible (also, two of my supports/tabs broke).

And here is a finished example in softwood:

I’m pretty happy with those results. But it took a number of tries and I had to eliminate some sources of errors.

On the CNC, you want to set the zero at the XY corner of your square with Z zero exactly at table height. And you want that zero to be very precise. This was my major problem, I couldn’t get the zero to be precise enough. I tried using the BitZero, placing it on a square forced against those gauge blocks:

That did not work too well. The XY error was significant. So I then tried setting the XY zero manually, by sliding out one of the gauge blocks, moving the probing pin so that the block couldn’t slide in, then moving the X until I could slide the block back in, and then setting the zero offsetting by 1.5875mm (half the diameter of the dowel pin) (repeat for Y). This worked very well for XY and reduced the error to almost nothing. I then tried measuring Z using the BitZero placed on the table, but again, the results were inconsistent. So I settled on zeroing Z using the same method: try to slide a block under the probing pin, if it doesn’t fit, lift the pin increasing Z, until it fits.

The fully manual zeroing method gives me good (and consistent) results. I’m not sure how precise the BitZero is intended to be, but it doesn’t work too well for me.

The other things I learned to watch out for: you need to clean the table before the flip, because any debris/leftovers will not allow your model to rest on the table and will increase your Z error. Also, machining those two reference sides of your frame is really critical, so use an endmill that is known to be precise (e.g. not Carbide #101) and go slow. Some of my failures were because the endmill diameter was not what I expected, and some were caused by going too fast, where deflection ruined my precision.

Overall, I’m pretty happy with the results I’m getting, but I feel there is still room for improvement. I really wish Nomad shipped with a better table: I’m losing not only Z, but also lots of XY space needlessly. The Nomad table could easily extend to the left and slightly towards the front, and have a way to set up a precise square corner exactly for this kind of work. Also, the sizes of the tiger claws mean that sometimes you end up with stock that you can’t clamp without using extra material, because you end up in between two clamping ranges.

The nice thing about this approach is that it lets you cut models of varying sizes (the flip jig restricts you in what you can machine).

I hope this helps!


@kelaa Thanks for the gut check. It’s been a while, but I have no other reason to suspect the flatness of my wasteboard being an issue. It is good to hear that 0.25mm might not be as much as I thought… I was worried this implied something off with the theory vs. that it might just indicate slight positioning error (more on that in a sec).

@Tod1d I did cut the square 2-3x on the final contour pass, but also manually touched off again, so even if the position of the square were slightly off, (a) both axes are parallel to my machine axes (shouldn’t introduce any angular effects when flipping) and (b) re-touching off and not changing my origin between cutting sides should leave that corner in the right place?

Re. cutting the full depth, this would be great, but my real use case is a chess knight so the halves can’t just be correct with respect to an outer profile, but also the details. The eyes of my initial test, for example, were obviously offset when viewing from the front.

I introduced a contour around the outside on side 2, which allows me to look for stair stepping and manually tweak the axis to accommodate, re-cutting the contour each time to chase it flush. This has worked great, however when I first went to do this, I was surprised not to need it on the first test piece! What I’m now wondering, along @kelaa 's lines is if my clamping on side 2 was forcing the part off a bit. With the contour, I now have to rely on tape/glue to hold side 2 so I have access all the way around. I wasn’t doing this previously and just clamping alone might have been moving it vs. tape and glue leaving the part nice and flush against the square.

Subsequent parts have continued needing some manual adjustments of the zero, so I think my conclusion is just that I’m not able to perfectly position these as well as I thought between cuts. At least it’s not the method that’s suspect, though!

I appreciate you both taking a look!

Thanks for the detailed explanation and please know I only “called you out” in the nicest sense, as I do think this method is much easier than dowels and I was glad to see someone else think of it! I’m just behind in actually trying it and wanted to know if you’d had any breakthroughs since your last attempts.

The XY error was significant. So I then tried setting the XY zero manually, by sliding out one of the gauge blocks, moving the probing pin so that the block couldn’t slide in, then moving the X until I could slide the block back in, and then setting the zero offsetting by 1.5875mm (half the diameter of the dowel pin) (repeat for Y).

Very good to know. I assumed my square was “good enough,” but I’m re-visiting your setup and like that you have the stops there to prevent deflection. My acrylic is just taped and glued down (this was just a prototype test, and cutting on the machine was the easiest thing I could think of. I think the clamping against your square is really nice and I may see if I can set up something like this.

Also, machining those two reference sides of your frame is really critical, so use an endmill that is known to be precise (e.g. not Carbide #101) and go slow.

Wow, this surprised me. I happen to be using an Amana down cut… but what makes you suspect a C3D #101 could be off by e.g. 0.1mm?

I found it interesting that your z zeroing sounds even more difficult/sensitive. I’ve had fantastic results height wise just visually watching until the light goes away under the bit, jobbing by 0.025mm. I’m still trying to understand how I get so off in x/y on subsequent runs (I’ve cut ~4 things using this new iterative contour approach).

Anyway, great stuff and thanks again for the update/additional information. I think my biggest improvement will come from getting something more substantial attached to the table so I can clamp like you’re doing. I really like that. I debated leaving a full wall around the whole part, but didn’t like the slower adaptive cutting to clear so I don’t currently have it, but my reduced locating surface might be another issue I’m wrestling with.

1 Like

The Fusion 360 link that you provided doesn’t seem to contain the manufacturing side of things, just the design. Can you attach a f3d file here? If it complains about the extension, just rename it and tell people that you renamed it…

And, did you say you have a total of 0.25mm of error or that the first side itself has a 0.25mm error and then the final flipped side has approximately a 0.25 inch error? Is the final error the same in x and y?

If it’s really a 0.25 inch of error, I would suspect something in the CAM setup because that would be hard to accomplish by a machine setup error!

The stability and precision of your positioning setup is very important, if it moves/flexes by any amount, that’s the XY error you’ll get. I had problems with claws biting into material, that alone can easily cause a 0.25mm error. Hence the gauge blocks, which helped a lot.

For Z I think your approach is just fine, and the approach with a piece of paper should work just as well, I just happen to use one of the gauge blocks as a replacement for a piece of paper :slight_smile:

See this discussion: Actual size of the #102 endmill (where kind people were also quick to point out that I should never ever try to measure and endmill with calipers!).

I started doing test cuts with endmills just to verify what I’m getting and the results were… surprising. Some of my most precise endmills turned out to be from Aliexpress (Dreanique brand). The #102 I got from C3D with my Nomad is way off and I don’t use it anymore. It won’t be off by 0.1mm, but -0.05mm is fair game.

But, the biggest source of XY error for me after fixing my workholding setup was deflection when going too fast (climb milling) while cutting the outer two reference walls.

1 Like

@jwr Good stuff

I’m interested in this topic as I will be shooting for 0.001" (0.025mm) tolerance if I can get it.
I like using the gage block as the “feeler” rather than paper that is 0.004" thick.

What I was referring to in my post was this. Hopefully it will help someone.

In the top image I’m shooting for a 4" block with a 2" hole or slot machined from both sides.
If my zero is not nearly perfect, I exaggerated and used a deviation of 0.1", the misalignment will be double the error.
In the second image, if the workpiece is off, you also introduce some error.
And in the 3rd, if both conditions exist in the same direction, you are now compounding the error.

@Tod1d I’ve spent lots of time thinking about whether my approach doubles errors, and every time I try, my brain melts and I am no longer sure.

I think XY errors are not doubled, because it doesn’t matter where you machine your reference corner in the first setup. You can be off by an inch and it won’t matter, because in the second setup you are placing the machined corner against the XY zero. What I think matters is that you get three flat surfaces and that your model is positioned correctly against these surfaces.

I think the same thing applies to Z: if, in the first step, you cut in too deep, it won’t matter much, because you will have cut in too deep on both the model and the top surface. After the flip, you will get the error, but only applied once, not compounded.

But as I said, my brain melts when thinking about this.

1 Like

Jan, I drew that out for my own benefit as well as anyone else’s :laughing:
I’m sure I’ll be experiencing the same brain-fry when I get my machine next month.

The doubling error would occur when XY zero is not perfectly aligned with with your guides.
You eliminate the 2nd condition by machining your J corner for the next setup.
But if you’re not putting that corner at exactly X0Y0 when you flip it…

I like that you mention also machining the top surface & not just assuming it’s perfectly flat & level.

1 Like

Have you used a good square to check that the outer walls of the part are fully square with the faces which sit on the spoilboard? (also, did you surface the spoilboard recently? Is the machine trammed etc. ?)

I’ve done a few of these setups with Aluminium and what I found worked well for me was to

  • Add an additional MDF to the top of the spoilboard, surface it flat
  • Bore it for locating pins (in the Y axis not X which is unreliably square with Y)
  • Machine the front and left edges of the fixture to set zero from, also to align with a dial gauge if I need to remove and replace the fixture (again, test in Y only). I add some superglue to the ‘square’ corner and to the dowel pin holes to reinforce them before the finishing pass, make sure you let it dry properly.
  • Bore the part, only needs to be approximate here
  • Locate the part on the pins, zero off the left and front edges of the fixture (using an edge finder in my spindle, not the bitzero and a dodgy sized cutter whose flute angle influences measurement)
  • Machine the part, flip about the pins, re-zero from fixture if you’ve power cycled or pressed STOP on a job and had the Shapeoko re-zero and introduce errors that way

Ugh. I think my computer might have lost power between finishing that, making it, posting this, and now. I also see nothing in my manufacturing tab, not even a setup! Shoooot. Let me fix that tonight and get back to you.

With my revised process, I’ve been doing the contour from the top as well, which lets me study for overhangs in x and y, and from there I can shift the zero points slightly, re-run the contour, and wait until both sides are flush. I’ve been finding I need adjustments between 0.05-0.25mm range.

Since it is not consistent between my attempts, I lean toward @kelaa 's assessment that I’m probably just struggling with positioning/clamping repeatably after the flip. It’s somewhat close in x and y, but not always identical between the two (sometimes I adjust y by 0.05mm, x by 0.15mm to get my contoured profile from side 2 to yield flush sides).

If it’s really a 0.25 inch of error…

It’s 0.25mm :slight_smile: And not even always; sometimes more like 0.1. That’s what this was meant to show (that hairline along the curved edge just below the halfway point):

I’m inclined to agree on compounding, and tried to convince myself that here when I was chasing the possibility that issues were coming from my axes not being perpendicular. Take a look at my attempted illustration here.

I still feel some brain hurt about the angular case… but I agree they aren’t doubled in this case. The part should be at (0, 0), but with this technique, the first side is irrelevant since wherever it is, the locating geometry is machined into it. Upon flipping, if either the machine or the part aren’t really at (0, 0), that’s the error, but that’s all the error there is. Either the machine needs to be aligned to the true (0, 0) of the part, of the part needs to be moved to the current true (0, 0) of the machine.

At 0.25mm, I agree that it’s probably repeatability of the second side setup. Endstop repeatability could also be an issue. If your machine homes between jobs and the end stops are randomly off by +/- 0.25mm then it would be a problem but more likely is just the physical process of trying to place it down and secure it for the second side at < 0.1mm accuracy. That’s hard!

1 Like

@crpalmer Ok, no promises this is exactly what I did the first time… but quickly updated this with reasonable toolpaths to show what I was doing. The link should be updated, I think? Otherwise, attached. Hope that helps and sorry about that.
flip_test_piece (282.8 KB)

all the double sided machining I’ve done so far has been with two pins along the center line.

I am intrigued at trying the setup mentioned as it seems less restrictive on length of parts which I’ve been hitting more and more lately.

One thing that stands out when looking at it is that you’re using the model height == stock height. If that’s right, then you first surfacing operation isn’t necessarily removing anything. I’d try to leave a decent margin of extra stock that you remove. If not, then the stock needs to be exactly parallel to the build plate or else there will be a slight angle on the sides.

I’d personally like to leave at least 0.5mm to ensure it gets level and I’d happily leave more if I can.

That said, I still think that the placement and securing of the part after flipping it is the most likely problem. When I first tried to flip (using a SMW vice), I found I couldn’t do it accurately because the jaws would clamp into the part in some random amount. So, even though my y zero was “known”, reality didn’t match what I thought I knew because of the clamping pressure.

I was doing setups like this:

Similar idea, where the side 1 position on the wasteboard isn’t critical as you are machining the side 2 locating features in on the spot. That said, the dream process is:

  • pick a location for the left locating pin hole, set as xy=0
  • machine locating pin holes in waste board
  • tape+glue hold down piece so the side 1 origin is CloseEnough over the left hole
  • pull the piece, insert locating pins, and push the just-machined holes onto the pins

My issue was simply that I couldn’t get the pin fit right. Maybe it’s my OG z-axis flexing and yielding tapered holes? I could either pound them in and then really struggle to get them out, or have what felt like the perfect snug fit… only finding out after some issues that I could definitely still “wiggle” the piece a bit, meaning I was introducing the possibility of angular offsets.

The bottoms of the pieces nearest the origin would look great, but the pieces further away, as well as most/all of the heads would have a stair step. Folks are saying 0.25mm is pretty good… but I’d then chuck these on my drill press to sand, and found it took quite a bit to get a 0.25mm stair step out of a piece like this.

I’m definitely shooting for better. Give this a whirl and see what you think! So far I see no reason that dowels are any better, unless I got e.g. one of these aluminum wasteboards with perfect holes, or could bore perfect holes. I had to bandsaw some of my pieces right up to the pin to get it out. No fun.

Yeah, sorry about that and it’s deceiving. I do that just to simplify the stock setup. When I first put a new piece in there for side 1 machining, I touch off on the surface and then set z to e.g. 0.25 or 0.5mm. From there, the contour and adaptive are at the model height, and I touch off on the exposed “support” for subsequent operations (using other bits in real life on my chess knight).

Good observation about the clamping. I’ll have to study that more… I really like @jwr 's setup with the metal square and either the full aluminum wasteboard or that insert or what have you. I had really good luck with pins for the first chess set I made, so honestly I thought this much offset was me not catching e.g. some modeling error (not actually modeled symmetric) or a mental error going on with respect to flipping? I still think I should be able to do better than 0.01in… but now that I realize I’m getting close to 0.005in, I guess I should be happier!