Long standing slicing bug, with example model to try

Many users have reported unexplainable rims added to their parts, like when the solid bottom changed to just walls, when there is openings and so on.
Nothing ever resulted in a working solution and so far I have not found anything from the support addressing the cause.

I stated several times in the past that a perimeter poking out by half a millimetre or more in just very limited layers can’t be caused by extrusion or other settings issues.
Too fixed, too straight too defined for this.
Picked some models showing this issue in the same areas with consistency and checked the actual G-Code.
Sure enough the outer wall path for the affected layers was indeed different to the rest.
Contacted support about it but after a bit of back and forth there was no solution found and the problem once more played down to my settings being not optimal.

Problem was, for many months, that I simply could not make these flaws to show up in any slicing preview studio offers.
In the preview the model always looked flawless.
Last week I needed some pole mounts to go onto my tool wall.
Tried to get the pole in but no joy.
Despite all calibrations spot on this slotted hole for the pole always printed slightly smaller in ID than what it should.
Settings fine, model fine - so confusing…
Did the stupid thing to rule out it is not deformation or shrinking and printed the block with the hole but no slot to result in a perfect match with the right gap - Whiskey Tango Foxtrot ??!!

Redesigned the block, made the gap wider, changed the clamping part.
Success - the pipe went in as planned, half way…
And there it was, at a time I did not even try I got matching failure showing in the slicer.
A lower ID in the area where the screw is supposed to go in the block.
Clean model on the plate, added material in the slicing preview to match those often reported issues perfectly.
The problem does show up when printed with the hole vertical but not always (depending on the settings) when trying to print it horizontal.

Lathe light mount.3mf (125.0 KB)
Here is the 3MF file showing the problem for the first time ever (I think) within the slicer.


As you can see there is the shifted perimeter in the slicing preview and it prints exactly like that, ruining the part.
The model is perfectly clean in this area.
Here is the STL file for Justin: File.IO
Have not tried with the new Studio version that was just released but assume the error will happen there as well.

The issue is gone if you remove the X-Y hole compensation that is on the file (0.25mm). You aren’t using that as a way to add tolerance are you? Add that in the design.

1 Like

Or use a negative cylindrical modifier.

Lathe light mount Negative.3mf (140.4 KB)

1 Like

I did not try that, thanks.

Here is the thing though:
I design my parts to be accurate as often the printed model is just the start.
Means, while outer dimensions as such come out with less than 0.1mm of difference for larger models, the same is not true for holes.
I use the hole compensation to match the actual model as closely as possible.
Works perfectly fine for all else, just in this the combo of hole in hole created the same mess that often happens on outer walls of the straight kind.

The hole does not change, so the compensation should not affect it.
I see it as a bug if the slicer adds this much to a model to compensate for material shrinkage and such.
The idea was not to find a workaround like by using modifiers but JUST to highlight this slicing problem.
I used a different design in the end as this screw hole to secure the pipe caused too much damage on the pipe, when for a clamping style instead.
The exact same problem happens with straight walls if there is a hole or such involved, just that here the problem is NOT showing in the slicer preview!

Thanks again for pointing to the hole compensation!
I went through my scrap box and found a few other models that suffered this added perimeter problem.
The print files I could still find for them HAD and matching compensation factor applied, at least some of them, a few had no factor applied as they were only ever printed in PLA.
For the later the issues is also NOT as direct and straight as in the above example, for those it seems more a mix of flow compensation and acceleration settings.

Let’s say these perfectly increased perimeters are caused by the hole compensation as you confirmed with my model.
It would then still be a bug IMHO because both ends of the hole print as intended and come out with a diameter to match my tight tolerance expectations.
The slicer however interprets the area with the screw hole to be NOT part of the big hole.
Making it just a curved surface with a fixed diameter that won’t require compensation.
The result of this makes no sense as it has a negative impact on the wall of the hole.
I tried another useless workaround:
Left just a 0.15mm wall where the two holes meet and it shows up perfectly fine in the slicer.

I agree that not using the hole compensation to instead applied any required corrections to the model would be a fix.
But I need to print things often in different materials and that would mean having to create models based on material properties, which for me is not an option as some parts later will be machine based on the actual model - just far too much work.

I tried that in the past for some models but it is not a solution, it is a workaround that costs time I usually don’t have.
I have a resin printer where models come out as planned and two other FDM printers running on other slicers that also have no issues printing such models without sudden changes in the perimeters.

As said, this problem is not limited to the model I uploaded.
It happens for straight walls as well and I see it as a bug that should be fixed rather than addressed with a workaround.
Imagine I do change my models to get around those issues and in a few weeks or months Bambu comes with a fix - I would have to start from scratch again LOL
A hole that isn’t a complete hole in an area should at least get some option to define in the slicer which area if any should be compensated or if walls with a hole in them should have the same compensation applied for the hole area.
Interpretation in the slicer causes this as it is unable to know whether or not the big hole has greater importance than the small hole interfering with the wall.
Just my five cents worth though…
You fix works fine for a one off but not if you have to print a lot of parts often…

I get you. It’s definitely the secondary hole and seems like a bug but a complex one that will only be resolved if possible and when someone details the problem in a concise manner.

