Also for ORD and whatever else we have. It is now more inherent in the setting and it gives a better indication of why the setting is disabled when you hover the 'i' in the setting visibility screen.
It turns out that even though it far exceeds the tolerances, the build plate clips have such high variation that the left clips also hit the nozzle sometimes.
Contributes to issue CURA-2625.
My previous fix was wrong; It only worked on what I wanted to fix (and broke the normal behavior). The current fix should fix both issues (merging works & merging groups works)
CURA-2932
I do not want to add the rebuild() call to the update function itself since there may be other changes to the build volume before we should rebuild (such as raft).
Contributes to issue CURA-2625.
Requires some multi-levelled trickery to get the event listeners working. This also assumes that the per-object stack decorator is not deleted at any point unless the mesh is deleted (which is currently a correct assumption). If that ever changes though, the harm is just that the update function is still listening on the deleted decorator's stack.
Contributes to issue CURA-2625.
Because the new object may use an extruder that wasn't used so far, and if you remove an object it may remove the need for a certain extruder.
Contributes to issue CURA-2625.
It's a bit counter-intuitive, so let me explain. The total build volume is defined as the rectangle around the union of the areas that all extruders can reach. The nozzle offset for the left extruder though is 0,0, so what should the border on the right side be? It should be 18 since there is a nozzle to the right of the left nozzle which has a relative x-offset of 18mm. Therefore we need to compute the relative offsets with each of the other nozzles and create sort of a bounding box around it, and the distance to the edge of that bounding box is the unreachable border on each of the sides.
Contributes to issue CURA-2625.
These disallowed areas are only at nozzle-height, not at head-height. They therefore won't move along with the nozzle offset.
Contributes to issue CURA-2625.
These clips were offset in the measurements because of the problem with the right nozzle not lifting high enough. This undoes that change.
Contributes to issue CURA-2625.
It turns out that the right nozzle, if lifted, can still hit the clips in very rare cases. But the left nozzle, if the right nozzle is down, will not hit the clips. So the right clips are now part of the static areas just like the switching bay and camera, but the left clips are not.
Contributes to issue CURA-2625.
Also the old line obtained brim_line_count from the global stack, while it is settable_per_extruder!
Also we now assume selecting a brim means you want to print it.
I don't think having a brim line count of zero meant that you wouldnt get a brim; the minimal brim length also plays a role...
In single extrusion, the machine_nozzle_offset_x and machine_nozzle_offset_y were not defined in the used extruder stacks, because the used extruder stack is the global stack.
Contributes to issue CURA-2625.