3d printed threads

I am having issues with 3d printed threads on the A1 and also my P1S. The threads look OK but do not screw in together but bind instead. In order for them to work I often have to use a tap and die to clean them up which should not be needed. To give everyone a example, I printed the A1 AMS riser and I cannot get the 3d printed screw to thread into the upper part of the riser. This is with the Bambu Labs provided models and slicing settings. I had the same issues with the Bambu engine hardware kit (P1S in this case). Anyone have any suggestions on what is going on? Ive done this with other printers with success. Just not with the A1 and P1S.

I’m currently printing the same model that has 8mm threads (with a 0.1mm clearance on the top and bottom of the nut thread part) in lots of different filaments. I am finding that most work fine - but for the odd filament I have had to add an extra 0.05mm clearance - therefore I wonder if your issue is filament related.

1 Like

It’s probably over extruding a bit. Some colors are worse than other’s too, I calibrated 8 Bambu ABS colors using auto. I got a min value of about 90% for some lighter colors and max 100.1% for black.

Creating 3D threads in CAD was one of my early self-taught endeavors in 3D printing. I undertook this project to refresh my outdated CAD skills, which I hadn’t used in years. This single exercise, where I transformed a cylinder into a 3D nut and thread, provided valuable learning and enjoyment. Additionally, it imparted specific engineering insights relevant to 3D printing challenges. If you can master this skill, you’ll be well-equipped to tackle various functional 3D printing tasks.

So here is the simplest answer to your question. Assuming you have two parts that actually have been proven to work elsewhere, as in a Printables or Thingiverse model, and all you want to to get them to work on your rig, there are simple steps.

The problem is that the holes and the cylinders are out of tolerance with each other and they simply won’t fit. That’s just the basic fact of physics of filament. Fortunately this is really easy to fix and baked into the slicer’s software.

Hole compensation will change the size of any enclose object by the size set in the precision section under quality. So if you find your hole is too tight, try adding a negative number and any contained openings in your model will be expanded by that amount.

Now if it’s the screw that is too large, same principle. Use the X-Y Contour Compensation and that will shrink any outside dimensions by the appropriate amount. Just remember that -0.1 shrinks by 1mm and 0.1 grows by one millimeter. That may seem obvious but it’s too easy to overlook.

#1 Tip of the day

Now if you want to calibrate to a specific external dimension. Here’s a trick I learned that has amazing benefits. I designed in CAD a specific thread on a bolt and likewise on a nut. However, I tested them on real-world steel nuts and bolts and calibrated by filament to those dimensions. This really allows you to dial-in some very, very precise settings and ensure that what you see on the screen is what you’ll get in the real world.

Calibration tools

If you haven’t tried it out, Orcas slicer has baked in calibration tools that I like. These are much better than those found on Printables and Thingiverse because they are baked-in G-code. The one I like for dimensional calibration is the Orca Tolerance test.

This prints a very simple 6mm hex holes each with an incremental margin of size from 0 to 0.05, 0.1, 0.2 etc.

All you do is print that and take a 6mm Allen Wrench and place it in the holes. The one that it fits into is the X-Y hole compensation for your filament. Print it again and your Allen key should fit in slot zero with no gap. Adjust as needed and repeat. It’s damned near fool proof.


Today I performed a manual calibration test on the filament that I am using. I’ll reprint a couple of the A1 AMS riser parts and see if I get better results. I’ll let you know how it goes.

The reprint with the calibrated filament adjustments was better. Still had some binding on the threads which was expected but with a little back and forth I was finally able to screw the bolt into the riser successfully. I would have thought that the auto flow calibration on the A1 would have had it reasonably close but I guess not.

Hi @Olias, just reading your post as I’m having issues where male threads are coming out a few tenths oversized on the minor and pitch diameters, but fine on the major diameters and plain shafts, so was looking for a quick way to change without remodeling the part as a test…

One thing I was hoping you could clarify was the offsets. You say that setting to -0.1mm reduces the size by 1.0mm, is that true? Doesn’t seem intuitive at all? Also, I am presuming that this is a radial change on the external size?


I can’t speak to the major/minor deviations that you are experiencing other than to speculate that you’re seeing a multiplicative affect as the part scales. This would be expected with X-Y compensation. It is a blunt tool but I’ve always suspected that if let’s say I have a 0.1mm change and print a 1mm part, I’d see a 10% change in the part diameter. However, if I was printing a 100mm part I wouldn’t necessarily expect to see a 10mm change. I simply haven’t test that theory though.

To answer your question though. Rather than try to explain it, the best way to wrap one’s mind around hole size adjustment is to print a sample part and see the affect for yourself. That’s what I had to do to best understand what the slicer was actually doing. This has more steps than using the example I gave above but it helped me clarify in my own mind exactly what the slicer was doing.

BTW: This process also is another way for Bambu Studio users to calibrate the X-Y compensation near perfectly if one isn’t using Orca with it’s baked-in calibration tool.

Here’s a simple exorcize that can be done inside of the slicer without the need for CAD. You’ll need a known size round object to use as a pin gauge. A drill bit is perfect for this, it can be any size but something around the size of what you’re trying to create is fine. Any metric drill you have will work but if all you have is imperial lying around 5/16th is probably the closest to 8mm. Or refer to this size chart.

  1. Create a cube primitive
  • To make the part print faster, reduce the height to 8-3mm and leave the size around 20mm to account for filament shrinkage. In my example I’ll leave it at 8mm high because it displays better on screen. Normally I use 3mm height to print fast. You can also get away with a 10mm square but know that it will be more susceptible to overall model filament shrinkage.
  • Center the part on the build plate.
  1. Create a Cylinder part with the diameter of your drill bit.
  • Center that part in the build plate and ensure that it is passing through the cube.
  1. Select both parts and make them an assembly
  • Right click on the cylinder and make it a negative part. This will create the hole in the cube.

Slice the model to produce the cube with the center hole that we’ll test and use your drill bit to see how close the 8mm slicer hole came to your real world 8mm drill bit/pin gauge. Make X-Y adjustments print, repeat that process.

Default or no X-Y Hole compensation. 8mm hole example.

+2mm size example.

-2mm size example.

Now obviously we wouldn’t use adjustments like 2mm on an 8mm opening if we have access to the original CAD model but I used these extremes for the 8mm part so one can see the visual change after slicing.

Now by using your 8mm drill bit, you can change the X-Y hole compensation and keep reprinting until you get a snug fit around the hole. That’s when you can be sure that you calibrated your X-Y hole compensation as precisely as is possible within the margin of error of the filament and the laws of physics.

For outer dimensions, the process is obviously a lot easier because you only need the cube and a set of calipers. But I’d recommend calibrating both the X-Y Hole and X-Y contour on the same model to ensure that you have both parameters calibrated under the same conditions. This might help you with your situation of seeing larger deviations at gross scale.


Amazing, thank you for taking the time for such a comprehensive reply. I’ll give it a whirl over the coming days, and report back if I discover anything new/useful.

Just to report back, I haven’t done the above yet but have completely solved the issue by using the variable layer height function and dragging the layer height right down to a fine setting for the thread.