Think of it this way, layer by layer. Where the secondary hole exists there is no ‘hole’. And I’m assuming a hole is calculated this way, layer by layer, could be a bad assumption, but if it were simply calculated like ‘hole exists on bottom + hole exists on top so it must exist to the same extent all the way through’ there wouldn’t be such an issue occurring imo.

Good one indeed.
And spot on.
You can’t have chicken that lays eggs and has ham on the back, so the slicer can’t do the impossible either.
Tried to check what the differences between the working and the Bambu slicer could be but did not really get anywhere as too many factors play together here.
My days of creating my own custom Marlin days a bit far behind and I have time to catch up.

Instead of going through code I went through some models instead.
Quick and simple one done in Sketchup (yes I know, but I am old school).
They confirmed the hole compensation clearly is the culprit here.
But also that in some cases it affect things that are not holes by my definition.
Like where there is a straight opening in a straight wall.
Some models only show slight extrusion issues while other have the same increased perimeters as the model in the first post.
Strange thing is that in the slicer preview these problems are not visible.
For example the usual box problem.
The box itself could be seen by the slicer as a big square hole that needs compensating.
But it also has to consider the wall thickness.
Possible confusion could be that then these straight increases basically offset the entire wall in this layer section.
To me though it does not make any sense why the hole compensation that is meant to fix inner and usually round holes applies to holes created by straight walls.

Until Bambu might be able to provide a fix for the hole problem, what could a possible and feasible workaround be?
I mean of course one that won’t involve having to modify the original 3D file to compensate…

That question gave me some texts to go through my search engine provided me with.
Turns out that holes and such are indeed handled quite differently depending on what type of printer and slicer is used.
Bambu does know arcs and claims their slicer can handle them properly.
Thing is that an arc can still be defined in an STL file as just a bunch of straight lines.
The hard work of the slicer if the differentiate between true arcs that are complete and those that are incomplete.
Some slicers interpret an incomplete arc still as part of a circle or in slicing terms a hole that is round.
Other slicers see this section as a partial arc.
What’s the difference?
None at first as both are originating from the same closed arc.
It becomes a difference for the slicer once it has to consider the layer change and speed changes for the start and end of the loop.
If the slicer then also uses a hole compensation, rather than an arc compensation the chaos is complete.
Only the later ensures that the inner or outer diameter is accurate in all cases.
The former uses two different ways to compensate, resulting in our perimeter problem.

Problem with a workaround is that in Studio the arc fitting function is for the movement only - providing a more circle like outcome than straight lines.
It won’t turn an incomplete arc into a circle for the purpose of dimensional compensation :frowning:
Maybe, just maybe, the solution would be if Bambu would add a tick box or such to include incomplete arcs for the purpose of hole compensation…
More filaments ends on the outer most perimeter for inner walls of holes than for outer walls.
The later is easy to fix if need be but those inner holes…
What I totally fail to comprehend though is this:


Same model, same setting, same all.
Only difference is that the top one is printed with the big hole horizontal while in the bottom image it prints vertical.
Clearly the hole compensation works layer based only and while not as evident in the pic - those few lines around the horizontal hole are NOT protruding out the same 0.25mm…
There should be a way to tell the slicer to apply the same to the entire wall of a hole rather than just layer based…
I mean: Why is there is a difference in the results her just by changing the orientation of the part ?
Hole is hole or not ? :wink:

Are you sure the large bore doesn’t have a slight taper to it? Like a draft angle?

1 Like

Is there a reason you do not want to attempt this in the 3d design program? I would add parameters in the appropriate places giving me full control over holes I want to possibly compensate.

But if you’re starting with some non-portable design like an STL then I think @JonRaymond has a great suggestion to simply use negative modifiers.

You could also try orca slicer to see if it gives different results but I suspect the complexity of the hole is going to give problems with automated solutions in the slicer so it might be best to just do one of the other solutions and move on with life.

1 Like

I think this phenomenon is easy to explain: in those layers with the vertical hole, hole compensation doesn’t apply because there is no inside hole. It is one contiguous wall forming both the inside and the outside. So in that layer, there are only outside walls.

I have touted elsewhere that the way, most slicers currently implement hole compensation is quite useless. First reason is the problem you stumbled into, second problem is that holes of different size usually would need a different compensation value.

Instead of enlarging holes, the algorithm should look at the curvature of all walls. If they are convex, no need to do anything. If they are concave, increasingly set them back the narrower the curvature.
That would compensate all, closed holes, open holes, outside walls,… and I think this is exactly what should happen.

I have decided, that I don’t use hole compensation at all for those reasons and instead have to modify my design until a better implementation comes around the corner.

I like that idea.

Back in my early days of printing the problem was only fixable by changing the actual model.
Hole compensation in the current form, at least for the mainstream slicers is only ever good in ideal use cases while in all others it creates nightmares.

Simplify3D was once the best there is but those times are over.
Let’s just wait another year or so and see if some nice contributor provides a proper compensation function that works for all cases.
Or that our slicers change from their current ways to focus on what actually happens to the extruded filament o provide the best possible accuracy.