CNC Repeatable Origin Guide

Alright, this guide is going to be a bit more quick and dirty than my other guides, since it’s mostly a setup and has a lot of variables you can play with. I’ll try to supplement with pictures though! :stuck_out_tongue: Keep in mind, this moves milling to the lower left of the work platform, due to the lack of rigidity, may present issue on deep/stressful cuts that apply enough pressure to deflect the surface. However most work shouldn’t be affected. A lot of things are out of the scope of this guide, I take liberties in your knowledge of the snapmaker, such as changing bits, using the control panel to jog around, setting the origins individually, and other such nonsense. However, as always, you can ask and either I, or someone else will do our best to help. This is somewhat a guide for those wanting to move up with their milling projects outside of just reliefs or text carving. The main use of this is for accuracy, and if you want tool changes, but are milling the entire face and can’t re-reference the top of the material.

Disclaimer: I am in no way responsible for any possible damage to your machine or materials, although risk is very minimal if you follow along exactly as I am going to include images of my settings, setup, and results. Please read the entire guide before attempting.

Materials and Machinery in this tutorial:
Snapmaker A350 + Enclosure
Tools: 3.175mm (1/8") 2-flute down-spiral flat end mill for roughing; 0.75mm Radius Tapered Ballnose for finishing.
Material: Maple Plywood - 228.6mm X 228.6mm X 19mm (9" x 9" x 3/4")
Model to be machined: 9 Frame by alexlopreciado found here: Download free STL file 9 FRAME • Object to 3D print ・ Cults
Prerequisite Print: CNC Guide Rails found here: PrusaPrinters
Optional Print: Dust Fence: PrusaPrinters

I: Preparation

1: Print the guide rails, I’ve included the gcode I used on the print page. Use M4x16 to attach them to the spoilboard.
1a: You can also use the optional dust fence for the other side to help contain the dust to the platform for easier cleanup.
2: Use any preference of clamping method, I used these to press against the guide rail: nice and low profile to stay out of the way, and let me CNC the entire surface.

II: Finding the Work Origin

1: Load in a straight bit you know the diameter of.
1a: I’m using a 3.175mm for my roughing, so it was what I already had in. Keep in mind the size of your bit, as we’ll be using that math later.
2: Locating X origin
2a: Carefully lower the bit down to the left of the material, then slowly move it against the side using the calibration card.
2b: When you feel resistance, jog Z up higher than the material.
2c: Divide the diameter of your bit by 2 to find the radius (3.175/2 = 1.5875). Jog toward the material (X positive) 0.1mm to compensate for the calibration card, then the radius of your bit (since the snapmaker limits manual control, I use 1.6mm here).
2d: The center of your tool should be directly over the edge of the material.
2e: On the control screen, go to the set origin tab, set X origin.

3: Locating Y origin
3a: Repeat 2a-2e, but from the front of the material.
3b: Set Y origin on the control screen.

4: Locating Z origin
4a: Use the normal method of setting the Z origin by moving the bit over the material and jogging down on the calibration card
4b: Set Z origin on the control screen.

5: Raise Z up and then tap “Go to Work Origin” it should move down directly over the lower left corner of the material.

III: Repeatable Origin

1: Take a picture of the control screen, unless you remove the rails, or change the machine to another function, this origin should remain the same and can be moved back to.
1a: This takes care of the eyeballing it on an “X” in the center of the material, and also allows you to utilize your material more effectively by knowing exactly where your bit will be.
2: If you’re doing multiples of the same project, this gives you a lineup and re-setup for finishing passes.
3: Z axis for bit changes will be covered in a later section.
4: If you want to center on your material, take your stock size and divide it in half, then move X/Y the result and set Origin.
4a: If you do this, you can skip section IV to change the work coords and use the same center method you’ve always used.

IV: A Side Note For CAM (Example In Fusion360)

1: You will have to make a note of the new work origin when you assign toolpaths to your model.
2: In your Fusion360 setup, in the stock tab you can either use a relative size, set your stock size to fixed, etc.
2a: Since I made my model the exact size of my stock and engraving from the top, I used relative with 0 offsets, making my stock the same size of my model.
2b: Setting up stock is outside of the scope of this guide, but if you need help, feel free to post and I’ll try to help.
3: The most important part here is the first tab, setup.
3a: Set your Origin to the top, lower left, this corresponds to where we put the bit earlier.
3b: If you forget to change from center, your model will be centered over the lower left of your material when you try to cut it.

V: Z, The Special Child of Origins (How To Repeat For Changing Tools)

1: There’s two main methods for ensuring Z is repeatable for roughing/finishing after bit changes.
1a: The first method is the one I’ll be walking through here, it’s best for engraves and cuts that need a definite depth from the face.
1b: The second method is harder to wrap your head around and makes the program setup more important, however, it’s a lot better for parts with through-cuts and is common in commercial CNCing.
2: Finding the thickness of your material
2a: Since you set the bit down on the top of the material, we’ll measure down to the spoilboard to use this depth later.
2b: Move the bit down to the front similar to setting the Y axis, but make sure to be over the MDF.
2c: Jog down and use the calibration card to gently touch down to the spoilboard.

2d: On the control screen take a picture or write down the Z-, DO NOT SET Z ORIGIN, JUST NOTE THE DISTANCE.
2e: This number is the thickness of your material that we have to return to later. (Mine was Z-18.40)
2f: JOG Z BACK UP, if you try to go back to origin while the bit is lower than the material, you risk breaking it by crashing into the material.
3: Run your roughing pass as usual
4: Change your tool for your finishing pass.
5: Follow 2b-2d, except this time, SET Z ORIGIN.

5a: Jog Z back up the exact same distance (material thickness) we found earlier, except in the positive direction. (Mine was Z18.40)
5c: What we did here was use the spoilboard as a reference point so we could use that point to find the top of our material, even if you’ve milled it entirely.

(Tch, finish depth was at a layer change, shame. Not bad for a test though. :slight_smile: )

VI: The Second Method (Do Not Use This Unless You Are Experienced, Which Means You Already Know It)

1: Instead of using the traditional method of setting Z0 to the top of material and all cuts are Z- X distance, we somewhat ignore the stock entirely.
2: The Z0 will actually be on the spoilboard and all cuts will be a Z+, since Z0 will be the lowest it goes, it guarantees you will not cut through the spoilboard, and ensures you can cut all the way through.
3: This also makes bit changes easier since you’re always setting Z back to the spoilboard, no having to back up the material thickness, especially since stock can be different depending on how they were manufactured.
4a: This is because Z0 is the spoilboard under your stock.
5: The main difference here is the con; you lose a lot of safety tests (i.e. go to work origin) to double-check things, and have to ensure your setup and work is correct before moving on.
5a: Pro; You get a lot more repeatable setup, and can even make the stock size a bit irrelevant as long as you have the torque to pull it off, and you get a lot more life out of the spoilboard by not accidentally cutting too deep.
6: In your CAM program you will have to setup a fixed stock to match your material.
6a: If you’re doing an engrave, set your model to be offset 0 from the top of stock.
6b: In the setup tab, make your origin point the BOTTOM at the lower left.
7: This is only really good for commercial practice when cutting all the way through, you can use the same setup for any material thickness (i.e. use the same program to make a 1/4" template, then a 3/4"+ product) since it always cuts down to 0 instead of Z- from the material surface.
7a: This also helps ignore inconsistencies in material manufacture, I’ve had plywood thickness vary up to 1/16" across 24" width.
7b: This is also good for surfacing material if you need a specific thickness before milling.
7c: This method usually requires a more rigid machine than the Snapmaker, since the platform has a bit of play it’s not precise.

VII: Prologue And Thoughts

So much for short, but anyway, there’s a ton of uses for this, especially having a dedicated origin. Since you always know where your bit is in relation to your stock, you can use it more effectively. An example would be for a simple cut, like a logo carve, keychain, or other small object. You could load up a larger piece of stock, run it once to make sure it works, then jog around to ‘stamp’ it in the material, especially if it requires cutting all the way through and standard clamping wouldn’t work on the small object. Or if your model needs to be in an exact location instead of centered, you can simply do the math and move it anywhere. Just knowing your start point helps so much. :slight_smile: Go carve something neat.

Once this test is done, I’ll post an update. :wink:


Nice writeup.

You can use a piece of plywood or a couple of pieces of wood, and then mill it. Then you don’t have to bother printing anything and your origin will be exact and your axis will be perfectly parallel to your machine’s axis - without having to do any math.


I have a couple different sizes so I can always keep my work near the center of the bed.



Let’s share the finished result.

To get the laser in the recessed surface, I took the material height. 18.4mm, subtracted what I set the carve depth at, 4. So I set the material thickness at 14.4mm and took off the lens shroud to prevent a collision.


Wow, that’s one really superb CNC. I have not yet tried the Laser or CNC as I only got my A350 with enclosure set up and running 2 days ago. Your project inspires me :slight_smile:

I’ve been trying to increase the repeatability of the machine by doing away with the paper/calibration card method. I bought a cheap Z-probe off Amazon that was designed for the chinese 3018 machines for a few bucks and crimped some alligator clips to the ends instead of the standard dupont connectors. My probe measures at exactly 19.3mm with calipers consistently around with several measurements.

Sadly since there’s no auto-probe routine, this is the method I use;

1: Get a cheap multimeter and set it in continuity mode.
2: Clip the wires to the probes of the multimeter, ensuring they do not touch.
3: Place the Z-probe base on the material (or spoilboard using my method above when changing bits)
4: Clip the shielded alligator clip to the bit.
5: Follow the ‘calibration card method’ by jogging down until using 0.1mm increments.
6: The multimeter beeps, signaling continuity, and thus the bit touching the probe.
7: Jog up 1mm, remove the probe/clip, jog back down the 1mm, then jog down what the probe measures (i.e. 19.3mm that my base measures)
8: Set Z origin.

This is a bit more fiddly than it being automated on say a 3018 machine, but it’s a lot more accurate than moving the card back and forth (plus you’re not off by the thickness of the card). This was the results of my first test using this method. Roughing was done with a 3.175 flat end mill, finishing was done with a 0.25 radius tapered ball, in 6x6x0.75" solid maple.


Looks really nice.

I have done the exact same in the past, but by putting a small piece of copper or aluminum tape on the material. Preferably in a spot that won’t get milled away and then you have a repeatable spot for setting your z-height in a repeatable way when doing toolchanges. The copper tape is very thin and it saves you from doing the math. Not that one subtraction is that much of problem :rofl:

With the copper tape it is also very easy to do this from the sides to find your corner. (don’t forget to take the diameter of your tool into account for X and Y)

where do you buy the right milling cutters?

I’ve purchased all of mine on Amazon.

I purchase most of my smaller ones on Amazon. They work perfectly well and when you break them (which you will) you’re not out much. HQmaster, Genmitsu/Sainsmart, Hozly, Uxcell branding have all worked well for me.
For better bits, I like Whiteside and CMT. Reasonably priced and perform well. For 1/4" when doing facing they give a nice smooth finish and can choose between upcut for material removal vs. downcut for finish.
This place has great prices on Whiteside and CMT:

And for longer bits:


Are you talking about something like this?
Z-axis Tool Setter

…only with just the sensor?

Kinda wonder how repeatable the digital ones are. Apparently the dial ones aren’t so hot. Would certainly be nice to just bolt one to an unused corner of the CNC wasteboard.

A proper tool setter is a micrometer specialized for measuring tool height. The inexpensive Z-probes are conductivity sensors. Below, they have a fixed button and a wire coming off. If you’re lucky, the probe is mounted with a spring and not just fixed in place.

No sensor, just a conductive probe and a multimeter. I posted an image a couple posts up. It’s crude, but decently accurate.

even better than the zero point button is this plate here, or even in addition to the plate with it you can then 3 coordinates at the same time and save !!!
Hier der Link zur Platte : “ängensensor-XYZ-Probe-kompatibel/dp/B098NXNSFH/ref=sr_1_1?__mk_de_DE=ÅMÅŽÕÑ&crid=1L30AF734ND89&keywords=Antastplatte%2Bcnc&qid=1643733534&sprefix=antastplatte%2Bcnc%2Caps%2C85&sr=8-1&th=1
And a picture to it.

Translated with DeepL Translate: The world's most accurate translator (free version)
Screenshot 2022-02-01 at 17-39-36 Turmberg3D - Tastplatte Werkzeuglängensensor XYZ-Probe kompatibel mit zB Estlcam Amazon d...

To avoid having to measure the length of the bit every time you change it, you can use the following tools.
Is perhaps at the beginning a little more effort to measure all bits, but then you have in any case all bits at the same height!

Here is the link to the tool:

Here in blue, but there are in different colors so that you can assign the bits also colored to its properties!

CAN any one her tel me whay the machin dont understand Work Ogin zero ???*
I do realy hate Snapmanker for this part thay cant xplain shit and torturial is way crappy:
Still i Cant setr Work orgin to somthing good… i load G-code to Machine Set work orgin …
Run boundery OK
Start and it runs strigth down 300mm and dont stop YES i know it is somthing wrong whit G-Code but i run same shit 2 yesr ago and it worked finr Have z axis turn around some how in the new firmwher ???
Z+ is still up or have it change to dow ???

I cant finde any info from Snapmaker What they think is Z + or Z- That is the problem i alvay run into whit this system like GOOGEL AND MS thay shal be so easy and automatic so they dot tell you shit …

So Simpel Q IS Z- down and Z+ Upp ???

On my machine it is oposit and i cant understand whay (that is an ather thing way cant the Luban terl me wher it is going it tels you when it ariiwes to a spot that im gonig her … )

1 Like

Sorry to say but it’s a user issue. Somewhere in your g-code creation you’re giving it the wrong info for your work origin.

I assume you’re using Luban? Luban is okay for reliefs but pretty much useless for any other cnc.

Do you have your correct machine selected?

Z 0.00 is work origin as set on hand controller which most people prefer to be the top of your material (although some people like to use the top of the spoilboard/bottom of material) It depends on how you set it in your CAM program.
Z + is above that height.
Z - is below that height.

Are you loading your g-code to the SM and running it from there? Or are you using Luban and running it through your computer?

Can you share some screenshots of your settings?