Using any-shaped material with a (Snapmaker) rotary module

Using any-shaped material with a (Snapmaker) rotary module

Usually rotary modules for CNC routers and the software used to create the tool-paths for such modules assume that you are using perfectly cylindrical material. It is often much easier to start from differently shaped material since for example square shaped wood blocks are far more common (and cheaper) than cylindrical ones. Therefore I want to present in this article my approach to break these cylindrical limitations.

Let’s first look at this problem a little bit theoretically, using this owl model as an example. Assuming we have a rather weirdly shaped block of wood the first task is to find a way to fit the object (by scaling and rotating) inside the block of wood.

Next we find a circle/cylinder which would be just big enough to include the object.

The center of this circle will be the origin for the whole project and the workpiece has to be attached to the rotary module so that this center point is exactly on the rotation axis.

In an ideal world we would have a cylinder with the diameter A, that we could just use directly to carve our model. But in this situation, if we just assume to be working with such a cylinder and use A as the material diameter in Luban, the bit will crush into the shaded area and most likely break quicker than we could reach the emergency stop button.

Instead we have to find the size of the cylinder (B) that would include the whole block of material, starting from the same center point as our ideal cylinder.

And then it’s just a matter of telling Luban to carve the model with the proper size fitting in A from a cylinder of size B.

For this we set the Length L of our material, set the diameter D to the value B we determined above, and after importing the STL set the size W to the circumference of the cylinder, which is A * π

Then we set Y to a value that the model is inside the material (H/2 or bigger) and after processing and choosing the proper settings we are good to go.


Since Luban doesn’t have functionality to do a roughing toolpath with a bigger tool and a finishing toolpath with a finer tool afterwards, this will result in a very, very long carving process, with the fine tool carving in the air for most of the time in the beginning to get from cylinder B down to cylinder A before the actual carving can start. Below I will walk through one concrete project of mine and how I tried to reduce the carving time at least a little bit.

The model I’m doing is still the same owl as linked above, but instead of a weirdly shaped block of material, I’m actually starting from a square 7.4 cm x 7.4 cm block that I cut to a length 15 cm to fit into the rotary module.

I marked the center on both sides and the circle with diameter A in which I want to carve the model, and measured the maximum diameter B (10 cm) and the diameter A (7 cm).

For attaching this block to the rotary module I decided to drill a big centered hole (3,5 cm) in one of the sides, so I could use outside clamping.

After an unsuccessful attempt with a forstner bit (mostly due to the lack of a drill press) I realized that I had the perfect machine to make this hole at home already, a Snapmaker 2.0. And so with some creative clamping and a pocket tool path, the hole was done in about 10 minutes.

With this I was able to clamp my piece of wood into the rotary module, and to keep it stable I attached the tailstock as well. And in this position the material would remain until the end of the project.

For Luban the work origin has to be in the center of the “cylinder”, right where the tailstock touches the material .With the tailstock in place, and not having cylindrical material I wasn’t able to use the origin assistant, therefore setting the work origin was a little bit more work but totally doable.

First I moved the bit down in front of the material as close to the center as possible without touching the tailstock and centered the bit horizontally, to set the X-Origin. I also rotated the material, to align the corner with the bit, setting the B-Origin that way.

Next, I moved the bit to the left and down to match my marked center line to set the Z-Origin.

And finally I aligned the bit on top of the material so the center of the bit is in line with the end of the material, and set the Y origin in this position.

At this point I was also able to verify the Z Origin since the 50 mm (radius) matched my measurement of the 100 mm diameter B.

As I mentioned earlier doing a direct carving in this setup with a fine bit will take a very long time, and as you might have noticed in the photos above I had already prepared the machine with the biggest bit I have, a 6 mm flat-end mill. With this bit what I want to do in a first step is to drill the 100 mm “cylinder” B down to the actual cylinder with diameter A.

