Skip to content

Conversation

@rinqu-eu
Copy link

While filament shrinks the same in X and Y directions, we can also use this feature to dial in the dimentional accuracy.

For example, on my BBL A1 when using PLA I'd get 149.22/149.85 on a 150mm calibration piece.
Scaling the model up by 100.5 in X and 100.07 in Y allows me to get sub 0.1mm accuracy.

With this change, one could set PLA shrinage to 99.50% in X and 99.93% in Y and eliminate the need to scale the model.

@ianalexis
Copy link
Contributor

ianalexis commented Oct 17, 2025

TL:DR;
This should be a Y deviation over X in the machine profile.

This is a long-standing debate (#6562 and #10695)
The contraction of a material does not change per axis in its horizontal positions (only vertically, as this is influenced by how the layers are deposited).
Contraction is specific to the material and its properties so, if you have measurement differences between the two axes, it is more likely to be due to temperature fluctuations in the bed, pressure advance, the travel and how it affects material deposition, the shape of the part, how you position the measuring element (caliper or whatever you use), or poor calibration of your printer's stepper motors.
This will not be consistent for all parts or materials.

If the problem is with the printer and it is really a matter of percentages (as could be the case with motor calibration issues), I don't think that tuning each material is the best solution.

Although a difference of less than 0.5% seems negligible to me in the world of 3D printing.

But after so many discussions, there is something I can think of that we can do.
I think something similar but different could be done for your case.

In this case, perhaps you could consider a similar adjustment in the machine settings, leaving the material fluctuation available, as it would add to your printer's error. To simplify the situation, I would set it as a single value that matches the other.
Perhaps an X/Y % deviation, or Y Deviation (over X).

In your case, it could be something like:

  • Material 99.48% (based on 149.22/150)
  • Y Deviation: 100.42% (because it would first be adjusted by 99.48%, which is common for the material, and the 0.42% axis difference would have to be compensated for).

How would it be calibrated?
The shrinkage of the material is measured as usual by printing one or more cubes of different sizes and made of the same material, then measuring the percentage of shrinkage.
The Y deviation of the machine would be measured using different cubes made of different materials, and the difference between X and Y would be measured.

This way, your materials would maintain their specific shrinkage and you would correct your printer's error for all materials.

@SoftFever
Copy link
Owner

I suspect the discrepancy between the X and Y axes is caused by skewness in the XY gantry. Could you try performing a skew correction to see if that resolves the issue?

@boromyr
Copy link
Contributor

boromyr commented Oct 25, 2025

Thank you for this contribution; I myself suggested this change some time ago.
As I had already discussed in the aforementioned thread, this feature offers greater flexibility than the XY shrink and can be used for dimensional calibration of models. When steps are modified at the firmware level the extruder does not take into account the movements of the other motors; consequently you will get wider or narrower lines after changing the steps in the firmware, which means the flow ratio must be recalibrated after the dimensional calibration. If it does not work on the first iteration, this procedure should be repeated.
Having, in effect, a default X, Y and Z scale for each type of filament gives everyone maximum flexibility.

@rinqu-eu There are several merge conflicts in this PR with the latest Orca commits; these did not appear in the previous days.

@ianalexis
Copy link
Contributor

When steps are modified at the firmware level the extruder does not take into account the movements of the other motors; consequently you will get wider or narrower lines after changing the steps in the firmware

This is not filament shrinkage, is missconfigured firmware.
That's why I think a change at the machine level is a better alternative than a change at the filament level, since it has nothing to do with the filament.

@boromyr
Copy link
Contributor

boromyr commented Oct 25, 2025

It could be moved to the printer settings instead of the filament settings; it would effectively act as a pre-scale for each model for that printer profile. The shrinkage remains of the XY type as it is currently at the filament level, which in turn will multiply the printer’s overall scale factor.

In any case, both solutions to compensate the printer, whether from the firmware or the slicer, are valid and can be preferred depending on the user. For example, the firmware-level modification you pursue in your thesis is the best method when you have multiple printers of the same model: each printer has its own compensation. My argument for using the slicer would be much more suitable for someone buying their first 3D printer (or more precisely an FDM CNC) who ends up with rectangular cubes and elliptical circles, in addition to the previously listed advantages such as not requiring recalibration of the flow, belt tensioning, axis realignment, etc. etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants