SoftFever / OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)
https://discord.gg/P4VE9UY9gJ
GNU Affero General Public License v3.0
5.89k stars 670 forks source link

Limit variable layer height calculation and displaying precision to t… #5795

Open vovodroid opened 1 week ago

vovodroid commented 1 week ago

Currently in variable layer height slider heights are shown with six digits precision:

image

It has no meaning as Z height is rounded to three digits anyway (and to two digits in slider):

image

This PR rounds variable height calculation and displaying to three digits:

image

igiannakas commented 1 week ago

Personally, as you've already opened the code for this, I would think that rounding the variable layer height to 2 decimals may be preferred as most printers cannot output a 3 digit precision on the z (or any other axis for that matter) in a meaningful way.

For example a Voron 2.4 per full step of the z axis outputs 0.04mm in Z movement per full step, and, assuming a fully precise 16 micro steps, it would output 0.0025mm per micro step. So a 0.001 move is not possible with the standard voron setup for example.

Using 64 micro steps a voron may be able to output a resolution of 0.000625 per micro step so a layer height change of 0.001mm would be 1.6 micro steps to execute which is not really attainable due to micro step drift.

So I'd recommend a 0.01 precision which is achievable with 4 micro steps on the standard config which can be theoretically output with some level of accuracy.

vovodroid commented 1 week ago

I use three digits to make it consistent with Prusa (https://github.com/prusa3d/PrusaSlicer/pull/10298). They took my implementation and limited it to three digits. I have nothing against 0.01.

igiannakas commented 1 week ago

Yeap agreed - but I don’t think prusas is right either. The mechanical accuracy of our printers can’t reproduce 3 digits with any meaningful precision. Maybe @SoftFever could chime in here too as I may be wrong :)

vovodroid commented 1 week ago

You are right, but for whatever reason g-code resolution is also rounded to 0.001, despite standard XY step is 0.0125

igiannakas commented 1 week ago

I thought that XY is quantized by the slicing tolerance value, so if you set 0.0125 there it would create quanta with this irrespective of decimal places 🤔