To do this I created a simple cylinder object (size doesn’t matter) in FreeCAD and saved it as STL and imported it into Luban with the same setup as mentioned above, setting the material diameter D = B = 100mm and the width of the object W = A * pi = ~219.9mm

The height of the cylinder will be the length of the material minus the 20 mm safety distance (i.e. the area that Luban suggests to keep free for the clamps), so in my case H = 130mm, and then Y adjusted to H/2 = 65mm to move the cylinder to the right position.

In Luban the cylinder object will appear as just a white rectangle which can be confusing, but using the simulate functionality makes it clear that everything will work as intended.

I’ve included my carving settings here, but those will rely heavily on the bit your are using, and how brave you are. I usually stay rather conservative with the settings I use.

It took about 2 hours to get from the square block down to the 70 mm cylinder, which still involved some cutting in the air. There might be programs that create a more optimized path, but still I think this wasn’t too bad time-wise.

Remeasuring the cylinder resulted in 68mm, probably due to a slight error in setting the Z-Origin in the beginning, so for the rest of the project my A-value is 68mm now.

Here are some of my thoughts that went into how to position the owl for the carving.

  • At the one end there are still square corners sticking out of the cylinder. If the bit carves too deep the spindle / collet nut might crash into these corners. The 12 mm safety buffer is enough to prevent this.
  • On the other end I left another small safety buffer, because with one of my attempts I managed to carve into the tip of tailstock, with a similar “space between the ears” that should be carved free.
  • But the diameter of 70mm / radius of 35mm is too big for the included Straight Groove V-bit, which again would result in crashing into the remaining cylinder. There I used the same approach as above to carve this part of the cylinder down to an even smaller cylinder, still using the big 6mm bit.

With all of this preparation I used the bit assistant to switch from the 6mm bit to the straight groove V-bit.

I started with a Linkage toolpath (which would be able to clear the space between the owl’s ears) with a safe step down of 2mm. Unfortunately I had to discover that this toolpath tries to go all the way down to the center before moving on to the next part of the model, which considering the diameter of the cylinder and the length of the V-bit would result in a crash soon, so time to engage the emergency stop button.

I have ordered bigger/longer V-bits for the next time, but for now I recreated the G-code as a normal Rotary toolpath, with the idea to then finish of the ear-part with an extra Linkage toolpath at the end.

And with this a very lengthy carving process started. The estimated time according to the display is over 100 hours, but the software seems to be really bad at estimated the time for rotary toolpaths. For example for the initial carving of the cylinder the estimated time was 8 hours, and it was finished in just about 2 hours.

At the moment it takes the Snapmaker about 3 hours for one pass along the full length. With a maximum of 18 passes (radius 35 mm / step down 2mm) this should be done in about 50 hours. So far there’s not much to be seen, but the first pieces of the model are starting to appear.

The whole process took about 36 hours (with breaks during the night) so it was done after three days.

Unfortunately the tip of the bit broke off near the end of the project so the final parts weren’t fully carved out, and I couldn’t go ahead with my attempt to add a final “Linkage” to improve the ears, but the end result (without any finishing) is still very impressive.

I still have some manual cleaning up to do now (like removing the “hat”), so a final picture is yet to come.


I have to say that Gerwin Sturm is a very professional maker and his work is fantastic. We have invited him to join our forum and wish our community can cooperate with him in the near future.


This is fascinating! I can’t wait for my module to arrive!

Fantastic write-up. I cannot wait for my module to arrive, and am glad someone figured out how to do this. Was going to build a jig that would turn square stock into round, now i don’t have to.

Thank you for your support. We are going to release Snapmaker Luban 3.15, which is more powerful and versatile. It would improve the user experience with the Rotary Module.


An alternative to drilling the material would be to use my customizable 3D-printable Round to Square adapter: Snapmaker 4-axis CNC Round to Square Adapter by herbw - Thingiverse.

Hello @Edwin,

What kind of Collet and nut did you use with the 6 mm flat-end mill?

Hi, the CNC module uses the ER11 collet and you need the ER11 nut for 6mm bit.

1 Like