I'm trying to model a part that has a (helical) milled groove using the boolean modifier and can't find a good way to model the cutting path of the bit. I have tried using the screw modifier but this doesn't work well with 3D shapes. If I use the profile of the bit then it gets pretty close but doesn't quite replicate the final cut the bit would produce.


In this image I used the screw modifier both on the 3D shape and the profile. The best part of the screw modifier is that it extrudes to the next step which prevents visible steps creating a smoother result. The problem is all the interior faces / vertices it creates with 3D shapes. Also the face normals go wonky. Screw Modifier w/ Mesh (Left) - Bit Shape (Middle) - Screw Modifier w/ Profile (Right)

This image uses the array modifier + object offset set to an empty rotated 1 degree and shows the difference between the profile (of the cylindrical bit which amounts to a rectangle)(Left-Blue) and a full cylinder (Right-Red). enter image description here

This image is to help visualize the problem. At each "step" of bit movement the removed material has to match the full shape of the bit or the final cut won't match what is actually happening. enter image description here

The closest I can probably get is to use the array modifier, P-Key->Separate loose parts. Then Union Bool to a final shape. Obviously that's an incredibly tedious process if you're trying to get a high resolution result by using more steps.

I may write a script for this and will definitely share and link if it works. But I've seen some really clever and elegant modeling solutions on here so hopefully someone has an interesting way to reproduce this type of machining operation.

  • $\begingroup$ There are a couple of questions which might help find an approach...1. Will this need animating? 2. Can this be a render-only effect, or do you need the mesh (e.g. for printing?) $\endgroup$
    – Robin Betts
    Oct 10, 2018 at 20:27
  • $\begingroup$ Doesn't need to be animated but I do need a manifold mesh as the end product. $\endgroup$
    – AJ_C
    Oct 10, 2018 at 21:42

2 Answers 2


This might not be quite what you're looking for, but come back (comment) if it isn't....

I'm starting with a 32-sided cylinder, Z-up, rotated RZ in edit mode by 360/64, so its flat sides face down X and Y.

  • Cut across the ends of the cylinder, joining the faces facing Y and -Y, preparatory to making a central section (see below)

  • Cut in circumferences, and SShiftZ scale them in XY to create the profile.

  • Split a copy of the bit as shown.

  • Make a central section made by duplicating ShiftD the X - central face-loop, and flattening its front and back sides by scaling to 0 in X about an unscaled vertex on each side. (Set pivot to 'active', and select an unscaled vertex last)

  • Make front and back sections made by taking the remaining faces, and extruding their inner edge-loops to X=0, so they meet in the middle. (E, followed by SX0, with pivot set back to '3D cursor' at the origin). Split those off to new objects, as before.

  • Create the curve which will be the path of your bit.

  • Assign an Array modifier to the central section, Relative offset to 1 in X, count set to 'Fit Curve', and Start and End Caps set to the other sections.

  • Assign a Curve modifier to the array, down X. (It's easier if the origin of the curve coincides with the origin of the central section)

enter image description here

Now you could use the result in a Boolean, or turn it inside out, remove the top face, and model with it.

  • $\begingroup$ If I'm following you this is essentially the process of using the array modifier with start/end caps. There's still the issue with using a section of the bit during the translation as it doesn't replicate the shape that is cut at each "step". I updated the question with an image that shows what I'm talking about. Also I added that the operation is a helical cut so it's translation + rotation which makes for a.. um.. interesting shape. But thanks for the answer. I think this method would work for translation only Operations. $\endgroup$
    – AJ_C
    Oct 14, 2018 at 2:42

There's another approach I was hesitant to post, because (at least on my not-so-poky machine) it's hard to get the resolution high enough to get clean results, although some judicious use of the Decimate modifier at the bottom of your stacks might help a bit. Really I was thinking of an animation solution here, but it doesn't animate well. An unfortunate coincidence of vertices at frame X can cause the Boolean to fail.

  • Make the bit as a Basis Shape Key
  • Add a second relative shape key of a stretched version of the bit
  • Assign a Remesh modifier, tweaking scale and octree depth
  • Assign the Curve modifier and adjust the shape key weight to stretch down the curve
  • Assign the Boolean modifier to the stock target.

Assigning Subdiv. modifiers above and below the Curve and Boolean modifiers can help up the resolution at the right times to cooperate with the remeshing, while maintaining the shape of the bit. (Don't forget the 'Simple' option in Subdiv.)

enter image description here

Maybe there's someone here with more experience of a dedicated constructive solid geometry application, who could say if that might be the way to go.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .